c#窗体应用程序实现软件开机自启,并可以通过路径控制ICT测试软件的打开和关闭。窗体得生成可以设置良品和不良品条码的组件。当软件开启,定时器就在数据库扫描是否有设置的良品和不良品条码的当天测试记录,如果存在,就可以通过c#软件开启ICT测试软件,进行别的条码的ICT测试。如果没有,就先进行设置条码的ICT测试,判断扫描到的条码是否为组件中设置的良品或不良品条码,如输入的条码不符合,label状态栏变红,并提示“条码错误”,如输入的条码正确并为设置的良品条码,label状态栏变绿,并提升“请进行良品点检”,这时就将扫到的良品条码通过模拟键盘复制黏贴到ICT条码栏,进行ICT测试,测试完成后就提示“良品点检完成”。如扫描的是不良品条码,则label状态栏变绿,并提示“请进行不良品点检”,这是就将扫描到的不良品条码通过模拟键盘复制黏贴到ICT条码栏,进行ICT测试。当这设置的两个条码都测试完成后,将测试记录上传到数据库。到发现有这两个设置的条码测试记录,就可以进行其他条码的ICT测试,测试过程和设置的条码测试一样,只不过只有设置的条码测试之后记录后才能进行其他条码的ICT测试。别的条码测试数据不上传数据库。c#代码实现
时间: 2023-12-10 12:37:03 浏览: 145
抱歉,这个问题涉及到了很多细节,需要一定的时间和精力才能完成。以下是一个大致的代码框架,供参考:
1. 实现软件开机自启
在项目的 Properties -> Settings 中添加一个 bool 类型的设置项,命名为 AutoStart,设置默认值为 true。在程序启动时,检查 AutoStart 的值,如果为 true,则将当前程序的可执行文件路径添加到注册表中 "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 的项中。
```csharp
if (Properties.Settings.Default.AutoStart)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.SetValue(Application.ProductName, Application.ExecutablePath);
}
```
2. 通过路径控制 ICT 测试软件的打开和关闭
使用 Process 类启动或关闭 ICT 测试软件。在项目的 Properties -> Settings 中添加一个 string 类型的设置项,命名为 ICTPath,用于保存 ICT 测试软件的路径。
```csharp
Process ictProcess = null;
// 打开 ICT 测试软件
ictProcess = Process.Start(Properties.Settings.Default.ICTPath);
// 关闭 ICT 测试软件
if (ictProcess != null && !ictProcess.HasExited)
{
ictProcess.CloseMainWindow();
ictProcess.WaitForExit();
ictProcess.Dispose();
}
```
3. 设置良品和不良品条码的组件
在窗体中添加两个 TextBox 控件,分别用于输入良品和不良品条码。在项目的 Properties -> Settings 中添加两个 string 类型的设置项,分别命名为 GoodBarcode 和 BadBarcode,用于保存良品和不良品条码。
```csharp
// 保存良品和不良品条码
Properties.Settings.Default.GoodBarcode = txtGoodBarcode.Text;
Properties.Settings.Default.BadBarcode = txtBadBarcode.Text;
Properties.Settings.Default.Save();
// 获取良品和不良品条码
string goodBarcode = Properties.Settings.Default.GoodBarcode;
string badBarcode = Properties.Settings.Default.BadBarcode;
```
4. 定时器扫描数据库中的测试记录
使用 Timer 控件定时扫描数据库中当天的测试记录。在窗体中添加一个 Timer 控件,设置其 Interval 为 1000,Enabled 为 true。在 Timer 的 Tick 事件中,查询数据库中是否存在当天的测试记录。如果存在,则将 ICT 测试软件的路径保存到项目的 Properties -> Settings 中,以备后续使用。如果不存在,则不做任何操作。
```csharp
private void timer1_Tick(object sender, EventArgs e)
{
string today = DateTime.Today.ToString("yyyy-MM-dd");
// 查询数据库中当天的测试记录
string query = $"SELECT * FROM TestRecords WHERE Date='{today}'";
bool exists = false;
// TODO: 执行查询操作,判断是否存在当天的测试记录
if (exists)
{
// 如果存在当天的测试记录,则保存 ICT 测试软件的路径
Properties.Settings.Default.ICTPath = "path/to/ict.exe";
Properties.Settings.Default.Save();
}
}
```
5. 输入的条码判断
在窗体中添加一个 TextBox 控件,用于输入条码。在条码输入框的 KeyDown 事件中,判断输入的条码是否为设置的良品或不良品条码。如果是良品条码,则打开 ICT 测试软件并进行良品点检;如果是不良品条码,则打开 ICT 测试软件并进行不良品点检;如果不是任何一种条码,则提示“条码错误”。
```csharp
private void txtBarcode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string barcode = txtBarcode.Text;
// 判断输入的条码是否为良品条码
if (barcode == Properties.Settings.Default.GoodBarcode)
{
// 打开 ICT 测试软件,并进行良品点检
Process.Start(Properties.Settings.Default.ICTPath);
SendKeys.Send(Properties.Settings.Default.GoodBarcode);
SendKeys.Send("{ENTER}");
lblStatus.ForeColor = Color.Green;
lblStatus.Text = "请进行良品点检";
}
// 判断输入的条码是否为不良品条码
else if (barcode == Properties.Settings.Default.BadBarcode)
{
// 打开 ICT 测试软件,并进行不良品点检
Process.Start(Properties.Settings.Default.ICTPath);
SendKeys.Send(Properties.Settings.Default.BadBarcode);
SendKeys.Send("{ENTER}");
lblStatus.ForeColor = Color.Green;
lblStatus.Text = "请进行不良品点检";
}
else
{
// 提示“条码错误”
lblStatus.ForeColor = Color.Red;
lblStatus.Text = "条码错误";
}
txtBarcode.Clear();
}
}
```
6. 测试记录上传到数据库
在窗体中添加一个 Button 控件,用于上传测试记录。在按钮的 Click 事件中,将测试记录上传到数据库中。
```csharp
private void btnUpload_Click(object sender, EventArgs e)
{
string today = DateTime.Today.ToString("yyyy-MM-dd");
string barcode = txtBarcode.Text;
string result = lblStatus.ForeColor == Color.Green ? "Pass" : "Fail";
// 将测试记录上传到数据库中
string query = $"INSERT INTO TestRecords (Date, Barcode, Result) VALUES ('{today}', '{barcode}', '{result}')";
// TODO: 执行插入操作
}
```
阅读全文