Featured image of post 软件开发 | Uniapp开发-1

软件开发 | Uniapp开发-1

使用uniapp开发安卓软件调用有串口的安卓机

软件开发 | 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 行提到的,这只是我的方法。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
const lockSerialHelper = ref(null)
function connectSerial() {
    openSerialPort(selectedPort, selectedBaudrate, {
    // 传入串口助手实例
    onHelperReceived: (helper) => {
        lockSerialHelper.value = helper
        console.log('串口助手实例:', helper)
    },
    // 监听数据接收
    onDataReceived: (directData) => {
        // ...
    },
    onSuccess: (str) => {
        // ...
    },
    onFail: (error) => {
        // ...
    },
})
}
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计