c#窗体应用程序实现软件开机自启,并可以通过路径控制ICT测试软件的打开和关闭。良品条码和不良品条码可以在本地文件夹中的txt文件中获取。当软件开启,定时器就在数据库扫描是否有设置的良品和不良品条码的当天测试记录(数据库ICT_test表中Barcode和Date项的记录),如果存在,lable状态栏变绿并提示“以点检,请进行ICT测试”。就可以通过c#软件开启按钮打开ICT测试软件,进其他条码的ICT测试。如果数据库中没有设置的良品和不良品条码的测试记录,点击软件启动按钮打开ICT测试时,label状态栏变红,并提示“请进行测试前点检”,然后就先进行设置条码的ICT测试,判断扫描到的条码是否为本地txt文件中设置的良品或不良品条码,如输入的条码不符合,label状态栏变红,并提示“条码错误”,如输入的条码正确并为txt文件中设置的良品条码,label状态栏变绿,并提示“请进行良品点检”,这时就可以通过软件启动按钮打开ICT测试软件,这时就将扫到的良品条码通过模拟键盘复制黏贴到ICT测试软件条码栏,进行ICT测试,测试完成后就提示“良品点检完成”,并将测试记录上传到数据库
时间: 2023-10-10 15:08:39 浏览: 467
。首先,我们需要在窗体应用程序的启动事件中添加自启代码。可以使用Registry类来实现,如下所示:
```csharp
RegistryKey rk = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rk.SetValue("软件名称", Application.ExecutablePath);
```
这样就可以实现软件开机自启了。
接下来,我们需要在窗体中添加一个定时器,用来定时扫描数据库中是否有设置的良品和不良品条码的当天测试记录。可以使用ADO.NET连接数据库,使用SqlDataAdapter和DataSet来获取数据。代码如下所示:
```csharp
private void timer1_Tick(object sender, EventArgs e)
{
string connectionString = "Data Source=数据库地址;Initial Catalog=数据库名称;Persist Security Info=True;User ID=用户名;Password=密码";
string query = "SELECT * FROM ICT_test WHERE Barcode IN ('良品条码1', '良品条码2', '不良品条码1', '不良品条码2') AND Date = @Today";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(query, connection);
adapter.SelectCommand.Parameters.AddWithValue("@Today", DateTime.Today);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
if (dataset.Tables[0].Rows.Count > 0)
{
label1.Text = "以点检,请进行ICT测试";
label1.ForeColor = Color.Green;
}
else
{
label1.Text = "请进行测试前点检";
label1.ForeColor = Color.Red;
}
}
}
```
当定时器触发事件时,就会根据设置的良品和不良品条码以及当天日期在数据库中查找是否有记录。如果有记录,就将状态栏标签的文本和颜色改为绿色并提示“以点检,请进行ICT测试”,否则就将状态栏标签的文本和颜色改为红色并提示“请进行测试前点检”。
接下来,我们需要实现软件启动按钮的功能。当用户点击该按钮时,就需要判断当前状态栏标签的颜色,如果是绿色,就可以直接打开ICT测试软件;否则,就需要先进行设置条码的ICT测试,并判断扫描到的条码是否为本地txt文件中设置的良品或不良品条码。代码如下所示:
```csharp
private void button1_Click(object sender, EventArgs e)
{
if (label1.ForeColor == Color.Green)
{
// 直接打开ICT测试软件
Process.Start("ICT测试软件路径");
}
else
{
// 设置条码的ICT测试
string barcode = Microsoft.VisualBasic.Interaction.InputBox("请扫描测试条码", "设置条码的ICT测试");
bool isGoodBarcode = false;
string[] goodBarcodes = File.ReadAllLines("良品条码文件路径");
foreach (string goodBarcode in goodBarcodes)
{
if (barcode == goodBarcode)
{
isGoodBarcode = true;
break;
}
}
if (isGoodBarcode)
{
label1.Text = "请进行良品点检";
label1.ForeColor = Color.Green;
// 将扫到的条码通过模拟键盘复制黏贴到ICT测试软件条码栏
SendKeys.Send(barcode);
SendKeys.Send("{ENTER}");
}
else
{
label1.Text = "条码错误";
label1.ForeColor = Color.Red;
}
}
}
```
当按钮被点击后,就会根据当前状态栏标签的颜色来决定下一步的操作。如果是绿色,就直接打开ICT测试软件;否则,就需要先进行设置条码的ICT测试。在进行ICT测试前,需要将扫到的条码与本地txt文件中的良品条码进行匹配,如果匹配成功,就将状态栏标签的文本和颜色改为绿色并提示“请进行良品点检”,并使用SendKeys类将扫到的条码通过模拟键盘复制黏贴到ICT测试软件条码栏中。如果匹配不成功,就将状态栏标签的文本和颜色改为红色并提示“条码错误”。
最后,我们需要在ICT测试完成后将测试记录上传到数据库中。可以使用ADO.NET连接数据库,使用SqlCommand类来执行INSERT语句。代码如下所示:
```csharp
private void button2_Click(object sender, EventArgs e)
{
// 进行ICT测试,并将测试记录上传到数据库
string barcode = Microsoft.VisualBasic.Interaction.InputBox("请扫描测试条码", "ICT测试");
bool isGoodBarcode = false;
string[] goodBarcodes = File.ReadAllLines("良品条码文件路径");
foreach (string goodBarcode in goodBarcodes)
{
if (barcode == goodBarcode)
{
isGoodBarcode = true;
break;
}
}
if (isGoodBarcode)
{
// 进行ICT测试
// ...
// 将测试记录上传到数据库
string connectionString = "Data Source=数据库地址;Initial Catalog=数据库名称;Persist Security Info=True;User ID=用户名;Password=密码";
string query = "INSERT INTO ICT_test (Barcode, Date, Result) VALUES (@Barcode, @Date, @Result)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Barcode", barcode);
command.Parameters.AddWithValue("@Date", DateTime.Today);
command.Parameters.AddWithValue("@Result", "测试结果");
connection.Open();
command.ExecuteNonQuery();
}
label1.Text = "良品点检完成";
label1.ForeColor = Color.Green;
}
else
{
label1.Text = "条码错误";
label1.ForeColor = Color.Red;
}
}
```
当进行ICT测试后,就需要将测试记录上传到数据库中。可以使用INSERT语句将条码、日期和测试结果插入到ICT_test表中。插入完成后,就将状态栏标签的文本和颜色改为绿色并提示“良品点检完成”。如果扫描到的条码不是良品条码,就将状态栏标签的文本和颜色改为红色并提示“条码错误”。
阅读全文