Android带扫码枪的手持终端,怎样截获扫描内容,扫描内容是通过键值上报的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android带扫码枪的手持终端,怎样截获扫描内容,扫描内容是通过键值上报的?相关的知识,希望对你有一定的参考价值。

android带扫码枪的手持终端,怎样截获扫描内容,扫描内容是通过键值上报的,只知道用法是和通过usb外接一个红外扫码枪用法差不多 ,怎么去截获扫描值,扫的是一维码

参考技术A 找设备厂商,要sdk(开发包),这个所有设备厂商都提供的。里面会告诉你软件如何获得扫描内容,有例子。 参考技术B

    进入文字编辑焦点如浏览器网址列,短信输入框,然后扫描.可以查看扫描出来的文字

    进入Data wedge 应用扫描可以查看,设置decode方式.


参考技术C .NET 2.0提供了对串口通信功能的支持,在命名空间System.IO.Ports下找到SerialPort类,通过创建一个新的SerialPort对 象,我们就可以在.NET程序中控制串口通讯的全过程。
(1).属性介绍
进行串口通讯时,需要设置一些相关参数,可以通过设置SerialPort类的属性来进行。
SerialPort 属性主要包括:
.PortName 串口名称,COM1, COM2等。
.BaudRate 波特率,也就是串口通讯的速度,进行串口通讯的双方其波特率需要相同,如果用PC连接其他非PC系统,一般地,波特率由非PC系统决定。
.Parity 奇偶校验。可以选取枚举Parity中的值
.DataBits 数据位
.StopBits 停止位,枚举StopBits中的值
.Handshake 握手方式,也就是数据流控制方式,枚举Handshake中的值
(2).打开与关闭串口
在创建一个SerialPort对象,设置串口属性后,可以通过Open()方法打开串口。数据读写完成后,可以通 过Close()方法关闭串口。
根据经验,对于有些系统,在打开串口后,还需要将RtsEnable设置为True,这样才能读写数据,否则不能 正常读写数据。
(3).读写行数据
ReadLine()方法是阻塞的,直至遇到一个换行符后返回。在读取数据时,如果一直没有遇到换行符,那么在等待 ReadTimeout时间后,抛出一个TimeoutException。默认情况下,ReadTimeout为InfiniteTimeout。这 样,ReadLine一直处于阻塞状态,直至有新一行数据到达。
WriteLine()方法也是阻塞的,如果另一方不能及时接收数据,就会引起 TimeoutException异常。
由于ReadLine()和WriteLine()方法都是阻塞式的,在程序使用SerialPort 进行串口通讯时,一般应该把读写操作交由其他线程处理,避免因为阻塞而导致程序不响应。
(4).读写字节或字符数据
对于字节或字符数据,用Read()方法来读数据,该方法需要一个字节或字符数组作为参数来保存读取的数据,结 果返回实际读取的字节或字符数。
写数据使用Write()方法,该方法可以将字节数组、字符数据或字符串发送给另一方。
(5).事件
SerialPort提供了DataReceived事件。当有数据进入时,该事件被触发。
该事件的触发由操作系统决 定,当有数据到达时,该事件在辅助线程中被触发。辅助线程的优先级比较低,因此并不能确保每个字节的数据到达时,该事件都被触发。
(6).例题下载:
http://files.cnblogs.com/aierong/sms.rar
例 题说明:这是一个GSM Modem短消息发送,接收小程序,它利用SerialPort类实现.

B.第2种方式:
(1).JustinIO.cs, 网上收集的一个串口读写类,挺好用
(2).例题下载:
http://files.cnblogs.com/aierong/串口读写程 序.rar
此例题是一个我做的采集卡串口读取小程序,利用了JustinIO
C.第3种方式:
MSComm 控件的使用方法:
(1).将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹中。要注意的是,MSComm控件是要授权的,所以必须将其使用“执 照”Licence 在注册表中登记注册,下一步就是注册方法。至于为什么要这样做,可以看看下面的网页:http://support.microsoft.com/support/kb/articles/q151/7/71.asp
(2).用Windows下的注册工具regsvr32注册该OCX控件,点击“开始”->"运行",再在中填入(假设操作安装在C 盘,WIN2000): Regsvr32 C:\winnt\system32\Mscomm32.ocx
(3).在注册表中手工新建一个 主键项:先在点击“开始”->"运行",再在中填入regedit命令打开注册表,找到HKEY_CLASSES_ROOT\Licenses,在 其中添加主键:4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为: kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
(4).在工具箱中”添加项“的COM组件中添加Microsoft Comm Control,version 6.0引用。这样利用MSComm控件就可以对串口进行操作了!

uniapp 开发笔记

1.扫码枪扫码后,输入框内容一直叠加。

比如:第一次扫码(0000),输入框内容是0000,第二次扫码(1111),输入框内容是00001111。

其实这个跟扫码枪的配置有关。难为我们开发小伙伴了,搞了半天一直在调试代码。。。

解决方案:PDA桌面上有个按钮:扫描设置,打开并输入密码:654321(我自己设置的密码)。找到“扫描结果发送模式”选项,点击进去,然后手划到最下面,选中“清除输入框数据”即可。

另外,PDA,开发者选项开启时使用的密码:0016149(我自己设置的密码)。特此记录下来。

2.输入框获取焦点,阻止系统键盘弹出。

只要在<input>文本框的click事件添加uni.hideKeyboard();就行了。

我的项目是uniapp + vue。写法是这样的:

<u-form-item label="扫描箱码" label-width="180" :label-style="labelStyle" class="form-items"
    :border-bottom="false">
    <view class="form-item-view">
        <u-input type="text" v-model="dataForm.boxCode" maxlength="50" :border="false" @click="hideKeyboard"
            class="form-item-view-input" placeholder-style="line-height:70rpx;color:#c0c4cc"
            placeholder="请扫描箱码" />
        <u-icon @click="goScan" name="scan" size="40" color="#CCCCCC">
        </u-icon>
    </view>
</u-form-item>

methods里面添加方法:

// 隐藏软键盘
hideKeyboard() 
    uni.hideKeyboard();

在clikc函数中调用取消键盘到达键盘隐藏的作用,而不是在focus函数中。

以下内容抄自互联网:
有个坑是 在h5中 顺序 focus->click
但是在android的顺序是 click->focus

 

以上是关于Android带扫码枪的手持终端,怎样截获扫描内容,扫描内容是通过键值上报的?的主要内容,如果未能解决你的问题,请参考以下文章

js 扫码枪的输入

VB如何获取USB口条码枪的扫描数据?

uniapp 开发笔记

小程序开发wx.scanCode扫一扫接口,可以代替部分扫码枪的工作了

阿凡达蓝牙扫码枪怎么连接安卓手机

C#textbox控件区分扫码枪输入和键盘输入