更新记录
1.0.9(2020-04-04)
下载此版本
修复回调异常bug
open方法新增流控,流控未经过测试,使用前请自测
流控默认不使用,老用户不用管
1.0.8(2020-03-23)
下载此版本
同步版本
1.0.7(2020-03-20)
下载此版本
新增持续监听、移除监听
查看更多
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:5.0 - 9.0 |
armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 |
× |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
注意:HBuilderX3.0.0及以上版本此插件云端打包会失败,请开发者谨慎使用
声明
此插件不再维护,此插件不再维护,此插件不再维护
插件已开源,需自定义的请自行下载
码云地址:https://gitee.com/NF-Bo/serial_port_plugin
使用说明
使用此插件设备必须root
请先试用->选择你的项目->制作自定义基座
云打包:manifest.json -> App 原生插件配置 -> 选择云端插件
(需要离线打包请联系作者,联系方式在底部)
引用方式
const port = uni.requireNativePlugin('hpb-serialport');
插件接口
open(options, callback)
send(options, callback)
addListener(callback)
addListenerAndKeepAlive(callback)
removeListener(callback)
getStatus(callback)
close()
使用说明
open(options, callback)
参数说明
参数 |
类型 |
参数说明 |
options |
json |
参数配置 |
callback |
function |
回调方法 |
open->options{object}
参数 |
类型 |
是否可空 |
参数说明 |
path |
string |
否 |
串口地址(比如:/dev/ttyS0, /dev/ttyS1) |
baudRate |
int |
是 |
波特率,默认 9600 |
parity |
int |
是 |
奇偶校验,0 None, 1 Odd, 2 Even 默认 0 |
dataBits |
int |
是 |
数据位,5 - 8 默认 8 |
stopBit |
int |
是 |
停止位,1 或 2 默认 1 |
flowCon |
int |
是 |
1.0.9 新增 串口流控定义,1 硬件流控 或 2 软件流控 默认 0 不使用流控 |
open->callback
参数 |
类型 |
参数说明 |
status |
Boolean |
是否打开 |
msg |
String |
提示 |
send(options, callback)
参数说明
参数 |
类型 |
参数说明 |
options |
json |
指令数组 |
callback |
function |
回调方法 |
send->options{object} 试用 send 方法之前必须先设置监听回调 addListener
参数 |
类型 |
是否可空 |
参数说明 |
sends |
array |
否 |
向串口发送的指令(16 进制字符串,比如:['FF0F0C010203']), 发送的是 16 进制字符串 不发送指令则留空[] |
send->callback
参数 |
类型 |
参数说明 |
status |
Boolean |
是否成功 |
msg |
String |
提示 |
addListener(callback)
参数说明 ps: 改方法只监听一次回调,需要持续回调请使用下面的addListenerAndKeepAlive
参数 |
类型 |
参数说明 |
callback |
function |
回调方法 |
addListener->callback
参数 |
类型 |
参数说明 |
status |
Boolean |
是否成功 |
bytes |
byte[] |
串口返回的数据 |
size |
int |
串口返回的数据大小 |
addListenerAndKeepAlive(callback)
参数说明 ps:持续监听回调
参数 |
类型 |
参数说明 |
callback |
function |
回调方法 |
addListenerAndKeepAlive->callback 当 send 发送指令(sends:[...])为一个以上时,addListenerAndKeepAlive 会发送剩余的指令,不需要再次调用 send
参数 |
类型 |
参数说明 |
status |
Boolean |
是否成功 |
bytes |
byte[] |
串口返回的数据 |
size |
int |
串口返回的数据大小 |
removeListener(callback)
参数说明
参数 |
类型 |
参数说明 |
callback |
function |
回调方法 |
removeListener->callback
参数 |
类型 |
参数说明 |
status |
Boolean |
是否移除成功 |
msg |
String |
提示 |
getStatus(callback)
参数说明
参数 |
类型 |
参数说明 |
callback |
function |
回调方法 |
getStatus->callback
参数 |
类型 |
参数说明 |
status |
Boolean |
是否打开 |
msg |
String |
提示 |
close()
参数说明
关闭串口
使用方法
const port = uni.requireNativePlugin('hpb-serialport');
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
port.open({
path: "/dev/ttyS0",
baudRate: 9600, //可空,默认9600
parity: 0, //可空,默认0
dataBits: 8 ,//可空,默认8
stopBit: 1 //可空,默认1
}, res=>{
console.log(res);
console.log("status->"+res.status);
if(res.status){
console.log(res.msg)
//串口开启之后设置数据监听回调
this.addListenerAndKeepAlive();
}else{
console.log(res.msg)
}
})
},
methods: {
//串口开启之后设置数据监听回调
addListenerAndKeepAlive(){
port.addListenerAndKeepAlive(async result=>{
if(result.status){
let hex = await this.bytesToHexString(result.bytes, result.size);
console.log(hex);
uni.showToast({
icon: 'none',
title: hex
});
}else{
uni.showToast({
icon: 'none',
title: result.msg
});
}
})
},
send(){
port.send({
sends: ["FF0A01A20B010B3B48FE", "FF0A01A20B010B3B48FE"] //不发送,留[]
}, async res=>{
if(res.status){
uni.showToast({
icon: 'none',
title: res.msg
});
}else{
uni.showToast({
icon: 'none',
title: res.msg
});
}
})
},
status(){
port.getStatus(res=>{
console.log(res);
console.log("status->"+res.status);
if(res.status){
console.log(res.msg)
}else{
console.log(res.msg)
}
})
},
close(){
port.close();
},
bytesToHexString(inarray, size) {
return new Promise(res => {
let i, j, x;
let hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
"B", "C", "D", "E", "F"
];
let out = "";
for (j = 0; j < size; ++j) {
x = parseInt(inarray[j]) & 0xff;
i = (x >> 4) & 0x0f;
out += hex[i];
i = x & 0x0f;
out += hex[i];
}
res(out)
})
},
}
}
定制