c#窗体应用程序实现当软件开启,就在数据库扫描是否有设置的良品和不良品条码的当天ICT测试记录(ICT_test表中Barcode,Date,Result),良品和不良品条码在本地文件夹txt文件中获取。如果数据库中有良品和不良品测试记录存在,lable状态栏变绿并提示“已点检,请进行ICT测试”,然后进行别的条码的ICT测试。就将扫到的条码通过模拟键盘发送到ICT测试软件进行测试。如果没有,别的条码发送时会被拦截,label状态栏变红,并提示“请进行测试前点检”,然后就先进行设置条码的ICT测试,判断扫描到txt_Barcode中条码是否为获取到设置的良品或不良品条码,如输入的条码不符合,label状态栏变红,并提示“条码错误”,如输入的条码正确并为设置的良品条码,label状态栏变绿,并提示“请进行良品点检”,就将良品条码发送到ICT测试软件进行ICT测试,当发现某一文件夹中有良品测试报告生成,表示良品测试完成,测试完成后就提示“良品点检完成”。如扫描的是设置的不良品条码,则label状态栏变绿,并提示“请进行不良品点检”,进行ICT测试。当发现某一文件夹中有不良品测试报告生成,表示不良品测试完成。(所有条码先扫描到c#窗体软件txt_barcode中,在通过模拟键盘定位发送到ICT测试软件条码框中,然后进行ICT测试)代码实现
时间: 2023-11-27 21:06:19 浏览: 342
一个基于C#实现的自动生成barcodes条码及验证程序代码
4星 · 用户满意度95%
以下是实现上述功能的示例代码:
```
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ICTTestApplication
{
public partial class MainForm : Form
{
private string[] goodBarcodes; //存储良品条码的数组
private string[] badBarcodes; //存储不良品条码的数组
private bool isInspected = false; //是否已点检的标识
private bool isTesting = false; //是否正在测试的标识
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
//从本地文件夹中读取良品和不良品条码
goodBarcodes = File.ReadAllLines("good_barcodes.txt");
badBarcodes = File.ReadAllLines("bad_barcodes.txt");
//启动时检查数据库中是否有当天的ICT测试记录
if (CheckICTRecords())
{
//如果有记录,则标识已点检并提示进行ICT测试
isInspected = true;
statusLabel.ForeColor = Color.Green;
statusLabel.Text = "已点检,请进行ICT测试";
}
else
{
//如果没有记录,则标识未点检并提示进行点检
isInspected = false;
statusLabel.ForeColor = Color.Red;
statusLabel.Text = "请进行测试前点检";
}
}
private bool CheckICTRecords()
{
//连接数据库,查询当天的ICT测试记录
string connectionString = "your_connection_string_here";
string query = "SELECT * FROM ICT_test WHERE Date = '" + DateTime.Now.ToString("yyyy-MM-dd") + "'";
DataTable dt = new DataTable();
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(query, connection))
using (var adapter = new SqlDataAdapter(command))
{
adapter.Fill(dt);
}
//判断是否有记录
if (dt.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
private void barcodeTextBox_KeyDown(object sender, KeyEventArgs e)
{
//按下回车键时发送条码进行测试
if (e.KeyCode == Keys.Enter)
{
e.Handled = true; //防止系统发出响铃声
string barcode = barcodeTextBox.Text.Trim();
//如果未点检,则进行点检
if (!isInspected)
{
if (goodBarcodes.Contains(barcode))
{
//如果是良品条码,则标识已点检并提示进行良品点检
isInspected = true;
statusLabel.ForeColor = Color.Green;
statusLabel.Text = "请进行良品点检";
}
else if (badBarcodes.Contains(barcode))
{
//如果是不良品条码,则标识已点检并提示进行不良品点检
isInspected = true;
statusLabel.ForeColor = Color.Green;
statusLabel.Text = "请进行不良品点检";
}
else
{
//如果是错误的条码,则提示条码错误
statusLabel.ForeColor = Color.Red;
statusLabel.Text = "条码错误";
}
}
//如果已点检,则进行测试
else
{
if (isTesting)
{
//如果正在测试,则忽略条码输入
return;
}
if (goodBarcodes.Contains(barcode))
{
//如果是良品条码,则发送至ICT测试软件进行测试
SendBarcodeToICT(barcode);
isTesting = true;
}
else if (badBarcodes.Contains(barcode))
{
//如果是不良品条码,则发送至ICT测试软件进行测试
SendBarcodeToICT(barcode);
isTesting = true;
}
else
{
//如果是错误的条码,则提示条码错误
statusLabel.ForeColor = Color.Red;
statusLabel.Text = "条码错误";
}
}
}
}
private void SendBarcodeToICT(string barcode)
{
//将条码发送至ICT测试软件进行测试
SendKeys.Send(barcode);
}
private void timer_Tick(object sender, EventArgs e)
{
//定时检查ICT测试结果
if (isTesting)
{
//如果正在测试,则检查测试结果
if (CheckTestResult())
{
//如果测试完成,则标识测试完成并提示
isTesting = false;
statusLabel.ForeColor = Color.Green;
statusLabel.Text = "良品点检完成";
}
}
}
private bool CheckTestResult()
{
//检查测试结果是否已生成
//TODO: 实现检查测试结果的代码
return true;
}
}
}
```
以上代码中,`MainForm_Load` 方法在窗体启动时检查数据库中是否有当天的ICT测试记录,并根据结果设置状态栏的颜色和文本。`barcodeTextBox_KeyDown` 方法在用户输入条码后进行处理,如果未点检则进行点检,如果已点检则发送条码至ICT测试软件进行测试。`SendBarcodeToICT` 方法将条码发送至ICT测试软件进行测试。`timer_Tick` 方法定时检查测试结果是否已生成。`CheckICTRecords` 方法用于检查数据库中是否有当天的ICT测试记录,`CheckTestResult` 方法用于检查测试结果是否已生成。需要根据实际情况进行具体的实现。
阅读全文