扫描枪分类

市面上的条形码扫描枪按照接口类型,一般可以分为三种:

  1. PS/2接口。这个接口一般老式的条码枪才会有,现在的条码枪基本上都没有这个接口了,因为现在的电脑上,基本上也不会有这个老式接口了。这个接口大家更熟悉的是以前的鼠标键盘会采用这种接口。
  2. USB接口。这是目前扫描枪用的最多的接口。
  3. RS232串口。一般来说,很少扫描枪会使用这种接口,除非用于开发。

就目前市面上而言,PS/2接口和串口的RS232已经很难找到了,因为现在的电脑尤其是笔记本电脑,大部分都没有PS/2接口了,笔记本电脑越做越薄,所以笔记本电脑一般都没有RS232接口。

开发

从开发的角度,可以将扫描枪分为两类:PS/2和USB接口一类,RS232串口一类。

RS232串口扫描枪开发

串口扫描枪在某些场景下是必须的,串口扫描枪有以下优缺点:

优点

  1. 多个扫描枪可以通过串口号进行区分。也就是说,如果某些场景需要使用多个扫描枪,而且需要区分是哪个把枪扫描到的条码,那么就要采用串口接口方式的条形码扫描枪。
  2. 后台接受数据。相对于PS/2和USB接口,串口通信可以在后台默默接受数据,所以程序可以在后台运行,条件没有PS/2和USB接口的扫描枪这么苛刻。

缺点

  1. 接线麻烦。由于串口本身不供电,所以还是需要一根电源线来作为扫描枪的供电,一般来说,通过一根USB线作为扫描枪的供电线。所以采用串口方式的扫描枪,有两根线,一根是usb的电源线,一根是串口的数据线。
  2. 开发相对复杂,因为涉及到串口通信开发。不过如果您熟悉串口通信开发,这个问题就不存在了。

RS232串口扫描枪的开发,这里就不再赘述了,其实就是串口通信开发。我在一个按订单分拣的项目中,使用了两把串口扫描枪,当时选择使用串口扫描枪,主要的目的就是区分条码来自于哪个扫描枪。说实话找了很久才找到有串口的扫描枪(差点我就放弃了这个方案,幸亏找到了,不然采用别的方案,项目复杂度要增加N倍)。

PS/2接口和USB接口扫描枪开发

PS/2接口的扫描枪也很少见了,不过由于它的开发和USB接口的扫描枪一样,所以也归为同一类,都当做是USB接口的吧。另外,USB接口的,目前也有两种,一种是有线的,一种是无线的,但是对于开发来说,没有区别。

扫描枪大部分的使用场景是收银类的软件,最常见的就是便利店的收银软件,通过扫描商品上的条形码,将商品输入到收银软件中,然后进行价格结算。阻碍广大程序员开发收银软件的三个拦路虎:扫描枪、客显、打印机。

很多程序员刚接触到usb扫描枪的时候,感觉无从下手,其实很简单,因为,usb扫描枪和usb键盘鼠标一样,都是一种输入设备。也就是说,不需要进行任何开发,就能获取到扫描枪的输入,您需要的,就是一个文本框,用来接收扫描枪扫描到的条码

