activeX控件在vue项目和js原生中的使用

注意:该控件只能在IE浏览器中使用
使用之前要在IE浏览器进行设置:设置-Internet选项-安全/自定义级别-Active控件和插件-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本,选择"启用"或者"提示")

1.在js原生中的使用

1.1引入activeX控件。代码如下:

<object classid="clsid:5C39237F-7BD0-404E-ACAE-AF3C00FFA88A" codebase="UhfAx.CAB#version=1,0,0,1" height="0" id="uhfAx" style="display:none" viewastext width="0"></object>

在这里插入图片描述
1.2建立回调函数

<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
    function comm_OnComm(param) {
        console.log(param);   //返回的数据
        var objData = JSON.parse(param); 
    }
</SCRIPT>
<SCRIPT EVENT=FireOnRfidCallBackMsg(param) FOR=uhfAx LANGUAGE=javascript>
    comm_OnComm(param)
</SCRIPT>

在这里插入图片描述
1.3初始化控件

// 初始化控件
function initUhfAx() {
    try {
        uhfAx = document.getElementById("uhfAx");
        //加载UHF库
        var json = uhfAx.axMul_loadRFIDLib();
        var obj = JSON.parse(json);
        if (obj.status == 0) {
            handle = obj.handle;
            //初始化RFID
            uhfAx.axMul_initRFID(parseInt(handle));
        }
    } catch (e) {
        alert("初始化失败, 请检查环境配置");
    }
}

1.4建立连接

//设置RF模块物理连接模式
this.uhfAx.axSetRFConnectMode(1);
//设置RF模块类型
this.uhfAx.axSetRFModuleType(2);
//打开连接
this.uhfAx.axConnectRemoteNetwork('192.168.1.16', 1200);
//开始盘点
this.uhfAx.axStartInventory(1, 0);

开始盘点后将会在回调函数中返回数据

2. 在vue中的使用

要利用节点的方式创建:
2.1.创建object标签

let obj = document.createElement('object')
obj.setAttribute('id', 'uhfAx')
obj.setAttribute('ref', 'uhfAx')
obj.setAttribute('classid', 'clsid:5C39237F-7BD0-404E-ACAE-AF3C00FFA88A')
obj.setAttribute('width', 1500)
obj.setAttribute('height', 0)
let _obj = document.getElementById("act");
_obj.appendChild(obj)

2.2.创建script回调标签

let scriptStr = document.createElement('SCRIPT')
scriptStr.setAttribute('FOR', 'uhfAx')
scriptStr.event = 'FireOnRfidCallBackMsg(param)'
scriptStr.appendChild(document.createTextNode('activeXListener.wakeUp(param)'))
_obj.appendChild(scriptStr)

这一步要在mounted钩子中加上代码:

mounted() {
  window.activeXListener = this
  this.initObject()
},

2.3完整代码

<template>
    <div class="card-main">
        <div id="act"></div>
    </div>
</template>

<script>
  export default {
    props: {
      hdlId: {
        type: String
      }
    },
    name: 'outCard',
    data() {
      return {
        dataArr: [],
        uhfAx: ''
      }
    },
    mounted() {
      window.activeXListener = this
      this.initObject()
    },
    methods: {
      initObject() {
        let obj = document.createElement('object')
        obj.setAttribute('id', 'uhfAx')
        obj.setAttribute('ref', 'uhfAx')
        obj.setAttribute('classid', 'clsid:5C39237F-7BD0-404E-ACAE-AF3C00FFA88A')
        obj.setAttribute('width', 1500)
        obj.setAttribute('height', 0)
        let _obj = document.getElementById("act");
        _obj.appendChild(obj)

        let scriptStr = document.createElement('SCRIPT')
        scriptStr.setAttribute('FOR', 'uhfAx')
        scriptStr.event = 'FireOnRfidCallBackMsg(param)'
        scriptStr.appendChild(document.createTextNode('activeXListener.wakeUp(param)'))
        _obj.appendChild(scriptStr)

        try {
          this.uhfAx = document.getElementById("uhfAx");
          // 初始化库函数(0 -- 成功, 否则失败)AfxOleInit
          let retVal = JSON.parse(this.uhfAx.axInitRFID());
          // console.log(retVal);
        } catch (e) {
          alert("初始化失败, 请检查环境配置");
        }

        //设置RF模块物理连接模式
        this.uhfAx.axSetRFConnectMode(1);
        //设置RF模块类型
        this.uhfAx.axSetRFModuleType(2);
        //打开连接
        this.uhfAx.axConnectRemoteNetwork('192.168.1.16', 1200);
        //开始盘点
        this.uhfAx.axStartInventory(1, 0);
      },
      wakeUp(param) {
        // 解析数据
        const objData = JSON.parse(param);
        if ("INVENTORY" == objData.Option) {
          const inventory = JSON.parse(objData.Data);
          let epc = inventory.epc
          this.dataArr.push(epc)
          let s = new Set(this.dataArr)
          let newArr = Array.from(s)
          console.log(this.dataArr)
          console.log(newArr)
        }
      }
    }
  }
</script>

<style lang="scss" rel="stylesheet/scss" scoped>
</style>
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.功能 摄像头控件用于在Web编程辅助您完成图像采集、截图,并上传到服务器当,支持USB外置摄像头、内置摄像头及部分型号高拍仪设备. 该摄像头控件工作在客户端浏览器,支持多种服务器端编程技术及部署环境,支持asp、jsp、php、asp.net等常见的服务器端编程技术,图像采集结果支持jpg和bmp格式图片。 2.控件集成jsp,asp,html,php使用说明 控件以cab压缩包格式发行,在项目集成控件时需要复制cab文件到项目,然后在需要进行图像采集的页面使用<object></object>的方式引入该控件。完整的引用控件的示例如下: 1 <object classid="clsid:1122dfdf-5fds6-4fds-8fds2-947fdsfdsfds8" 2 3 id="Camer" codebase="http://127.0.0.1:8080/imagesUpload/demo.cab#version=1,0,0,8" width="500px" height="400px"> 4 5 </object> 上面的示例演示了如何在项目的页面引用控件,注意红色标示的部分用于确定控件cab压缩包所在路径,要结合项目的目录划分自行制定到控件压缩包的路径。 除了要在html页面引入控件以外,客户端浏览器在访问控件所在页面时,需要提前调整浏览器设定,需要启用 ActiveX技术,因控件未进行数字签名,因此需要启用浏览器的“未签名 ActiveX下载提示”功能及“未签名ActiveX运行提示”功能. 注意:首次运行时,当浏览器有阻止运行,请允许运行 3.控件方法调用说明 01 //启动摄像头 02 Camer.initCamer(0,10); 03 //点击拍照 04 Camer.TakePhoto("D:/test1.bmp"); 05 //关闭摄像头 06 Camer.CloseDev(); 07 //上传已拍照的相片 08 Camer.UpFileNew("D:/test1.bmp","http://127.0.0.1:8080/imagesUpload/upload.jsp"); 09 10 //删除本地照片 11 Camer.DeleteFile("D:/test1.bmp");

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值