网页串口

            由于实习单位的需要,前段时间开发个网页读取串口的小脚本,说是开发其实大部分是抄来的,但是CAB包是自己找的和浏览器相关设置是自己弄出来的,大概花了2天时间,特把相关代码发出来、跟大家交流学习,如需要CAB包和串口模拟测试软件可以联系我,第一遍日记,希望各位前辈多多指点,认识大家很高兴..

Code:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  2. <html xmlns="http://www.w3.org/1999/xhtml">   
  3.  <head>   
  4.   <title> ASP读取串口数据 </title>   
  5.   <meta name="generator" content="editplus" />   
  6.   <meta name="author" content="" />   
  7.   <meta name="keywords" content="" />   
  8.   <meta name="description" content="" />   
  9.   
  10.   
  11.   <script language="VBscript">   
  12.   '//页面载入时自动打开串口进行监听   
  13.   'Sub Window_OnLoad()      
  14.   '    MSComm1.PortOpen = True      
  15.   'End Sub    
  16.   '//打开串口进行监听   
  17.   Sub OpenPort()      
  18.    if Not MSComm1.PortOpen Then        
  19.   MSComm1.PortOpen = True      
  20.   MsgBox "Port opened !", vbOKOnly, "Warning"      
  21.    Else      
  22.   MsgBox "Port already opened !", vbOKOnly, "Warning"      
  23.    End if      
  24.   End Sub    
  25.   '//关闭串口   
  26.   Sub ClosePort()      
  27.    if MSComm1.PortOpen Then        
  28.   MSComm1.PortOpen = False      
  29.   MsgBox "Port closed !", vbOKOnly, "Warning"      
  30.    Else      
  31.   MsgBox "Port already closed !", vbOKOnly, "Warning"      
  32.    End if      
  33.   End Sub    
  34.   </script>     
  35.   
  36.   
  37.     
  38. <script ID="clientEventHandlersJS" language="javascript">      
  39. <!--   
  40.   //串口事件驱动部分   
  41.   
  42. function MSComm1_OnComm()   
  43. {   
  44.    var fldWeight = frmView.txtWeight;   
  45.    var strInput;   
  46.    strInput = MSComm1.Input;   
  47.    var strOutput;   
  48.    var arr = strInput.split("");    
  49.    var arr1 = strInput.split("");   
  50.    for(var i = 0; i < arr.length; ++i)   
  51.    {   
  52.     arr1[i] = arr[strInput.length-i-1];   
  53.    }   
  54.    strOutput = arr1;   
  55.    var newStr="";   
  56.    for(var i=0; i <arr1.length; i++)   
  57.    {    
  58.         if(arr1[i] != ',')   
  59.     {   
  60.              newStr += arr1[i];   
  61.         }   
  62.    }    
  63.    if(arr1[0] == '=' && arr1[9] == '=' )   
  64.    {   
  65.    newStr = newStr.substring(1,9);    
  66.    }   
  67.    else  
  68.    {   
  69.         alert("数据不正确");   
  70.         return false;   
  71.    }   
  72.    fldWeight.value = newStr;       
  73.    fldWeight.focus();   
  74.    return false;   
  75. }      
  76.   //-->      
  77.   </script>      
  78.   
  79.   
  80.   <script language="javascript" FOR="MSComm1" EVENT="OnComm">      
  81.      
  82. <!--    
  83.   //串口事件驱动关联   
  84.   MSComm1_OnComm()   
  85.   
  86.   //-->      
  87. </script>   
  88.   
  89.   
  90. <script language="javascript">   
  91. function jsOpenPort()    
  92.  {    
  93.     alert("opened");   
  94.     var MSComm1 = document.getElementById("MSComm1");   
  95.     if (!MSComm1.PortOpen)   
  96.     {       
  97.         MSComm1.PortOpen=true;      
  98.     }   
  99.     else  
  100.     {   
  101.     alert("opened");   
  102.     }   
  103. }   
  104.   
  105. </script>   
  106.   
  107.   
  108.     
  109.  </head>   
  110.   
  111.  <body>   
  112.   
  113.   
  114.   
  115.   <object classid="clsid:648A5600-2C6E-101B-82B6-000000000014" id="MSComm1"    
  116.          codebase="mscomm32.cab#version=6.1.98.16"    
  117.          type="application/x-oleobject"        
  118.          style="left:54px;top:14px; width: 87px; height: 86px;">     
  119.   <param name="_ExtentX" value="1005">      
  120.   <param name="_ExtentY" value="1005">      
  121.   <param name="_Version" value="393216">      
  122.   <param name="CommPort" value="3">      
  123.   <param name="DTREnable" value="-1">      
  124.   <param name="Handshaking" value="0">      
  125.   <param name="InBufferSize" value="1024">      
  126.   <param name="InputLen" value="0">      
  127.   <param name="NullDiscard" value="0">      
  128.   <param name="OutBufferSize" value="512">      
  129.   <param name="ParityReplace" value="63">      
  130.   <param name="RThreshold" value="10">      
  131.   <param name="RTSEnable" value="0">      
  132.   <param name="BaudRate" value="9600">      
  133.   <param name="ParitySetting" value="0">      
  134.   <param name="DataBits" value="7">      
  135.   <param name="StopBits" value="0">      
  136.   <param name="SThreshold" value="0">      
  137.   <param name="EOFEnable" value="-1">      
  138.   <param name="InputMode" value="0">   
  139. </object>      
  140.   
  141.   
  142.   
  143.   <form action="" method="post" id="frmView" name="frmView">      
  144.  <center><p>      
  145.  重量<input id="txtWeight" name="txtWeight" style="left:50px;top:17px">千克   
  146. </p>    
  147.   
  148.  <p>皮重<input id="txtMWeight" name="txtMWeight" style="left:50px;top:17px">千克</p>   
  149.  <p>毛重<input id="txtPWeight" name="txtPWeight" style="left:50px;top:17px">千克</p>   
  150.  <p>净重<input id="txtJWeight" name="txtJWeight" style="left:50px;top:17px">千克</p>   
  151.  <p>车号<input id="txtAutoNumer" name="txtAutoNumber" style="left:50px;top:17px"></p>   
  152.  <p>货号<input id="txtCaseNumber" name="txtCaseNumber" style="left:50px;top:17px"></p>   
  153.  <p>   
  154.     <button OnClick="" value="clear">清除全部记录</button>       
  155.     <button OnClick="" value="zero">置零</button>                
  156.     <button OnClick="" value="qupi">去皮</button>   
  157.  </p>      
  158. <p>      
  159.      
  160. </p>      
  161.   <p>      
  162.   <button OnClick="JavaScript:jsOpenPort();" value="Open Port">打开串口</button>      
  163.   <button οnclick="ClosePort()" value="Close Port">关闭串口</button>      
  164.   </p>      
  165.   <p>      
  166.   </p>     
  167. </center>    
  168.   </form>       
  169.  </body>   
  170. </html>   
  171.   
  172.     
  173.   

