更新记录

1.02(2022-05-20)

解决采用回调模式时返回的信息不是字节流的问题。

1.00(2021-09-07)

修改之前的Bug.


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 10.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择


UniApp-UsbHid 安卓原生插件使用说明

插件功能:

​ 提供UniApp调用UsbHid设备的操作。

接口列表:

  1. 打开设备

    ​ //vid 设备VID

    ​ //pid 设备PID

    ​ //jsCallback JS回调地址(打开设备的结果用此回调来返回)

    ​ OpenDevice(int vid, int pid, JSCallback jsCallback)

    ​ 回调数据:

    {

    ​ "return":0,//0 成功;1 失败

    ​ "msg":"打开成功"

    }

  2. 关闭设备

    ​ CloseDevice()

  3. 发送数据(要返回)

    ​ //data 发送给设备的数据

    ​ //jsCallback Js回调地址,可不传。当传入此参数时,发送给设备数据后会进行一次读取命令,如果读到数据用此回调来返回数据;当不传入此参数时不做此操作。

    ​ SendData(byte[] data, JSCallback jsCallback)

    {

    ​ "return":0,//0 成功;1 失败

    ​ "msg":"打开成功",

    ​ "recvData":[0,0,0]//收到的数据

    }

  4. 发送数据(不要返回)

    SendData(byte[] data, null)

  5. 设置回调地址

    ​ //usbEvent USB设备插入或拔出时的事件通知

    ​ //recvEvent 收到设备数据后的事件通知,如果调用发送数据且不用回调时请先设置此回调地址,否则设备返回的数据将接收不到。

    setUsbEvent(JSCallback usbEvent,JSCallback recvEvent)

  6. 获取当前已插入的USB设备列表

    ​ //jsCallback 回调地址,获取的列表由此回去调来返回。

    ​ getHidDeviceList(JSCallback jsCallback)

    {

    ​ "vid":vid,

    ​ "pid":pid,

    ​ "name":“名称",

    ​ "pname":"产品名称"

    ​ "class":"类名"

    }

实例:


<template>
    <view class="button-sp-area">
        <button type="primary" plain="true" @click="OpenHid()">打开</button>
        <button type="primary" plain="true" @click="SendDataCall()">发送(要回调)</button>        
        <button type="primary" plain="true" @click="SendData()">发送(不要回调)</button>       
        <button type="primary" plain="true" @click="getdeviceList()">获取设备列表</button>
        <button type="primary" plain="true" @click="SetCllBack()">设置回调地址</button>

    </view>

</template>

<script>
    const modal = uni.requireNativePlugin('modal'); 
    const UsbHid = uni.requireNativePlugin('SnowStorm-Hid');

    function usbEvent(data){
        const msg = JSON.stringify(data);
        modal.toast({
            message: msg,
            duration: 1.5
        });
    }

    export default {
        data() {
            return {
                title: ''
            }
        },
        onLoad() {

        },
        methods: {  

            getdeviceList()
            {

                UsbHid.getHidDeviceList(result => {

                    const msg = JSON.stringify(result);
                    modal.toast({
                        message: msg,
                        duration: 1.5
                    });                 
                });
            },
            SetCllBack()
            {
                UsbHid.setUsbEvent(usbEvent,usbEvent);
            },
            SendDataCall()
            {
                var data=[
                    0xA2,0x13,0xB4,0x2,0x0,0xFD,0xFF,0x6,               
                    0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,                
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0];

​               

                UsbHid.SendData(data,result => {

                    const msg = JSON.stringify(result);
                    modal.toast({
                        message: msg,
                        duration: 1.5
                    });                 
                });
            },
            SendData()
            {
                var data=[
                    0xA2,0x13,0xB4,0x2,0x0,0xFD,0xFF,0x6,               
                    0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,                
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
                    0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0];

​               

                UsbHid.SendData(data);
            },
            OpenHid() {
                UsbHid.OpenDevice(3118,2311,result => {

                    const msg = JSON.stringify(result);
                    modal.toast({
                        message: msg,
                        duration: 1.5
                    });
                    switch (result.type) {
                        case 'button':
                            console.log("callback---button--" + result.index);
                            break;
                        case 'checkBox':
                            console.log("callback---checkBox--" + result.isSelected);
                            break;
                        case 'a':
                            console.log("callback---a--" + JSON.stringify(result));
                            break;
                        case 'backCancel':
                            console.log("callback---backCancel--");
                            break;
                    }
                });
            }

        }
    }

</script>

<style>
    button {
        margin-top: 30upx;
        margin-bottom: 30upx;
    }

    .button-sp-area {
        margin: 0 auto;
        width: 60%;
    }

    .content {
        text-align: center;
        height: 400upx;
    }

    .wrapper {
        flex-direction: column;
        justify-content: center;
    }

    .button {
        width: 200px;
        margin-top: 30px;
        margin-left: 20px;
        padding-top: 20px;
        padding-bottom: 20px;
        border-width: 2px;
        border-style: solid;
        border-color: #458B00;
        background-color: #458B00;
    }

    .text {
        font-size: 30px;
        color: #666666;
        text-align: center;
    }

</style>

隐私、权限声明

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

USB

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

插件不采集任何数据

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

插件没有任何广告

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