客户端使用VB控件mscomm32.ocx实现自动读取串口电子称称重数据功能
1.查看各不同型号电子称的数据读取格式
如:
型号1,849: 0.000 kg
型号2,kgUT NW + 14.838
读取【kgUT NW + 14.838】数据格式后,利用JS解析出【14.838】显示在控件上。提交给后台应用.
2.设置电子称自动传输数据到所监听的串口应用中。各不同型号电子称设置方式不一样,需按供应商提供的说明书设置。
3.页面加入mscomm32.ocx组件
<html>
<head>
<title>JavaScript MSCOMM32.OCX </title>
<script type="text/javascript" >
function trim(text){
text = text.replace(/^[ |\n|\r|\t|\x0B|\0|?]+/,"");
text = text.replace(/[ |\n|\r|\t|\x0B|\0|?]+$/,"");
return text;
}
function isEmpty(str){
return ((trim(str) == null)||(trim(str).length == 0));
}
function isNumber(str){
if(isEmpty(str))
return false;
return !isNaN(str) ;
}
</script>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
function MSComm1_OnComm()
{
var len=0;
if(MSComm1.CommEvent==1)
{
window.alert("barcode");
}
else if(MSComm1.CommEvent==2)
{
var value = MSComm1.Input;
value = value.replace("kg","");
value = trim(value);
if(isNumber(value)){
document.form1.txtReceive.value=value;
}
}
}
function OpenPort()
{
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="#";
}
else
{
window.alert("已经开始接收数据!");
}
}
function autoPort()
{
if(!MSComm1.PortOpen)
{
MSComm1.PortOpen=true;
//MSComm1.Output="AA 00 03 88 18 0A 99 BB";
}
}
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm >
MSComm1_OnComm();
</SCRIPT>
</head>
<body οnlοad="autoPort();">
<OBJECT CLASSID=clsid:648A5600-2C6E-101B-82B6-000000000014 id=MSComm1 name=MSComm1 codebase=mscomm32.ocx type="application/x-oleobject"
style="border-style:outset; border-width:0px; WIDTH: 10px; HEIGHT: 10px" >
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="?">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<form name="form1">
<input type="button" name="Submit" value="commit" onClick="OpenPort()">
<input type="text" name="txtReceive" size=50 value="">
</form>
</body>
</html>
客户端电脑配置
1.运行register.cmd注册mscomm32.ocx至system32下。
2.如使用register.cmd未注册成功,则手工注册,将mscomm32.ocx用C:\Windows\System32\regsvr32.exe运行
3.检查注册表是否有打过安全补丁,如有删除此注册表信息
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}]
所有用的配置文件在附件【电子称接口】中,有一个test.html测试页面。