最近公司有一个需求需要用到电子称重仪表读取数据到数据库中
这里使用的是柯力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(/[\r\n]/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="width:1px; height:1px;"></object>
<input type="hidden" id="fingerAGM" value="" />
<button onclick="">读取数据</button>
<textarea rows="20" cols="50" id="info"></textarea>
</body>
</html>
原文:https://www.cnblogs.com/Vinkong/p/10826855.html