使用场景
蜻蜓支付相信大家都听说过,最近公司要出一款类似产品。
问题总结
在Android平板开发过程中,由于经验不足,首先被一个根本问题消耗了两天时间,
初次需求,通过串口来进行获取扫码器的数据,这本身没问题,但是在开发过程中,通过串口获取的数据,
根本无法与条形码数字保持一致,绞尽脑汁,又是转hex,又是转ascll,都没有效果。
作为一个开发者,使我怀疑设计本身存在问题,果不其然,通过练习厂家,Android平板是串口232,而扫码器需要的是usb获取,问题根源。
解决办法
与pc端一个原理,不过Android需要添加CH34X驱动,以及转接口(TTL转USB)接收。
CH340驱动介绍
CH340是一个USB 总线的转接芯片,实现USB转串口或者USB转打印口。
在串口方式下,CH340提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB总线
特点
> 全速USB 设备接口,兼容USB V2.0。
> 仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。
> 计算机端Windows 操作系统下的串口应用程序完全兼容,无需修改。
> 硬件全双工串口,内置收发缓冲区,支持通讯波特率50bps~2Mbps。
> 支持常用的MODEM 联络信号RTS、DTR、DCD、RI、DSR、CTS。
> 通过外加电平转换器件,提供RS232、RS485、RS422 等接口。
> CH340R 芯片支持IrDA 规范SIR红外线通讯,支持波特率2400bps到115200bps。
> 软件兼容CH341,可以直接使用CH341的驱动程序。
> 支持5V 电源电压和3.3V电源电压甚至3V 电源电压。
> CH340C、CH340E 和CH340B 内置时钟,无需外部晶振,CH340B 还内置EEPROM 用于配置序列号等。
> 提供SOP-16 和SSOP-20以及MSOP-10无铅封装,兼容RoHS。
代码位置
public int ReadData(byte[] var1, int var2) {
synchronized(this.i) {
try {
this.C.acquire();
} catch (InterruptedException var6) {
var6.printStackTrace();
}
if (var2 > 0 && this.s != 0) {
if (var2 > this.s) {
var2 = this.s;
}
this.s -= var2;
for(int var5 = 0; var5 < var2; ++var5) {
var1[var5] = this.n[this.q];//这个地方无法理解q的数据从哪里获取
++this.q;
this.q %= 655360;
}
this.C.release();
return var2;
} else {
this.C.release();
return 0;
}
}
}
代码连接
https://pan.baidu.com/s/1R_kbIknvnnrfV_MuYjevRA
密码: 047v