不过跟键盘输入还是有些区别的,毕竟扫描枪是一次性输入一串文本(条形码)。我们可以通过监听文本框的TextChanged事件来获取条码,但是我们怎么知道一串条码输入结束了呢?一般的扫描枪都可以通过扫描特定的条形码来对扫描枪进行功能设置:比如关闭和打开扫码音,设置回车换行作为条码输入的结束符。比如本文所使用的扫描枪,默认使用回车键作为条码输入结束的标志,代码如下:

        private void tbInputBarcode_TextChanged(object sender, EventArgs e){string text = tbInputBarcode.Text;int pos = text.IndexOf('\r');if (-1 != pos){// 接收到条码string barcode = text.Substring(0, pos);if (!string.IsNullOrEmpty(barcode)){// 将条码全部选中,下一次扫码的时候,旧条码就会被新条码覆盖tbInputBarcode.SelectAll();// 处理条码ProcessBarcode(barcode);}}}

这样,我们就可以获取到usb接口扫描枪扫描到的条码了,但前提是获取条码的那个文本框,必须获得输入焦点。

有时候条码上有污渍,或者破损,导致扫描枪扫不出来,这时候就要手工输入了,所以这个文本框还得兼容人工输入条码,继续加强。人工输入条码这个功能,输入条码后,按回车键结束输入,所以我们通过监听文本框的KeyPress消息进行处理:

        private void tbInputBarcode_KeyPress(object sender, KeyPressEventArgs e){if (e.KeyChar == '\r'){// 如果是回车键e.Handled = true;string barcode = tbInputBarcode.Text;if (!string.IsNullOrEmpty(barcode)){// 将条码全部选中,下一次扫码的时候,旧条码就会被新条码覆盖tbInputBarcode.SelectAll();// 处理条码ProcessBarcode(barcode);}}}

至此,我们完美的解决了如何获取usb扫描枪扫描到的条码。

usb接口的扫描枪,最大的缺点就是:接收条码的程序,必须是前台程序。必须有一个文本框来接收条码,而且这个文本框必须获得输入焦点。

C#串口通信实战开发:获取条码枪扫描枪读码器把枪的扫码结果相关推荐

  1. 鼎捷ERP二维码整体解决方案 Tiptop GP条码管理系统 鼎捷ERP移动解决方案 鼎捷条码扫描 鼎捷WMS仓库移动扫码 鼎捷安卓PDA扫码方案 Tiptop 出入库盘点出货条码扫码

    本人在ERP实施公司做顾问四五年,参与企业实施ERP十多个项目,非常熟悉企业ERP流程,在实施过程遇到众多问题,提出了不少根据企业具体情况的解决方案. 最近定制开发了一套适合企业的条码扫码平台,基于鼎 ...

  2. js 串口通信mscomm接收undefined_VB串口通信应用开发入门知识讲解

    VB是一门功能强大.简单易学的程序语言.它可以方便快捷地编制适用于数据处理.多媒体等方面的程序,而且利用ActiveX控件中的MSComm部件还能十分方便地开发出使用计算机串口的通信程序. 今天,我们 ...

  3. Android开发串口通信之开发板的串口通信

    本人最近刚开始学习android,学习大概将近一个月.学着学着突然想做个小东西出来.因为android前面的学习主要是UI 界面的学习,就想着做一个通信的串口 来实现app与外部的数据传输.通过界面的 ...

  4. java 获取温度_Java利用RXTX串口通信工具类获取DS18B20温度传感器的温度值

    环境:Windows10,Eclipse4.5.2,JDK1.7 设备:DS18B20温度传感器(4线,485接口),USB转485接口转换器,笔记本电脑 注意点:RTU传输,使用的是字节,那么在程序 ...

  5. 22.从零开始开发QT软件思路(单片机的串口通信)-- OpenCV从零开始到图像(人脸 + 物体)识别系列

    本文作者:小嗷 微信公众号:aoxiaoji 吹比QQ群:736854977 链接:https://mp.weixin.qq.com/s?__biz=MzU1MTgxNjQyMg==&temp ...

  6. 如何制定好的串口通信的指令通讯协议

    通信按照数据的传输方式可以分为串行通信和并行通信. 按照数据的同步方式可以分为同步传输和异步传输. 按照数据的传输方向与时间关系,可以分为单工通信.半双工通信.全双工通信. 相关定义: 串行通信:使用 ...

  7. STM32串口通信学习总结

                                                                             STM32串口通信学习总结 1.概述 1.1学习目的 ...

  8. linux 嵌入式串口通信设计目的,基于linux的嵌入式串口通信.doc

    PAGE 天津电子信息职业技术学院 <嵌入式软件编程>课程报告 课程名称:基于linux的嵌入式串口通信 课程代码: 115229 姓 名: 甘琦 学 号: 48 专 业: 物联网应用技术 ...

  9. Qt 串口通信 高速发送出错的解决方法总结

    使用网上的qextserialport-1.2类,自行开发多线程串口通信.开发的过程中,出现两个问题: 问题1:我用信号槽跨线程调用串口类MyCom 发送和接收数据,中间运行的时候,会内存错误,Qt ...

最新文章

  1. oracle vm virtualbox右ctrl切换显示模式
  2. 6道简单的python练习题,来看看你python基础学的咋样
  3. confluence 5 mysql_Centos 6.5 安装 Atlassiana Crowd+JIRA+Confluence(Wiki)之一 数据库篇(MySQL5.1)...
  4. HTML 按钮(button)的 disable 属性和 disable property
  5. WPF实现环(圆)形菜单
  6. python 死循环程序能占满cpu吗_运行tensorflow python程序,限制对GPU和CPU的占用操作...
  7. 《01》ECMAScript 6 简介
  8. linux更新系统内核,如何更新Linux内核来提升系统性能?
  9. php导入excel源码,利用PHPExcel类库,实现PHP导出导入Excel表格Excel文件!
  10. 神经网络的输出层有哪些_深度学习的数学-神经网络、输入层、隐藏层、输出层...
  11. Eclipse自动生成方法注释 快捷键
  12. HDOJ 1394 Minimum Inversion Number
  13. 2020【第十一届蓝桥杯省赛】 C/C++ B组 (第一场)
  14. 传统反病毒产品丧钟响起
  15. 微信小程序开发——上传图片
  16. ads pspice 导入_ADS中使用pspice模型
  17. 血族群机器人_我的女仆机器人
  18. python爬取携程旅游_「携程网 机票」使用requests爬取携程网飞机票价格实例 - seo实验室...
  19. 千字长文讲解系统架构,系统设计看这篇就够了
  20. python url转码_Python如何实现转换URL详解

热门文章

  1. 第12章 安全通信与网络攻击
  2. Google Logo的秘密
  3. 【国科大课程】AI院 数字图像处理-杨戈、彭思龙
  4. 005我们身边的仓储物流自动技术
  5. english song
  6. rs485土壤氮磷钾传感器 stm32
  7. “怕被电死”-电气类超级基础常识
  8. [转]使用Cool Edit Pro和Adobe Audition消除原唱
  9. 华为IPC摄像机X1221-F C#二次开发
  10. 云胶片云PACS源码