更新记录

1.0.0(2025-04-06)

  1. 获取所有串口
  2. 打开/关闭串口,收发数据
  3. 修改串口读写权限

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:4.4,iOS:不支持,HarmonyNext:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

android串口通讯,支持uniapp、uniappX、vue2、vue3

开发文档

  1. 集成插件步骤请参考 https://www.cnblogs.com/wenrisheng/p/18323027

接口文档


import {
        UTSSerialPort
} from "@/uni_modules/wrs-uts-sp"

let sp = new UTSSerialPort()
// 一个变量控制一个串口
// let sp1 = new UTSSerialPort()
// let sp2 = new UTSSerialPort()
// let sp3 = new UTSSerialPort()
  • 设置回调

sp.onCallback((resp) => {
    this.showMsg(JSON.stringify(resp))
    let opt = resp.opt
    switch (opt) {
        case "onOpenSuc": {
            this.showMsg("串口打开成功")
        }
        break;
        case "onOpenFail": {
            this.showMsg("串口打开失败")
        }
        break;
        case "onClose": {
            this.showMsg("串口关闭")
        }
        break;
        case "onDataReceived": {
            let data = resp.data
            this.showMsg("串口收到数据")
        }
        break;
        default:
            break;
    }
})
  • 获取系统所有的串口

// {
//  "files": [{
//      "canWrite": false,
//      "root": "serial",
//      "canRead": false,
//      "canExecute": false,
//      "name": "ttyS4",
//      "path": "/dev/ttyS4"
//  }, {
//      "canWrite": false,
//      "root": "serial",
//      "canRead": false,
//      "canExecute": false,
//      "name": "ttyS1",
//      "path": "/dev/ttyS1"
//  }, {
//      "canWrite": false,
//      "root": "fiq-debugger",
//      "canRead": false,
//      "canExecute": false,
//      "name": "ttyFIQ0",
//      "path": "/dev/ttyFIQ0"
//  }]
// }

let params = {}
// params.dir = "/proc/tty/drivers"; 默认获取的是/proc/tty/drivers路径下的所有串口
let resp = sp.getAllSerialport(params)
let files = resp.files
  • 打开串口

let params = {}
// 串口路径
params.path = "/dev/ttyS4" // 可以写死某个串口路径或者从sp.getAllSerialport(params)接口里选择一个串口
// 波特率,大部份是9600或115200
params.baudRate = parseInt(this.baudRate)
// 数据位,取值范围:5,6,7,8
params.dataBits = 8
// 校验位,值范围:0(不校验)、1(奇校验)、2(偶校验)、3(空校验)
params.parity = 0
// 停止位,取值范围:1、2
params.stopBits = 1
// 流控,值范围:0(不使用流控)、1(硬件流控RTS/CTS)、2(软件流控XON/XOFF)
params.flowCon = 0
sp.open(params)
  • 关闭串口

sp.close()

let params = {}
// data为要发送的数据,十六进制数据
params.data = [0x00, 0xFF]
sp.sendData(params)
  • 执行cmd命令 当串口没有读写权限时,可以实现使用如下接口修改串口的读写权限,有了读写权限后才能打开串口

let path = file.path
let params = {
    cmd: "chmod 777 " + path + " \n exit\n",
    waitFor: true
}
let cmdResult = sp.executeCmd(params)

root权限执行:


let path = file.path
let params = {
    suPath: "/system/bin/su", // su命令路径,一般不需要指定
    cmd: "chmod 777 " + path + " \n exit\n",
    waitFor: true
}
let cmdResult = sp.executeCmd(params)

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问