最近使用的是Datalogic的USB扫描枪, 希望实现的是提取 条形码 数据并进行通讯传输。
第一种办法是使用串口直接操作,已经实现并且无问题。
第2种办法是希望使用USB直接读取数据,这里遇到了问题。
USB操作有两种方式: 1. 光标读取数据 (类似于键盘输入至记事本中)
2. 使用Driver wizzard 安装VISA驱动后, 操作中断USB Interrupt 读取中断数据 (适用于USB RAW类型的仪器)
1. 第一种读取数据方式, 编程中遇到的问题: 举例 -- 使用串口读取数据, 数据是一闪就消失
使用USB读取数据, 数据读取到后不消失,
与串口的方式不一致,所以数据的后期传输出现问题。
且无法标记设备名称如: USB1口/USB2口
2. 使用VISA读取中断数据, 数据为空或者ASCII码的" # ", 未知数据,不解其中意思。
希望有经验人士帮助分析并解答, 是否USB设备不适用于工业类数据的传输操作 (只使用串口更好)?
如果可以使用USB传输方式, 以上哪种方法更合适, 如何实现更方便。
谢谢,望及时给与帮助
新添加附件
感谢您的回复。
第一个问题: 我一直在用扫描枪扫描条形码, 读取的就是条形码的数字。 没读取一次新增加一次新的数据, 不断行累加
第二个问题: 厂家方面我已经咨询过了,至今也没给我回复,我不清楚USB协议具体有多麻烦, 但是目前看起来好像并不适用于工业领域, 不知道有没有应用的先例。 请问下,图片中 扫描到的中断数据“ # ” 是什么含义? 是否 本来应该是 条形码数据??
如果USB确实麻烦,不适用,请告知,万分感谢
第一个问题,应该是数据流的问题,在串口下数据一直在刷新,这样读到条码后,在下个条码枪刷新周期,被刷掉了。但是在USB下数据平时不刷新。你可以手动的清除数据(在你处理完该数据之后),例如使用属性节点“重置为初始值”。 但是有一点我不太明白,为什么会累积,labview中文本框输入,新数据会把旧数据覆盖的。
第二个问题,请把您的条码枪型号发一下,我给您查查。您也可以找个usb调试工具,去抓一下条码枪发的数据,看看到底是什么数据。当然厂家对这些应该比我们了解
万分感谢您的回复;我不知道能不能说清楚,尽量描述下目前我需要做的。
第一个问题:
我 选择了 第一种方式 直接使用光标输入记录数据, 由于USB的数据是不刷新的 -- 这个可以参照直接在txt文件中的记录 也是一行行累计的 (这个可能也与我的扫描枪有关)。 型号为 Datalogic -959 Terry st . Eugene. OR. //S/N G14E78480 Class: QD2130-BK (不知道型号写的确切否)。
目前的项目需要的是将USB 的数据流传输方式 做成 和 串口一样。 所以您所说的 手动清除数据 我也做了, 尝试了很多方式, 但是效果很不理想 会丢数。 感觉好像是硬性的改变了什么, 有时候扫描速度过快就会丢数。
第二个问题:
选择 USB RAW方式, 中断数据是不能理解的数据, 请问下这种方式是否可行, 还是第一种方式更适用?
另外, 第一种方式需要带上USB 的端口型号作为ID名称,比如USB1/USB2 类似的,可能好像很难做到。
第二种方式是使用NI-VISA 是可以带上ID名称的, 但是目前为止抓不到正确数据。
最后还希望提供一些经验, 是否USB作为工业数据传输可行? 我查过相关资料, USB好像并不如串口好,而且USB口多的话会出现ID资源名难以识别等问题。
希望可以提供帮助,谢谢
感谢您之前的电话:
这边我还有最后一个问题,希望您那边帮查询下, USB RAW方式是否可行, 为什么我读取到的是错误数据, 怎么能找到支持,是否需要询问厂家?
由于我们的设备USB的较多,如果可行的话还是希望能尝试下此方式。
望能再电联我下,谢谢
usb raw只是建立了lv与设备的一个通讯通道,具体如何与设备通讯,是需要知道设备的通讯协议的。
http://blog.csdn.net/tryanother/article/details/216936 这个帖子中,博主使用usb sniffer捕获串口数据,来破解协议。可以试一试。