• 读取电子秤重仪表xk3101-k串口数据


    最近公司有一个需求需要用到电子称重仪表读取数据到数据库中

    这里使用的是柯力xk3101-k产品

    注意事项:因为使用了activex插件,所以要使用ie内核浏览器,有可能还是不能正常使用,需要设置ie浏览器的安全性问题,

    IE8的高安全性阻止了ActiveX等控件的加载

    “工具”---“Internet选项”---“安全”---“自定义级别”--“ActiveX控件和插件”,把相关的都启用

    设备连接时,有的新主板没有串口插孔,需要购买外加一个串口设备。

    我尝试使用USBTORS232转换串口线,但是读取的数据会有问题,搞了很久没有搞定,还是主板上加了接了一个串口

     需要下载ComAxCtrl.ocx插件放在Bin文件夹下

     var result = ComAxCtrl.CommOpen(1, "9600,n,8,1"); 默认是com1口
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="COM数据测试.aspx.cs" Inherits="COM数据测试" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        
    
    
        <script src="Js/jquery-1.4.2.js"></script>
    
    
    <style type="text/css">
    body{
    text-align: center;
    font-size: 12px;
    margin: 0px;
    padding: 0px;
    }
    .clear{
    margin: 0px 0px 0px 0px;
    padding: 0px 0px 0px 0px;
    }
    .cssCenter{
    margin-top: 0px;
    margin-bottom: 0px;
    margin-left: auto;
    margin-right: auto;
    }
    </style>
    <script type="text/javascript">
        var ComAxCtrl = null;
    
        /**
        * 检测是否允许ActiveX控件运行
        * @param true-允许ActiveX控件运行;false-不允许ActiveX控件运行
        */
        function isActiveXEnabled() {
            //xmlhttp对象
            var kXmlHttp = null;
            //如果是IE浏览器
            if ($.browser.msie != null && $.browser.msie == true) {
                //微软IE支持的xmlhttp对象
                var aVersionhs = ["MSXML2.XMLHttp.5.0",
                                 "MSXML2.XMLHttp.4.0",
                                 "MSXML2.XMLHttp.3.0",
                                 "MSXML2.XMLHttp",
                                 "Microsoft.XMLHttp"];
                //IE创建方式
                for (var i = 0; i < aVersionhs.length; i++) {
                    try {
                        kXmlHttp = new ActiveXObject(aVersionhs[i]);
                        return true;
                    } catch (e) {
    
                    }
                }
            } else {
                try {
                    //非微软IE支持的xmlhttp对象
                    if (typeof XMLHttpRequest != "undefined") {
                        kXmlHttp = new XMLHttpRequest();
                        return true;
                    }
                } catch (e) {
    
                }
            }
            return false;
        }
    
        /**
        * 判断ActiveX控件是否已经注册并加载到浏览器
        * @return true-已经注册,并且加载;false-未注册控件或未能成功加载ActiveX控件。
        */
        function isActiveXRegistered() {
            try {
                new ActiveXObject("MRCOMAX.MRCOMAXCtrl.1");
                return true;
            } catch (e) {
    
            }
            return false;
        }
    
        function initss() {
    
            //alert("isActiveXEnabled==" + isActiveXEnabled());
            //alert("isActiveXRegistered==" + isActiveXRegistered());
    
            document.getElementById("fingerAGM").value = "";
            document.getElementById("info").value = "";
            var flag = false;
            var flag1 = false;
            if (ComAxCtrl == null) {
                flag = true;
            }
            if (flag) {
                ComAxCtrl = document.getElementById("ComAxCtrl");
                ComAxCtrl.attachEvent("OnCommRecv", OnCommRecv);
                flag1 = true;
            } else {
                if (!ComAxCtrl.IsCommOpen()) {
                    flag1 = true;
                }
            }
            if (flag1) {
                var result = ComAxCtrl.CommOpen(1, "9600,n,8,1");
                if (result == 0) {
                    alert("无法找到设备!");
                    return false;
                }
            }
            if (!ComAxCtrl.IsCommOpen()) {
                alert("设备未打开!");
                return false;
            }
    
            //发送命令
            document.getElementById("info").value = "";
            var cR = ComAxCtrl.CommSend(stringToHex("TPLT"));
    
        }
        var getWeightCommon = "";
        function OnCommRecv(data) {
             hexToString(data);
          
    
    
        }
    
    
    
        function stringToHex(str) {
            var val = "";
            for (var i = 0; i < str.length; i++) {
                if (val == "")
                    val = "0X" + str.charCodeAt(i).toString(16);
                else
                    val += ",0X" + str.charCodeAt(i).toString(16);
            }
            return val;
        }
        function hexToString(str) {
            var val = "";
            var arr = str.split(" ");
            for (var i = 0; i < arr.length; i++) {
                val += String.fromCharCode("0x" + arr[i]);
               
            }
            var info = document.getElementById("info").value + val;
    
            info = info.replace(/[
    ]/g, ""); //去掉回车换行
            document.getElementById("info").value = info;
            if (info.length>8) {
                document.getElementById("info").value = ""; //接收完数据
            }
        }
    </script>
      </head>
    
     <body onload="initss();">
      <object id="ComAxCtrl" classid="clsid:1D82E7E4-CDEE-4894-92C2-A3E605D4F84E" codebase="Bin/ComAxCtrl.ocx"  style="1px; height:1px;"></object>
      
         
                                              
                          
         <input type="hidden" id="fingerAGM" value="" />
    <button onclick="">读取数据</button>
    <textarea rows="20" cols="50" id="info"></textarea>
        
    </body>
    </html>
    

      

  • 相关阅读:
    测试代码
    内网与外网间通信[转]
    向微软首席执行官史蒂夫·鲍尔默致敬
    Spring Cloud OAuth2
    Docker搭建 MySQL 主从复制
    MySQL-查询结果缓存
    网页手机wap2.0网页的head里加入下面这条元标签,在iPhone的浏览器中页面将以原始大小显示,并不允许缩放
    Mybatis一对一关联查询
    application.Properties 自定义变量 注解@ConfigurationProperties使用方法
    Hibernate中的脏检查和缓存清理机制
  • 原文地址:https://www.cnblogs.com/Vinkong/p/10826855.html
Copyright © 2020-2023  润新知