c#窗体应用程序实现当软件开启,定时器就在数据库扫描是否有设置的良品和不良品条码的当天ICT测试记录(ICT_test表中Barcode,Date,Result),良品和不良品条码在本地文件夹txt文件中获取。如果数据库中有良品和不良品测试记录存在,lable状态栏变绿并提示“已点检,请进行测试”,然后进行别的条码的ICT测试。(条码先扫描到c#窗体软件txt_barcode中,在通过模拟键盘定位发送到ICT测试软件条码框中,然后进行ICT测试)。如果没有,label状态栏变红,并提示“请进行测试前点检”,然后就先进行设置条码的ICT测试,判断扫描到txt_Barcode条码是否为获取到设置的良品或不良品条码,如输入的条码不符合,label状态栏变红,并提示“条码错误”,如输入的条码正确并为设置的良品条码,label状态栏变绿,并提示“请进行良品点检”,进行ICT测试,当发现某一文件夹中有良品测试报告生成,表示良品测试完成,测试完成后就提示“良品点检完成”。如扫描的是设置的不良品条码,则label状态栏变绿,并提示“请进行不良品点检”,进行ICT测试。当发现某一文件夹中有不良品测试报告生成,表示不良品测试完成。当这设置的两个条码都测试完成后,将测试记录直接更新到数据库,不需要点击上传c#代码实现

时间: 2023-11-09 10:07:39 浏览: 45
以下是实现上述功能的C#代码: ```csharp using System; using System.Windows.Forms; using System.IO; using System.Data.SqlClient; using System.Timers; namespace ICTTest { public partial class MainForm : Form { private string goodBarcodeFile = "good_barcodes.txt"; //良品条码文件名 private string badBarcodeFile = "bad_barcodes.txt"; //不良品条码文件名 private string barcode; //当前扫描到的条码 private bool isGoodBarcode = false; //当前扫描到的条码是否为良品条码 private bool isBadBarcode = false; //当前扫描到的条码是否为不良品条码 private bool isTesting = false; //是否正在进行ICT测试 private System.Timers.Timer timer; //定时器 private string connectionString = "Data Source=(local);Initial Catalog=ICTTest;Integrated Security=True"; //数据库连接字符串 public MainForm() { InitializeComponent(); timer = new System.Timers.Timer(60000); //每隔1分钟扫描一次数据库 timer.Elapsed += OnTimedEvent; timer.AutoReset = true; timer.Enabled = true; } private void MainForm_Load(object sender, EventArgs e) { UpdateStatusLabel(false, "请进行测试前点检"); //初始化状态栏为红色 } private void txtBarcode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) //判断是否按下回车键 { barcode = txtBarcode.Text.Trim(); //获取条码 if (!string.IsNullOrEmpty(barcode)) //判断条码是否为空 { if (!isTesting) //判断是否正在进行ICT测试 { if (isGoodBarcode) //如果当前扫描到的是良品条码 { if (CheckGoodBarcode(barcode)) //判断是否为设置的良品条码 { UpdateStatusLabel(true, "请进行良品点检"); //状态栏变绿 isTesting = true; //开始进行ICT测试 StartICTTest(); //开始ICT测试 } else { UpdateStatusLabel(false, "条码错误"); //状态栏变红,提示条码错误 } } else if (isBadBarcode) //如果当前扫描到的是不良品条码 { if (CheckBadBarcode(barcode)) //判断是否为设置的不良品条码 { UpdateStatusLabel(true, "请进行不良品点检"); //状态栏变绿 isTesting = true; //开始进行ICT测试 StartICTTest(); //开始ICT测试 } else { UpdateStatusLabel(false, "条码错误"); //状态栏变红,提示条码错误 } } } } } } private bool CheckGoodBarcode(string barcode) { string[] goodBarcodes = File.ReadAllLines(goodBarcodeFile); //从良品条码文件中读取所有良品条码 foreach (string str in goodBarcodes) { if (str == barcode) { return true; //如果扫描到的条码在良品条码列表中,则返回true } } return false; //否则返回false } private bool CheckBadBarcode(string barcode) { string[] badBarcodes = File.ReadAllLines(badBarcodeFile); //从不良品条码文件中读取所有不良品条码 foreach (string str in badBarcodes) { if (str == barcode) { return true; //如果扫描到的条码在不良品条码列表中,则返回true } } return false; //否则返回false } private void StartICTTest() { //将条码发送到ICT测试软件条码框中 SendKeys.SendWait(barcode); SendKeys.SendWait("{ENTER}"); } private void UpdateStatusLabel(bool isGreen, string text) { if (isGreen) { lblStatus.BackColor = System.Drawing.Color.Green; //绿色 } else { lblStatus.BackColor = System.Drawing.Color.Red; //红色 } lblStatus.Text = text; } private void OnTimedEvent(Object source, ElapsedEventArgs e) { CheckTestRecords(); //扫描数据库,检查是否有测试记录 } private void CheckTestRecords() { try { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); //打开数据库连接 SqlCommand command = new SqlCommand("SELECT * FROM ICT_test WHERE Date = @Date AND Result <> ''", connection); command.Parameters.AddWithValue("@Date", DateTime.Today.ToString("yyyy-MM-dd")); //查询当天测试记录 SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { if (isGoodBarcode || isBadBarcode) { UpdateTestResult(); //更新测试结果到数据库 } UpdateStatusLabel(true, "已点检,请进行测试"); //状态栏变绿,提示已点检,请进行测试 } else { UpdateStatusLabel(false, "请进行测试前点检"); //状态栏变红,提示请进行测试前点检 } reader.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void UpdateTestResult() { try { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); //打开数据库连接 SqlCommand command = new SqlCommand("UPDATE ICT_test SET Result = @Result WHERE Barcode = @Barcode AND Date = @Date", connection); if (isGoodBarcode) { command.Parameters.AddWithValue("@Result", "PASS"); //良品测试结果为PASS } else if (isBadBarcode) { command.Parameters.AddWithValue("@Result", "FAIL"); //不良品测试结果为FAIL } command.Parameters.AddWithValue("@Barcode", barcode); command.Parameters.AddWithValue("@Date", DateTime.Today.ToString("yyyy-MM-dd")); command.ExecuteNonQuery(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } isGoodBarcode = false; isBadBarcode = false; isTesting = false; barcode = ""; } } } ``` 在上述代码中,我们使用了一个定时器来每隔一分钟扫描一次数据库,检查是否有测试记录。如果有,则将状态栏变绿,并提示“已点检,请进行测试”,否则将状态栏变红,并提示“请进行测试前点检”。在扫描数据库时,我们使用了SqlCommand对象来执行一条SELECT语句,查询当天ICT_test表中是否有Result不为空的记录。如果有,则说明已经进行了点检,可以进行测试;否则需要进行测试前点检。 当扫描到条码并按下回车键时,我们首先判断当前扫描到的条码是否为良品条码或不良品条码。如果是,则判断扫描到的条码是否为设置的良品或不良品条码,如果是,则将状态栏变绿,并提示“请进行良品/不良品点检”,开始进行ICT测试。如果不是,则将状态栏变红,并提示“条码错误”。 当进行良品/不良品点检后,我们需要等待ICT测试完成,并检查测试结果。如果发现某一文件夹中有良品/不良品测试报告生成,则说明测试已经完成。此时,我们需要将测试结果更新到ICT_test表中,然后将isGoodBarcode、isBadBarcode和isTesting变量重置为false,barcode变量重置为空字符串。

