JavaScriptスキャンガン応用(三)

3820 ワード

原理を実現する:Objectタグを文字列でページのbodyに追加し、atachEvent方式でAxtiveXに応答イベントを追加し、キャッシュされたシリアル情報を遅延してシリアル通信を完了し、パラメータとページのパラメータ伝達と応答を実行します.以下は具体的な実現過程です.
mscomm.jsファイルの内容:

// JavaScript Document

function createMSComm(callBackFunction) {	
	var mscomm_str = "<OBJECT id=MSComm1 CLASSID='clsid:648A5600-2C6E-101B-82B6-000000000014' codebase='MSCOMM32.OCX' type='application/x-oleobject'  style='width:100px;height:30px' >"	
		+"<PARAM NAME='CommPort'		VALUE='1'/> "	
		+"<PARAM NAME='DataBits'		VALUE='8'/> "	
		+"<PARAM NAME='StopBits'		VALUE='1'/>"	
		+"<PARAM NAME='BaudRate'		VALUE='9600'/>"	
		+"<PARAM NAME='Settings'		VALUE='9600,N,8,1'/>"	
		+"<PARAM NAME='RTSEnable'		VALUE='1'/>"	
		+"<PARAM NAME='DTREnable'		VALUE='1'/>"	
		+"<PARAM NAME='Handshaking'		VALUE='0'/>"	
		+"<PARAM NAME='NullDiscard'		VALUE='0'/> "	
		+"<PARAM NAME='ParityReplace'	VALUE='?'/>"	
		+"<PARAM NAME='EOFEnable'		VALUE='0'/>"	
		+"<PARAM NAME='InputMode'		VALUE='0'/>"	
		+"<PARAM NAME='InBufferSize'	VALUE='1024'/>"	
		+"<PARAM NAME='InputLen'		VALUE='1'/>"	
		+"<PARAM NAME='OutBufferSize'	VALUE='512'/>"	
		+"<PARAM NAME='SThreshold'		VALUE='0'/>"	
		+"<PARAM NAME='RThreshold'		VALUE='1'/>"	
		+"</OBJECT>";
	
	//  OBJECT     body 
	document.body.insertAdjacentHTML(' beforeEnd',mscomm_str);
	
	//     
	if(MSComm1.PortOpen==false){
		try{
			MSComm1.PortOpen=true;
		}catch(ex){
			alert("com1      :"+ex.message);
		}
	}
		
	//       
	MSComm1.attachEvent("OnComm",function() {
		switch(MSComm1.CommEvent){
			case 2:  //    
				if(mscomm_scan_value == "") {
					mscomm_scan_value = MSComm1.Input;
					//         
					setTimeout("getMSCommScanValue()",300);
				}
				break;
			default: alert("Event Raised!"+MSComm1.CommEvent);
		}
	});
}
//       
var mscomm_scan_value = "";
//          
function getMSCommScanValue(){
	//           
	while(MSComm1.inBufferCount > 0) {
		mscomm_scan_value += MSComm1.Input;
	}
	//            
	callBackFunction(mscomm_scan_value);
	//         
	mscomm_scan_value = ""
}
test.ファイル:

<html>
<head>
<title>JavaScript    </title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<script type="text/javascript" src="mscomm.js" >
</script>

<script type="text/javascript">
	var i = 0;
	function mscommCallBack(scanValue) {
		var ewtm = document.getElementById("ewtm");
		ewtm.innerHTML += " " + (++i) + "   :" + scanValue;
	}
	
	window.onload = function() {
		createMSComm(mscommCallBack);
	}
</script>
</head>

<body>

    :
<div id="ewtm"></div>
</body>
</html>