uniApp 插件 Fvv-UniSerialPort 使用实例

news2025/1/16 13:43:59

接上一篇 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. 打包直接采用云打包即可

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单高效的npm地址源管理器

Note: 这个库的灵感来自于使用 nrm 时只切换 npm 的问题 您可以使用此库来帮助npm、cnpm、yarn和pnpm快速切换下载地址源。此外&#xff0c;你还可以指定单个或多个地址源进行切换。 这个库将为您省去切换地址源的许多麻烦&#xff01; 1、为什么使用 但你想要简单快速地切换…

宝塔Linux面板Java项目部署域名访问 (SpringBoot项目)

1. 域名解析 (阿里云) 我的域名是阿里云, 服务器是腾讯云 2. SSL证书申请 (阿里云) 3. 证书签发成功 (阿里云) 4. 下载Nginx证书 (阿里云) 5. 解压获取 .key 和 .pem 文件 6. 添加域名 (腾讯云) 7. 添加域名 (宝塔面板) 8. SSL (宝塔面板) 9. SSL 添加成功 10. 域名访问项目 (成…

【AI底层逻辑】——篇章6:人工神经网络(深度学习算法)

目录 引入 一、深度学习算法 1、人工神经网络结构 2、卷积神经网络 3、循环神经网络&#xff1a;模拟记忆 ①循环神经网络 ②长短时记忆网络&#xff08;LSTM&#xff09; 4、强化学习 ①强化学习的控制论 ②强化学习的反馈机制 ③马尔可夫决策过程 ④强化学习的重…

开始学习 Kafka,一文掌握基本概念|Kafka 系列 一

如果你还不了解 Kafka&#xff0c;或者也打算深入探索、系统学习&#xff0c;那么欢迎有同样目标的小伙伴可以加群交流&#xff0c;让学习之路不再孤独。 一个人可能走的很快&#xff0c;但是一群人会走的更远。&#xff08;后台回复&#xff1a;加群&#xff09; 点击上方“后…

如何做好主机安全防护

当今数字化时代&#xff0c;网络安全威胁和风险日益突出&#xff0c;已成为企业面临的重大安全挑战。网络攻击者不断尝试利用各种技术和手段对企业网络资源进行探测和攻击&#xff0c;如&#xff1a;利用漏洞、木马、钓鱼、勒索等方式窃取数据、破坏系统、篡改信息。因此&#…

Semantic Kernel 入门系列:Semantic Function

如果把提示词也算作一种代码的话&#xff0c;那么语义技能所带来的将会是全新编程方式&#xff0c;自然语言编程。 通常情况下一段prompt就可以构成一个Semantic Function&#xff0c;如此这般简单&#xff0c;如果我们提前可以组织好一段段prompt的管理方式&#xff0c;甚至可…

软考论文如何得高分?

软考论文如何才能得高分&#xff1f;这是最近很多同事咨询我的问题&#xff0c;最近几天我也反思了一下为什么我的论文可以取得高分&#xff0c;对比了一下网络上45-55分的论文之后&#xff0c;总结如下&#xff1a; 1.子题目的要求一定要重点全面的回应 2. 要有过渡段-理论结…

如何分辨几类网线 如何制作网线的工作笔记

如何分辨几类网线 方法一. 可以通过查看网线的皮胶套上的数字进行判断 方法二. 1、六类网线和五类网线的内部结构不同&#xff0c;六类网线内部结构增加了十字骨架&#xff0c;将双绞线的四对线缆分别置于十字骨架的四个凹槽内&#xff0c;电缆中央的十字骨架随长度的变化而…

spark history网络流量占用高问题记录

生产环境遇到一台机器网络流量占用高告警 由于监控只有机器总的网络流量&#xff0c;没有具体进程的 于是只能登陆服务器&#xff0c;安装nethogs&#xff1a;yum install nethogs 然后执行nethogs命令查看进程流量 观察到主要是spark history server这个进程占用流量高(最高…

Kafka3.0.0版本——生产者如何提高吞吐量

目录 一、生产者提高吞吐量参数设置二、产者提高吞吐量代码示例 一、生产者提高吞吐量参数设置 batch.size&#xff1a;设置批次大小&#xff0c;默认16klinger.ms&#xff1a;设置等待时间&#xff0c;修改为5-100msbuffer.memory&#xff1a;设置缓冲区大小&#xff0c; 默认…

数字孪生电力:让电力智能化

随着科技的飞速发展&#xff0c;电力行业的智能化进程不断推进。智慧电力可以实现系统管理和能源分配的优化&#xff0c;实现电力行业的降本增效。以下主要介绍易知微科技有限公司为湖南国网建设的电力项目案例。 一、行业背景 1.1 政策背景 2014年12月获国务院常务会议原则通过…

抄写Linux源码(Day3:启动南大OS)

我们可以尝试启动南大OS&#xff0c;接着阅读南大OS源码&#xff0c;看看 JYY/YZH 构建主引导扇区的手段 &#xff08;注意&#xff1a;我使用的是南大2023年的 OS 实验代码&#xff09; https://jyywiki.cn/OS/2023/labs/Labs 首先&#xff0c;根据 JYY 的文档&#xff0c;…

jenkins gitlab多分支构建发布

内容背景介绍 这个是新手教程,普及概念为主 公司现在还使用单分支发布测试环境和生产,多人协同开发同一个项目导致测试环境占用等待等情况 测试环境占用等待问题 测试环境代码直接合并到 master,容易导致误发布到生产的情况 避免多版本同时发布测试不完善的情况出现 中间件…

汇川伺服驱动器整理

额定电压&#xff08;V&#xff09;功率&#xff08;KW&#xff09;额定输入电流&#xff08;A&#xff09;系数乘系数电流&#xff08;A&#xff09;推荐断路器电流&#xff08;A&#xff09;单相220V0.22.31.53.4540.441.5660.757.91.511.851619.61.514.4161.512.81.519.220三…

【100天精通python】Day24:python 迭代器,生成器,修饰器应用详解与示例

目录 专栏导读 1 迭代器&#xff0c;生成器&#xff0c;修饰器概述 1.1 概述 1.2 应用场景 2 语法与示例 2.1 迭代器 2.2 生成器 2.3 修饰器 3 综合应用案例 专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 1 迭代器&a…

助力工业物联网,工业大数据之ST层的设计【二十五】

文章目录 04&#xff1a;ST层的设计05&#xff1a;服务域&#xff1a;工单主题分析06&#xff1a;服务域&#xff1a;工单主题实现 04&#xff1a;ST层的设计 目标&#xff1a;掌握ST层的设计 路径 step1&#xff1a;功能step2&#xff1a;来源step3&#xff1a;需求 实施 功…

HTML之表单标签

目录 表单标签 Form表单 定义&#xff1a; 基本语法结构&#xff1a; form属性&#xff1a; enctyoe属性 fieldeset标签 fieldeset属性 legend标签 label标签 优势 label属性 input标签 input属性 input标签中的type属性 text text输入框有以下配套属性 searc bu…

【Android】控件与布局入门 - 简易计算器

目录 1. 基础开发环境 2. 计算器的布局和相关按钮 3. 计算器的主要运算逻辑 4. APK 文件 5. 项目源码 1. 基础开发环境 JDK&#xff1a;JDK17 Android Studio&#xff1a;Android Studio Giraffe | 2022.3.1 Android SDK&#xff1a;Android API 34 Gradle: gradle-8.0-bi…

大屏可视化(VUE2 + DataV)

准备&#xff1a;安装vue脚手架&#xff08;vue/cli&#xff09;&#xff0c;创建vue2项目&#xff0c;安装dataV&#xff0c;在main.js入口文件中引入dataV。 dataV地址&#xff1a;DataV 一、dataV安装 npm install jiaminghi/data-view 二、main.js import Vue from vu…

postgis mvt矢量切片 django drf mapboxgl

postgis mvt矢量切片 django drf mapboxgl 0.前提 [1] 静态的矢量切片可以采用 tippecanoe 生成&#xff0c;nginx代理&#xff0c;这种数据是不更新的&#xff1b; [2] 动态的矢量切片&#xff0c;一般采用postgis生成。基本上矢量切片80%的厂商都采用postgis&#xff0c;确实…