更新记录

0.0.1(2023-11-06)

允许uniapp通过 myd-pda_ybx 这个插件进行 pda 优博讯扫码枪 单扫 连扫


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.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原生插件配置”->”云端插件“列表中删除该插件重新选择


myd-pda_ybx

允许uniapp通过 myd-pda_ybx 这个插件进行 pda 优博讯扫码枪 单扫 连扫

使用示例如下:

<template>
    <view class="wrap">
        <view >{{scanCode}}</view>
        <view style="padding: 10px;" @click="scanBarCode">摄像头扫条形码</view>
        <view style="padding: 10px;" @click="startDecodeSingle">单次激光扫条形码</view>
        <view style="padding: 10px;" @click="startDecodeMul">连续激光扫条形码</view>
        <view style="padding: 10px;" @click="stopDecode">停止激光扫条形码</view>
    </view>
</template>
<script>
    var main, receiver, filter;
    var _codeQueryTag = false;

export default {
    components: {
    },
    data() {
        return {
            scanCode: 'scanCode',
            mydPDAYBX:{},
        };
    },
    onShow: function() {
        this.initScan();
        this.startScan();
    },
    onHide: function() {        
        this.stopScan();
    },
    destroyed: function() {     
        /*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/
        this.stopScan();
    },
    onLoad() {      
        this.init()
    },
    methods: {

        async initMydPDAYBX(){
            const mydPDAYBX = uni.requireNativePlugin('myd-pda_ybx')
            this.mydPDAYBX = mydPDAYBX;
            const {
                /**
                 * 获取触发扫描出光的键值
                 * @return  res   {"code":"success","scanKey":value}
                 */
                getHandShankKeyCode,
                /**
                 * 开启解码 调用该方法,扫描头开始工作。
                 * @return  res   {"code":"success","scanKey":value}
                 */
                startDecode,
                /**
                 * 初始化 ScanManager
                 * @return
                 */
                initScanManager,
                /**
                 * 设置触发扫描出光的按钮
                 * @param options   {key:value,key2:value2}
                 */
                eventKeyEnable523,
                /**
                 * 获取 ScanManager
                 * @return ScanManager
                 */
                getScanManager,
                /**
                 * 停止解码 这将停止当前正在进行的任何数据采集。
                 * @return  res   {"code":"success"}
                 */
                stopDecode,
                removeAllEventListeners,
                /**
                 *单扫模式
                 */
                hostMode,
                /**
                 * 关闭扫描头 的电源,扫描头将不会工作
                 * @return  res   {"code":"success"}
                 */
                closeScanner,
                /**
                 *连扫模式
                 */
                continuousMode,
                /**
                 * 设置间隔时间
                 * @param interval   连续扫码的间隔时间 单位毫秒  范围0~5000ms
                 */
                setIntervalTime,
                addEventListener,
                /**
                 * 打开扫描头 的电源
                 * @return  res   {"code":"success"}
                 */
                openScanner,
            } = mydPDAYBX;
            initScanManager();

        },
        async startDecode(){
            this.mydPDAYBX.startDecode();
        },
        async startDecodeSingle(){
            this.mydPDAYBX.hostMode();
            this.mydPDAYBX.startDecode();
        },
        async startDecodeMul(){
            this.mydPDAYBX.continuousMode();
            this.mydPDAYBX.setIntervalTime(5000);
            this.mydPDAYBX.startDecode();
        },
        async stopDecode(){
            this.mydPDAYBX.stopDecode();
        },
        async init(){
            this.initMydPDAYBX();
        },
        async scanBarCode(){
        console.log('scanBarCode,11111111111111');
            uni.$u.toast('开始扫条形码');

            const success = function (res) {
                console.log(`条码类型:${res.scanType}`);
                console.log(`条码内容:${res.result}`);
                uni.$u.toast(`条码内容:${res.result}`);
                uni.showModal({
                 content: `条码类型:${res.scanType} ,条码内容:${res.result},barCode:${res.barCode},code:${res.code}`,  
                 showCancel: false  
                });  
            }
            const fail = function (res) {
                console.log(`fail条码类型:${res.scanType}`);
                console.log(`fail条码内容:${res.result}`);
            }
            uni.scanCode({
                scanType: ['barCode'],
                success,
                fail,
            })
        },
        initScan() {
            main = plus.android.runtimeMainActivity(); //获取activity  
            var IntentFilter = plus.android.importClass('android.content.IntentFilter');
            filter = new IntentFilter();
            // filter.addAction("nlscan.action.SCANNER_RESULT"); // 换你的广播动作  
            // filter.addAction("nlscan.intent.action.uhf.ACTION_RESULT"); // 换你的广播动作
            //针对优博讯安卓PDA-i6300A添加监听,其它优博讯的型号应该一样或类似
            filter.addAction("android.intent.ACTION_DECODE_DATA"); //监听扫描  
            receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
                onReceive: this.onReceive,
            });
        },
        startScan() {
            main.registerReceiver(receiver, filter);
        },
        stopScan() {
            main.unregisterReceiver(receiver);
        },
        onReceive: function(context, intent) {
            plus.android.importClass(intent);
            var code1 = intent.getStringExtra("barcode_string"); // 换你的广播标签
            if(code1!=null){
                this.queryCode(code1,2);
            }
        },
        queryCode: function(code,type) {
            var id = code
            console.log('id:', id)
            this.scanCode = id;
            uni.showModal({
             content: `onReceive:${id}`,  
             showCancel: false  
            });  
            uni.$emit('scancode', {
                code: id,
                type:type
            })

        },

    }
};
</script>
<style scoped lang="scss">

</style>

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

作者未提供license.md

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