uniApp 插件 Fvv-UniSerialPort 使用实例

本文详细介绍了如何在uniApp项目中使用Fvv-UniSerialPort插件来连接安卓平板的串口设备,包括创建项目、配置插件、获取设备列表和路径,以及处理读取到的原始数据解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上一篇 uniApp 对接安卓平板刷卡器, 读取串口数据 , 本文将详细介绍如何使用插件读取到串口数据

原理

通过uniApp 插件读取设备串口数据, 解析后供业务使用;

步骤

  1. 创建uniApp 项目;
  2. 添加插件 安卓串口通信 Fvv-UniSerialPort 安卓串口通信 Fvv-UniSerialPort - DCloud 插件市场
  3. manifest.json 中找到App原生插件配置, 选中上面的插件
  4. 添加测试代码   
    <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");
        }
    },

  5. 制作自定义基座
  6. 如果项目没有配置本地打包环境和证书可以直接选择 公共测试证书, 去掉广告相关选项
  7. 运行时选自定义基座
  8. 刷卡测试
  9. 打包直接采用云打包即可

* 由于原作者下线了插件, 这里已经将离线版本的插件上传到csdn, 免积分

https://download.csdn.net/download/byc233518/90338426

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值