2025年4月1日 星期二 乙巳(蛇)年 正月初二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > .net

读码的逻辑设计

时间:06-27来源:作者:点击数:43

读取扫码枪扫出的条码通常需要考虑以下问题:

1、每次使用的码应该都是最新的有效的码。

2、如果遇到跟上次一样的码,则不更新,反之则更新。

3、需要对条码进行校验。

4、如果操作人员忘记扫码,需要有机制能发现并提醒操作人。

一般读码的设计通常有两种思路:

① 条码框接收到条码之后,存储该次条码,并立即清空条码框,便于下一次接收新条码。缺点是条码在条码框中出现的时间过短,不方便观察码有没有扫上、码对不对。

② 条码框接收到条码之后,存储该次条码,并自动选中条码框文本,便于下一次接收新条码冲掉文本框中的旧条码。缺点是偶尔忘记扫条码时,可能会错用上次的条码作为当前的条码。

通常一个好的读码逻辑设计,需要同时结合这两种思路。

例如可以这样做:

1、软件启动后,立即开一个不断接收条码的线程,不断刷新接收到的条码。这里我采用的是不清空条码框,而是选中条码框文本的方式。

接收并刷新条码线程的方法如下:

  • private string code_Current = "";
  • private string code_Last = "";
  • private void RefreshBarCode()
  • {
  • while (true)
  • {
  • Thread.Sleep(3);
  • string code_Text = tbx_productNameCode.Text;
  • if (IsBarcodeValid(code_Text))
  • {
  • code_Current = code_Text;
  • if (code_Current != code_Last)
  • {
  • code_Last = code_Current;//"上次"的条码得到更新
  • if (tbx_productNameCode.InvokeRequired)
  • {
  • BeginInvoke(new Action(() => { tbx_productNameCode.Text = code_Current; }));
  • BeginInvoke(new Action(() => tbx_productNameCode.Focus()));
  • BeginInvoke(new Action(() => tbx_productNameCode.SelectAll()));
  • }
  • else
  • {
  • tbx_productNameCode.Text = code_Current;
  • BeginInvoke(new Action(() => tbx_productNameCode.Focus()));
  • BeginInvoke(new Action(() => tbx_productNameCode.SelectAll()));
  • }
  • }
  • }
  • //控制扫码间隔
  • Thread.Sleep(1200);
  • }
  • }

(判断码是否有效的方法IsBarcodeValid()略。)

2、当其他地方需要使用当前条码时,可以通过GetCurrentBarCode()方法去取条码:

  • private string barCode = "";
  • barCode = GetCurrentBarCode();
  • //清空条码框,防止下一次重复扫入同一个码
  • if (tbx_productNameCode.InvokeRequired)
  • {
  • BeginInvoke(new Action(() => tbx_productNameCode.Text = ""));//这一点非常关键!!!
  • BeginInvoke(new Action(() => tbx_productNameCode.Focus()));
  • }
  • else
  • {
  • tbx_productNameCode.Text = "";
  • tbx_productNameCode.Focus();
  • }
  • private string GetCurrentBarCode()
  • {
  • string code_temp = tbx_productNameCode.Text;
  • if (IsBarcodeValid(code_temp))
  • {
  • return code_temp;
  • }
  • else
  • {
  • return "";
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门