相关推荐

zip
【资源说明】 基于C#实现的窗体应用程序源码+说明(定时关闭特定进程).zip基于C#实现的窗体应用程序源码+说明(定时关闭特定进程).zip基于C#实现的窗体应用程序源码+说明(定时关闭特定进程).zip 基于C#的一个窗体应用程序,可以定时关闭正在运行中的特定进程,并且通过多线程将窗体隐藏 修改form1.cs,在46行后添加额外的判断来增加进入判定的程序 在每天的0点30到六点之间,如果被判定的程序运行了,那么会直接kill掉这个进程 打包之后安装在电脑的startup文件夹就可以开机自启了。润物细无声。 可以直接下载Releases里最上面哪个压缩包,解压后将文件移动至startup文件夹,然后运行setup.exe,一路确定就ok了 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
zip

最新推荐

recommend-type

Python学习笔记16 - 猜数字小游戏

猜数字小游戏的相关函数,与主程序搭配使用
recommend-type

机器人比赛内容的讲解,帮助简单了解一下机器人比赛的注意事项

适用于未参加过机器人比赛的小伙伴,简单了解一下注意事项。
recommend-type

shumaguan.rar

shumaguan.rar
recommend-type

信捷MP3系列步进电机CAD图纸.zip

信捷MP3系列步进电机CAD图纸
recommend-type