起初写的时候CAB根本带不进去,无论怎么样更改浏览器的安全设置都无法解决,后修改CLSID解决

下面发下MSCOM相关参数的解释 自己整理,不全见谅

/

Handshaking

常数          值          描述
comNone       0           无握手。
comXonXoff    1           XOn/Xoff 握手。
comRTS        2           Request-to-send/clear-to-send 握手。
comRTSXOnXOff 3           Request-to-send 和 clear-to-send 握手皆可。

/
InBufferSize

输入缓冲区大小

/
InputLen

接收缓冲区读取的字符数
 InputLen 属性的缺省值是 0。
设置 InputLen 为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。

/

RThreshold

在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。
语法 object.Rthreshold [ = value ](value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。 )
说明 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。

/

SThreshold

MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。

/

CommPort

监听串口号

/

EOFEnable

确定在输入过程中 MSComm 控件是否寻找文件结尾 (EOF) 字符。如果找到 EOF 字符,将停止输入并激活 OnComm 事件,此时 CommEvent 属性设置为 comEvEOF,
语法:object.EOFEnable [ = value ]
EOFEnable 属性语法包括下列部分:
value 布尔表达式,确定当找到 EOF 字符时,OnComm 事件是否被激活,如“设置值”中所描述。
value 的设置值:
True 当 EOF 字符找到时 OnComm 事件被激活。
False (缺省)当 EOF 字符找到时 OnComm 事件不被激活。
说明:当 EOFEnable 属性设置为 False,OnComm 控件将不在输入流中寻找 EOF 字符

/

_ExtentX   _ExtentY

控件相关大小

/


_Version

COM控件版本


/

DTREnable

启用控制终端就续信号

/

OutBufferSize

串口输出缓冲区大小


/

NullDiscard

确定 null 字符是否从端口传送到接收缓冲区。

设置值 描述

True Null 字符不从端口传送到接收缓冲区
False (缺省值)Null 字符从端口传送到接收缓冲区

/

ParityReplace

发生奇偶校验错误时,设置并返回替换数据流中一个非法字符的字符。

parity bit 是指同一定数据位数一起传输的位,以提供简单的错误检查。当使用校验位时,MSComm 控件把在数据中已经设置的所有位(值为 1)都加起来并检查其和为奇数或偶数(根据当端口开时奇偶校验的设置)。

按照缺省规定,MSComm 控件用问号 (?) 替换非法字符。若设置 ParityReplace 为一个空字符串 (""),则当奇偶校验错误出现时,字符替换无效。但 OnComm 事件仍然产生,并且设置 CommEvent 属性为 comEventRXParity。

ParityReplace 字符被用语面向字节的操作,它必须是单字节字符。可指定 0 到 255 之间的 任何 ANSI 字符代码。

/

RTSEnable

确定是否使   Request   To   Send   (RTS)   线有效。
一般情况下,由计算机发送   Request   To   Send   信号到联接的调制解调器,以请示允许发送数据。

/

BaudRate

每秒位数

ParitySetting

奇偶校验 默认无

/

DataBits

数据位  COM通信设定


/

StopBits

停止位

/

InputMode

InputMode默认是Text模式

InputMode可修改成Binary模式

/

 

/

第一次写日记,不好见谅

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值