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

扫描枪分类

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

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

  • 12
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: execl是一种电脑程序,用于处理数据并生成报表或进行其他的数据处理操作。扫码是一种设备,可以通过扫描条码或二维码来获取特定的数据。 当execl接收到扫码的内容时,可以通过以下步骤来处理: 1. 连接扫码:首先,需要将扫码通过USB接口或其他适配器连接到电脑上。确保扫码与电脑的连接正常。 2. 扫描条码或二维码:将需要扫描的条码或二维码放置在扫码的扫描区域,并按下扫描按钮。扫码会自动将条码或二维码转化为电脑可以处理的数据。 3. 数据传输:扫码将扫描得到的数据传输给execl程序。这可以通过设置扫码的数据传输模式为HID键盘模式或HIDPOS模式来实现。在这些模式下,扫码会将扫描得到的数据模拟成键盘输入或POS设备输入,从而使得execl可以接收到数据。 4. 数据处理:execl接收到扫码的数据后,可以使用其内置的函数和操作来对数据进行处理。可以将扫描得到的条码或二维码解码为商品的信息,并进行数据分析、整理和存储。可以根据需要生成报表、计算商品数量或价格等。 5. 数据输出:处理完毕后,execl可以将结果输出为报表、图表或其他格式。可以将数据导出为Excel文件、PDF文件或其他常见的数据文件格式,以便于数据的查看和分享。 通过以上步骤,execl可以接手扫码的内容,并对其进行数据处理和报表生成等操作。这样可以提高工作的效率和准确性,减少了人工输入的错误和时间成本。 ### 回答2: execl无法直接接手扫码的内容。execl是一种电子表格软件,用于数据处理和分析,无法直接与硬件设备进行通信。而扫码是一种通过光学码原理将条形码或二维码信息转化为电子数据的设备。在使用扫码时,需要将扫描得到的数据通过接口传输到计算机上。 一般情况下,可以通过以下步骤将扫描得到的内容传递给execl进行处理: 1. 连接扫码:将扫码通过USB接口或其他连接方式与计算机连接起来,确保计算机可以识别到扫码设备。 2. 扫描操作:使用扫码对条形码或二维码进行扫描,扫描枪会将取到的数据转化为电子信号。 3. 数据传输:将扫描得到的数据传输到计算机上,可以通过多种方式实现,例如扫码自带的数据传输软件或者编程接口等。 4. 数据处理:使用execl打开或导入扫码传输的数据文件,对数据进行处理、分析或存储等操作。 总的来说,execl本身并不能直接与扫码进行内容交互,而是通过将扫码传输的数据导入到execl中进行进一步处理。这需要通过合适的连接和数据传输方式实现,以便在execl中处理和操作扫码获得的内容。 ### 回答3: execl是一种电子表格软件,可以用于处理大量数据和进行数据分析。扫码是一种设备,可以快速将条形码或二维码上的信息输入到计算机中。扫码一般通过USB接口连接到计算机上。 要接手扫码的内容,首先需要在execl中创建一个电子表格,用于存储扫码输入的数据。然后,通过设置扫码的数据传输模式,使其能够将扫描到的条形码或二维码的信息输入到execl的电子表格中。 接着,需要在电子表格中设置合适的列名,以便对输入的数据进行分类和分析。可以根据需要,设定不同的列名,如产品编号、产品名称、价格、库存等等。这样,当扫码扫描到条码信息后,它会将对应的信息自动填充到电子表格的相应列中。 除了将扫码的内容输入到电子表格中,还可以通过使用execl的计算功能,对扫描到的数据进行处理和分析。比如,可以使用SUM函数计算某一列的总数,使用AVERAGE函数计算某一列的平均值,使用FILTER函数根据特定条件筛选数据等等,以满足不同的需求。 总的来说,通过将execl与扫码结合使用,可以方便、快速地将扫描到的条形码或二维码信息输入到电子表格中,并通过execl的功能对数据进行进一步处理和分析。这样可以提高工作效率,并减少人工输入错误的可能性。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值