接上一篇 uniApp 对接安卓平板刷卡器, 读取串口数据 , 本文将详细介绍如何使用插件读取到串口数据
原理
通过uniApp 插件读取设备串口数据, 解析后供业务使用;
步骤
- 创建uniApp 项目;
- 添加插件 安卓串口通信 Fvv-UniSerialPort 安卓串口通信 Fvv-UniSerialPort - DCloud 插件市场
- manifest.json 中找到App原生插件配置, 选中上面的插件
- 添加测试代码
<template> <view class="content"> <text class="title">读取到的内容: {{cardnumber}}</text> </view> </template> <script> const serialPort = uni.requireNativePlugin('Fvv-UniSerialPort') export default { name: 'GetCardNumber', data() { return { cardnumber: '1111111111' } }, methods: { onMessage(rec) { console.log(rec) /** * 自己的逻辑 * 此处拿到的是读卡器返回的原始数据 * 可能涉及到数值的转换,解析 * */ this.cardnumber += rec + "\r\n" } }, created: function(option) { const self = this serialPort.getAllDeviceList(res => { console.log('//设备列表', res) }) serialPort.getAllDevicePath(res => { console.log('//路径列表', res) }), setTimeout(() => { serialPort.setPath('/dev/ttyS3') serialPort.setBaudRate(19200) serialPort.open(res => { if (!res.status) { uni.showToast({ title: res.msg, duration: 2000, icon: "none" }); return } uni.showToast({ title: "串口监听已打开", duration: 2000, }); serialPort.onMessageHex(rec => { this.onMessage(rec); }, send => { console.log(send) }) }) }, 10000) }, } </script>
// 下面是几个常用的数据转换方法, 视业务情况而定 hex2int(hex) { var len = hex.length, a = new Array(len), code; for (var i = 0; i < len; i++) { code = hex.charCodeAt(i); if (48 <= code && code < 58) { code -= 48; } else { code = (code & 0xdf) - 65 + 10; } a[i] = code; } return a.reduce(function(acc, c) { acc = 16 * acc + c; return acc; }, 0); }, reverseHex(hex) { var result = ''; for (var i = hex.length - 2; i >= 0; i -= 2) { result += hex.substring(i, i + 2); } return result; }, test(receive) { var reversedData = ""; for (var i = receive.length - 1; i >= 0; i--) { var v = receive[i] & 0xFF; var hv = v.toString(16); if (hv.length < 2) { reversedData += '0'; } reversedData += hv; } if (reversedData !== "") { try { var bigint = BigInt("0x" + reversedData); console.log('转换后的值', bigint.toString()) } catch (e) { console.error(e); } } else { console.log("card string buffer is empty"); } },
- 制作自定义基座
- 如果项目没有配置本地打包环境和证书可以直接选择 公共测试证书, 去掉广告相关选项
- 运行时选自定义基座
- 刷卡测试
- 打包直接采用云打包即可