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测试),ICT测试软件自行单独开启代码实现
时间: 2023-11-09 12:06:42 浏览: 96
这是一个比较复杂的需求,需要涉及到数据库操作、文件操作和模拟键盘操作等多个方面。以下是一个简单的实现思路,供参考:
1. 程序启动时,先扫描数据库ICT_test表中是否有设置的良品和不良品条码的当天测试记录。如果有,将label状态栏变绿,并提示“已点检,请进行ICT测试”。如果没有,将label状态栏变红,并提示“请进行测试前点检”。
```csharp
string connectionString = "Data Source=yourServerName;Initial Catalog=yourDatabaseName;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string today = DateTime.Now.ToString("yyyy-MM-dd");
string query = "SELECT Barcode FROM ICT_test WHERE Date = @Date AND Result IN ('OK', 'NG')";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Date", today);
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
labelStatus.ForeColor = Color.Green;
labelStatus.Text = "已点检,请进行ICT测试";
}
else
{
labelStatus.ForeColor = Color.Red;
labelStatus.Text = "请进行测试前点检";
}
}
```
2. 程序监听键盘输入,将所有扫描到的条码存储到txt_barcode文件中。
```csharp
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string barcode = txtBarcode.Text.Trim();
if (!string.IsNullOrEmpty(barcode))
{
using (StreamWriter writer = new StreamWriter("txt_barcode.txt", true))
{
writer.WriteLine(barcode);
}
txtBarcode.Text = string.Empty;
}
}
}
```
3. 当扫描到的条码不是良品或不良品条码时,将label状态栏变红,并提示“条码错误”。
```csharp
private void CheckBarcode(string barcode)
{
string[] goodBarcodes = File.ReadAllLines("good_barcodes.txt");
string[] badBarcodes = File.ReadAllLines("bad_barcodes.txt");
if (!goodBarcodes.Contains(barcode) && !badBarcodes.Contains(barcode))
{
labelStatus.ForeColor = Color.Red;
labelStatus.Text = "条码错误";
}
else
{
// TODO: 进行ICT测试
}
}
```
4. 当扫描到的条码是良品条码时,将label状态栏变绿,并提示“请进行良品点检”。将该条码发送到ICT测试软件进行测试。
```csharp
private void DoGoodBarcodeTest(string barcode)
{
labelStatus.ForeColor = Color.Green;
labelStatus.Text = "请进行良品点检";
SendBarcodeToICTSoftware(barcode);
}
```
5. 等待ICT测试软件测试完成后,监测某一文件夹中是否有良品测试报告生成。如果有,将label状态栏变绿,并提示“良品点检完成”。
```csharp
private void CheckGoodTestResult()
{
string[] files = Directory.GetFiles("good_test_result");
if (files.Length > 0)
{
labelStatus.ForeColor = Color.Green;
labelStatus.Text = "良品点检完成";
// TODO: 处理测试结果
}
else
{
// TODO: 定时监测测试结果
}
}
```
6. 当扫描到的条码是不良品条码时,将label状态栏变绿,并提示“请进行不良品点检”。将该条码发送到ICT测试软件进行测试。
```csharp
private void DoBadBarcodeTest(string barcode)
{
labelStatus.ForeColor = Color.Green;
labelStatus.Text = "请进行不良品点检";
SendBarcodeToICTSoftware(barcode);
}
```
7. 等待ICT测试软件测试完成后,监测某一文件夹中是否有不良品测试报告生成。如果有,将label状态栏变绿,并提示“不良品点检完成”。
```csharp
private void CheckBadTestResult()
{
string[] files = Directory.GetFiles("bad_test_result");
if (files.Length > 0)
{
labelStatus.ForeColor = Color.Green;
labelStatus.Text = "不良品点检完成";
// TODO: 处理测试结果
}
else
{
// TODO: 定时监测测试结果
}
}
```
8. 如果在程序运行期间扫描到的条码不是设置的良品或不良品条码,则会被拦截,无法发送到ICT测试软件进行测试。
```csharp
private void SendBarcodeToICTSoftware(string barcode)
{
string[] goodBarcodes = File.ReadAllLines("good_barcodes.txt");
string[] badBarcodes = File.ReadAllLines("bad_barcodes.txt");
if (goodBarcodes.Contains(barcode))
{
// TODO: 发送良品条码到ICT测试软件
}
else if (badBarcodes.Contains(barcode))
{
// TODO: 发送不良品条码到ICT测试软件
}
else
{
// TODO: 拦截无效条码
}
}
```
需要注意的是,以上实现思路只是一个简单的参考,实际实现中还需要考虑更多的细节和异常情况。同时,涉及到数据库和文件操作时,需要确保程序具有足够的权限和安全性。
阅读全文