c#窗体应用程序实现当软件开启,定时器就在数据库扫描是否有设置的良品和不良品条码的当天ICT测试记录(ICT_test表中Barcode,Date,Result)),良品和不良品条码在本地文件夹txt文件中获取。如果数据库存在当天良品和不良品ICT测试记录,lable状态栏变绿并提示“已点检,请进行ICT测试”进行别的条码的ICT测试。如果没有测试记录,label状态栏变红,并提示“请进行测试前点检”,然后就先进行设置条码的ICT测试,判断扫描到txt_Barcode条码是否为获取到txt文件中设置的良品或不良品条码,如输入的条码都不符合,label状态栏变红,并提示“条码错误”,如输入的条码正确并为设置的良品条码,label状态栏变绿,并提升“请进行良品点检”,这时就将扫到的良品条码通过模拟键盘复制黏贴到ICT条码栏,进行ICT测试,测试完成后就提示“良品点检完成”。如扫描的是设置的不良品条码,则label状态栏变绿,并提示“请进行不良品点检”,这时就将扫描到的不良品条码通过模拟键盘复制黏贴到ICT条码栏,进行ICT测试。当扫描到某一文件夹中生成这两个条码的测试报告,label状态栏变绿,并提示“点检完成”,并将文件名中的测试信息(条码,时间,产品(良品、不良品),结果)写入DateGridView组件中
时间: 2023-11-09 09:07:39 浏览: 108
首先,你需要在窗体中添加一个定时器控件,并设置其时间间隔。然后,在定时器的 Tick 事件中,编写代码来扫描数据库和本地文件夹。
以下是实现的示例代码:
```csharp
private void timer1_Tick(object sender, EventArgs e)
{
// 扫描数据库中当天的良品和不良品ICT测试记录
string today = DateTime.Now.ToString("yyyy-MM-dd");
string sql = "SELECT Barcode, Result FROM ICT_test WHERE Date = '" + today + "'";
DataTable dt = DBHelper.ExecuteDataTable(sql);
// 获取本地文件夹中的良品和不良品条码
string filePath = @"C:\Barcode.txt";
List<string> goodBarcodes = new List<string>();
List<string> badBarcodes = new List<string>();
if (File.Exists(filePath))
{
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
if (line.StartsWith("G"))
{
goodBarcodes.Add(line);
}
else if (line.StartsWith("B"))
{
badBarcodes.Add(line);
}
}
}
// 判断是否存在当天的ICT测试记录
if (dt.Rows.Count > 0)
{
lblStatus.BackColor = Color.Green;
lblStatus.Text = "已点检,请进行ICT测试";
}
else
{
lblStatus.BackColor = Color.Red;
lblStatus.Text = "请进行测试前点检";
}
// 设置条码的ICT测试
string barcode = txtBarcode.Text.Trim();
if (goodBarcodes.Contains(barcode))
{
lblStatus.BackColor = Color.Green;
lblStatus.Text = "请进行良品点检";
// 模拟键盘复制黏贴到ICT条码栏
SendKeys.Send("^c");
SendKeys.Send("{TAB}");
SendKeys.Send("^v");
SendKeys.Send("{ENTER}");
// 更新DataGridView
dataGridView1.Rows.Add(barcode, today, "良品", "合格");
}
else if (badBarcodes.Contains(barcode))
{
lblStatus.BackColor = Color.Green;
lblStatus.Text = "请进行不良品点检";
// 模拟键盘复制黏贴到ICT条码栏
SendKeys.Send("^c");
SendKeys.Send("{TAB}");
SendKeys.Send("^v");
SendKeys.Send("{ENTER}");
// 更新DataGridView
dataGridView1.Rows.Add(barcode, today, "不良品", "不合格");
}
else
{
lblStatus.BackColor = Color.Red;
lblStatus.Text = "条码错误";
}
}
```
在实现上述功能时,需要注意以下几点:
1. 在扫描数据库时,应使用参数化查询,以防止 SQL 注入攻击。
2. 在获取本地文件夹中的条码时,应先判断文件是否存在,以防止文件不存在的异常。
3. 在更新 DataGridView 时,应先清空原有数据,再添加新的数据行。
阅读全文