if (File.ReadAllLines(goodBarcodeFile).Contains(barcode)) { // 良品条码 lb_test_state.Text = "请进行良品点检"; lb_test_state.BackColor = System.Drawing.Color.Green; // 在这里进行ICT测试 // ... // 检查是否有良品测试报告生成 if (Directory.GetFiles(@"D:\ICT_test result\", "*PASS.dcl").Any()) { // 良品测试完成 lb_test_state.Text = "良品点检完成"; lb_test_state.BackColor = System.Drawing.Color.Green;在以上代码基础上修改,当发现相应文件夹有相应点检报告产生,label状态栏立马做出相应变化
时间: 2024-01-12 10:02:59 浏览: 65
可以在代码中添加一个循环,不断检查指定文件夹中是否有相应的测试报告文件生成。当检测到文件时,即可更新 label 的状态。
具体代码如下:
```
while (true)
{
if (Directory.GetFiles(@"D:\ICT_test result\", "*PASS.dcl").Any())
{
// 良品测试完成
lb_test_state.Text = "良品点检完成";
lb_test_state.BackColor = System.Drawing.Color.Green;
break;
}
Thread.Sleep(1000); // 暂停 1 秒钟后再次检查
}
```
在这个示例中,我们使用了一个无限循环来不断检查文件夹中是否有相应文件生成。如果找到了相应文件,就更新 label 的状态,并退出循环。为了防止循环过于频繁地运行,我们在每次检查后暂停了 1 秒钟。
相关问题
if (count == 0) { // 条码错误 lb_test_state.BackColor = Color.Red; lb_test_state.Text = "条码错误 "; { // 良品或不良品点检 if (goodBarcodeList.Contains(barcode)) { lb_test_state.BackColor = Color.Yellow; lb_test_state.Text = "请进行良品点检"; } else if (badBarcodeList.Contains(barcode)) { lb_test_state.BackColor = Color.Yellow; lb_test_state.Text = "请进行不良品点检"; }在此代码基础上修改,如果实时监控到文件夹有良品点检报告生成(良品条码的测试报告txt文件),则label状态栏变绿,并提示“良品点检完成”。如果实时监控到文件夹有不良品点检报告生成(不良品条码的测试报告txt文件,同良品点检报告在一个文件夹,只是文件后缀不同),则label状态栏变绿,并提示“不良品点检完成”。并将测试数据更新到数据库。当在数据库发现有这两条测试记录,表面点检完成。之后扫描到的条码不再受限制,不再提示条码错误
在原有代码基础上,可以添加一个文件夹监控功能,通过FileSystemWatcher类实现。具体步骤如下:
1. 在窗体加载事件中创建一个FileSystemWatcher实例,并指定需要监控的文件夹路径,以及需要监控的文件类型(良品点检报告和不良品点检报告)。
```
private void Form1_Load(object sender, EventArgs e)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "文件夹路径";
watcher.Filter = "*.txt";
watcher.Created += new FileSystemEventHandler(OnFileCreated);
watcher.EnableRaisingEvents = true;
}
```
2. 实现OnFileCreated方法,在该方法中判断文件类型,如果是良品点检报告,则更新label状态栏,并提示“良品点检完成”;如果是不良品点检报告,则更新label状态栏,并提示“不良品点检完成”。在更新label状态栏之后,将测试数据更新到数据库中。
```
private void OnFileCreated(object source, FileSystemEventArgs e)
{
if (e.Name.StartsWith("goodBarcode_")) // 如果是良品点检报告
{
lb_test_state.BackColor = Color.Green;
lb_test_state.Text = "良品点检完成";
// 更新数据库
}
else if (e.Name.StartsWith("badBarcode_")) // 如果是不良品点检报告
{
lb_test_state.BackColor = Color.Green;
lb_test_state.Text = "不良品点检完成";
// 更新数据库
}
}
```
3. 在更新数据库之后,将goodBarcodeList和badBarcodeList中对应的条码移除,这样就可以扫描到这两种条码了。
```
goodBarcodeList.Remove(barcode);
badBarcodeList.Remove(barcode);
```
if (e.KeyCode == Keys.Enter) { // 判断条码是否为设置的良品或不良品条码 string barcode = txt_barcode.Text.Trim(); string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = db.accdb;Jet OLEDB:Database Password = @maruhi"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); OleDbCommand command = new OleDbCommand("SELECT COUNT(*) FROM ICT_test WHERE Date=@date AND Barcode=@barcode AND Result='OK'", connection); command.Parameters.AddWithValue("@date", DateTime.Now.ToString("yyyy-MM-dd")); command.Parameters.AddWithValue("@barcode", barcode); int count = (int)command.ExecuteScalar(); if (count == 0) { // 条码错误 lb_test_state.BackColor = Color.Red; lb_test_state.Text = "条码错误 "; { // 良品或不良品点检 if (goodBarcodeList.Contains(barcode)) { lb_test_state.BackColor = Color.Yellow; lb_test_state.Text = "请进行良品点检"; SendBarcode(); } else if (badBarcodeList.Contains(barcode)) { lb_test_state.BackColor = Color.Yellow; lb_test_state.Text = "请进行不良品点检"; SendBarcode(); } } } }在此基础上修改,当良品和不良品测试结束后,条码不再受约束,无论输入什么条码,label状态栏始终是黄色,并提示,“已点检,请进行ICT测试”,并且所有条码都可以发送到ICT测试软件
根据您的描述,您需要在良品和不良品测试结束后,解除对条码的限制,使得无论输入什么条码,都可以发送到ICT测试软件并提示“已点检,请进行ICT测试”,而且label状态栏始终是黄色。那么您可以参考下面的代码进行修改:
```
if (e.KeyCode == Keys.Enter)
{
// 判断条码是否为设置的良品或不良品条码
string barcode = txt_barcode.Text.Trim();
string connectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = db.accdb;Jet OLEDB:Database Password = @maruhi";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
OleDbCommand command = new OleDbCommand("SELECT COUNT(*) FROM ICT_test WHERE Date=@date AND Barcode=@barcode AND Result='OK'", connection);
command.Parameters.AddWithValue("@date", DateTime.Now.ToString("yyyy-MM-dd"));
command.Parameters.AddWithValue("@barcode", barcode);
int count = (int)command.ExecuteScalar();
if (count == 0)
{
// 条码错误
lb_test_state.BackColor = Color.Red;
lb_test_state.Text = "条码错误 ";
// 良品或不良品点检
if (goodBarcodeList.Contains(barcode))
{
lb_test_state.BackColor = Color.Yellow;
lb_test_state.Text = "请进行良品点检";
SendBarcode();
}
else if (badBarcodeList.Contains(barcode))
{
lb_test_state.BackColor = Color.Yellow;
lb_test_state.Text = "请进行不良品点检";
SendBarcode();
}
else
{
lb_test_state.BackColor = Color.Yellow;
lb_test_state.Text = "已点检,请进行ICT测试";
SendBarcode();
}
}
else
{
lb_test_state.BackColor = Color.Green;
lb_test_state.Text = "测试通过";
SendBarcode();
}
}
}
```
在代码中,我们加入了一个`else`语句,当条码不是良品和不良品条码时,就会执行这个`else`语句,将label状态栏设为黄色,并提示“已点检,请进行ICT测试”,然后将条码发送到ICT测试软件。这样,无论输入什么条码,都可以发送到ICT测试软件并提示“已点检,请进行ICT测试”,而且label状态栏始终是黄色。
阅读全文