最近公司有一个需求需要用到电子称重仪表读取数据到数据库中
这里使用的是柯力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>