556 字
3 分钟
开发 | Uniapp开发-1
2025-04-29 06:14:09
本文最后更新于 305 天前,内容可能已不准确,请注意甄别。

开发 | Uniapp开发-1#

使用uniapp连接串口#

uni-app的Android平台串口通信插件

引入插件

在uniapp中像这样引入插件并进行一次自定义打包基座就能通过 uni.requireNativePlugin('Fvv-UniSerialPort') 的方式引入

自定义打包基座

调用多个串口#

uniapp-H5+-调用原生android串口操作_RZL_01的技术博客_51CTO博客

通过这篇文章得知如果想使用多个串口进行连接,可以直接调该插件包装的 me.f1reking.serialportlib.SerialPortHelper 类,可以在原项目的 SerialPortHelper.java 下看到有哪些方法 Android-SerialPort ,如果只需要一个可以直接调 export const serialPort = uni.requireNativePlugin('Fvv-UniSerialPort') ,在使用多个串口时可以使用 serialPort 作为是否有串口的,是否能使用的依据,可以用它来直接获取所有串口列表,但是在打开该串口时通过回调获取该串口的 helper ,下面低 13 行提到的,这只是我的方法。

export const serialPort = uni.requireNativePlugin('Fvv-UniSerialPort')
var SerialPortHelper = plus.android.importClass(
'me.f1reking.serialportlib.SerialPortHelper'
)
// 打开串口
export function openSerialPort(port, baudRate, opt) {
// 使用传入的serialHelper或默认的serialPortHelper
const helper = new SerialPortHelper()
//设置串口
helper.setPort(port)
//设置波特率这里传的是要数值
helper.setBaudRate(baudRate)
// 通过回调获取该串口的helper,未来通过发数据,监听,都可以操作该helper来实现
opt && opt.onHelperReceived && opt.onHelperReceived(helper)
//实现原生java打开串口相关的事件
var iop = plus.android.implements(
'me.f1reking.serialportlib.listener.IOpenSerialPortListener',
{
onSuccess: function (res) {
opt && opt.onSuccess && opt.onSuccess(res)
},
onFail: function (res) {
opt && opt.onFail && opt.onFail(res)
},
}
)
//实现原生java打开串口后数据接收/发送相关的事件
var isd = plus.android.implements(
'me.f1reking.serialportlib.listener.ISerialPortDataListener',
{
onDataReceived: function (res) {
console.warn('===================原生接收到数据:===============', res)
opt && opt.onDataReceived && opt.onDataReceived(res)
},
onDataSend: function (str) {
console.log(str)
},
}
)
//配置相关内容
helper.setIOpenSerialPortListener(iop)
helper.setISerialPortDataListener(isd)
//打开串口
helper.open()
}
// 关闭串口
export function closeSerialPort(serialHelper) {
const helper = serialHelper
try {
helper.close()
return true
} catch (error) {
console.error('关闭串口失败:', error)
return false
}
}
const lockSerialHelper = ref(null)
function connectSerial() {
openSerialPort(selectedPort, selectedBaudrate, {
// 传入串口助手实例
onHelperReceived: (helper) => {
lockSerialHelper.value = helper
console.log('串口助手实例:', helper)
},
// 监听数据接收
onDataReceived: (directData) => {
// ...
},
onSuccess: (str) => {
// ...
},
onFail: (error) => {
// ...
},
})
}
开发 | Uniapp开发-1
https://fuwari.wisansiiz.top/posts/软件开发-uniapp开发-1/indexzh-cn/
作者
Wisansiiz
发布于
2025-04-29
许可协议
CC BY-NC-SA 4.0