基于Springboot的足球青训俱乐部管理系统(免费提供全套java开源毕业设计源码+数据库+开题报告+论文+ppt+使用说明

随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率,足球俱乐部管理后台系统应运而生。 本文重点阐述了足球青训俱乐部管理后台系统的开发过程,以实际运用为开发背景,基于Spring Boot框架,运用了Java技术和MYSQL数据库进行开发设计,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了俱乐部相关信息管理的重要功能。 本系统经过测试,运行效果稳定,操作方便、快捷,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的足球青训俱乐部管理后台系统。 关键字:俱乐部管理;Spring Boot框架;Java技术;MYSQL数据库
recommend-type

BSC绩效考核指标汇总 (2).docx

BSC(Balanced Scorecard,平衡计分卡)是一种战略绩效管理系统,它将企业的绩效评估从传统的财务维度扩展到非财务领域,以提供更全面、深入的业绩衡量。在提供的文档中,BSC绩效考核指标主要分为两大类:财务类和客户类。 1. 财务类指标: - 部门费用的实际与预算比较:如项目研究开发费用、课题费用、招聘费用、培训费用和新产品研发费用,均通过实际支出与计划预算的百分比来衡量,这反映了部门在成本控制上的效率。 - 经营利润指标:如承保利润、赔付率和理赔统计,这些涉及保险公司的核心盈利能力和风险管理水平。 - 人力成本和保费收益:如人力成本与计划的比例,以及标准保费、附加佣金、续期推动费用等与预算的对比,评估业务运营和盈利能力。 - 财务效率:包括管理费用、销售费用和投资回报率,如净投资收益率、销售目标达成率等,反映公司的财务健康状况和经营效率。 2. 客户类指标: - 客户满意度:通过包装水平客户满意度调研,了解产品和服务的质量和客户体验。 - 市场表现:通过市场销售月报和市场份额,衡量公司在市场中的竞争地位和销售业绩。 - 服务指标:如新契约标保完成度、续保率和出租率,体现客户服务质量和客户忠诚度。 - 品牌和市场知名度:通过问卷调查、公众媒体反馈和总公司级评价来评估品牌影响力和市场认知度。 BSC绩效考核指标旨在确保企业的战略目标与财务和非财务目标的平衡,通过量化这些关键指标,帮助管理层做出决策,优化资源配置,并驱动组织的整体业绩提升。同时,这份指标汇总文档强调了财务稳健性和客户满意度的重要性,体现了现代企业对多维度绩效管理的重视。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【进阶】Flask中的会话与用户管理

![python网络编程合集](https://media.geeksforgeeks.org/wp-content/uploads/20201021201514/pythonrequests.PNG) # 2.1 用户注册和登录 ### 2.1.1 用户注册表单的设计和验证 用户注册表单是用户创建帐户的第一步,因此至关重要。它应该简单易用,同时收集必要的用户信息。 * **字段设计:**表单应包含必要的字段,如用户名、电子邮件和密码。 * **验证:**表单应验证字段的格式和有效性,例如电子邮件地址的格式和密码的强度。 * **错误处理:**表单应优雅地处理验证错误,并提供清晰的错误消
recommend-type

卷积神经网络实现手势识别程序

卷积神经网络(Convolutional Neural Network, CNN)在手势识别中是一种非常有效的机器学习模型。CNN特别适用于处理图像数据,因为它能够自动提取和学习局部特征,这对于像手势这样的空间模式识别非常重要。以下是使用CNN实现手势识别的基本步骤: 1. **输入数据准备**:首先,你需要收集或获取一组带有标签的手势图像,作为训练和测试数据集。 2. **数据预处理**:对图像进行标准化、裁剪、大小调整等操作,以便于网络输入。 3. **卷积层(Convolutional Layer)**:这是CNN的核心部分,通过一系列可学习的滤波器(卷积核)对输入图像进行卷积,以
recommend-type

BSC资料.pdf

"BSC资料.pdf" 战略地图是一种战略管理工具,它帮助企业将战略目标可视化,确保所有部门和员工的工作都与公司的整体战略方向保持一致。战略地图的核心内容包括四个相互关联的视角:财务、客户、内部流程和学习与成长。 1. **财务视角**:这是战略地图的最终目标,通常表现为股东价值的提升。例如,股东期望五年后的销售收入达到五亿元,而目前只有一亿元,那么四亿元的差距就是企业的总体目标。 2. **客户视角**:为了实现财务目标,需要明确客户价值主张。企业可以通过提供最低总成本、产品创新、全面解决方案或系统锁定等方式吸引和保留客户,以实现销售额的增长。 3. **内部流程视角**:确定关键流程以支持客户价值主张和财务目标的实现。主要流程可能包括运营管理、客户管理、创新和社会责任等,每个流程都需要有明确的短期、中期和长期目标。 4. **学习与成长视角**:评估和提升企业的人力资本、信息资本和组织资本,确保这些无形资产能够支持内部流程的优化和战略目标的达成。 绘制战略地图的六个步骤: 1. **确定股东价值差距**:识别与股东期望之间的差距。 2. **调整客户价值主张**:分析客户并调整策略以满足他们的需求。 3. **设定价值提升时间表**:规划各阶段的目标以逐步缩小差距。 4. **确定战略主题**:识别关键内部流程并设定目标。 5. **提升战略准备度**:评估并提升无形资产的战略准备度。 6. **制定行动方案**:根据战略地图制定具体行动计划,分配资源和预算。 战略地图的有效性主要取决于两个要素: 1. **KPI的数量及分布比例**:一个有效的战略地图通常包含20个左右的指标,且在四个视角之间有均衡的分布,如财务20%,客户20%,内部流程40%。 2. **KPI的性质比例**:指标应涵盖财务、客户、内部流程和学习与成长等各个方面,以全面反映组织的绩效。 战略地图不仅帮助管理层清晰传达战略意图,也使员工能更好地理解自己的工作如何对公司整体目标产生贡献,从而提高执行力和组织协同性。