1. 程式人生 > >PB9串列埠、網口資料接收工具

PB9串列埠、網口資料接收工具

setProfilestring("rec_data.ini",'com','ck',ddlb_1.text)
setProfilestring("rec_data.ini",'com','btl',ddlb_2.text)
setProfilestring("rec_data.ini",'com','sjw',ddlb_3.text)
setProfilestring("rec_data.ini",'com','tzw',ddlb_4.text)
setProfilestring("rec_data.ini",'com','txxy',ddlb_5.text)
setProfilestring("rec_data.ini",'com','xyw',ddlb_6.text)

String ls_baudrates//【波特率】
string ls_paritys  //【奇偶校驗】
string ls_databits //【資料位】
string ls_stopbits //【停止位】
Int li_comportn    //【串列埠】
int li_handshake   //【通訊協議】
//【串列埠】
choose case ddlb_1.text
	case 'COM1'
		li_comportn=1
	case 'COM2'
		li_comportn=2
	case 'COM3'
		li_comportn=3
	CASE 'COM4'
		li_comportn=4
	CASE 'COM5'
		li_comportn=5
	CASE 'COM6'
		li_comportn=6
	CASE 'COM7'
		li_comportn=7
	CASE 'COM8'
		li_comportn=8
end choose
//【波特率】
ls_baudrates=ddlb_2.text
//【奇偶校驗】
choose case ddlb_6.text
	case '無校驗'
		ls_paritys='N'
	case '偶校驗'
		ls_paritys='E'
	case '奇校驗'
		ls_paritys='O'
end choose
//【資料位】
ls_databits=ddlb_3.text
//【停止位】
ls_stopbits=ddlb_4.text
//【通訊協議】
choose case ddlb_5.text
	case '無'
		li_handshake=0
	case 'XonXof'
		li_handshake=1
	case 'RTS or CTS'
		li_handshake=2
	case 'ASTM'
		li_handshake=3
end choose
//【配置裝置通訊引數】
If ole_1.Object.portopen Then ole_1.Object.portopen = False
ole_1.Object.settings = ls_baudrates+','+ls_paritys+','+ls_databits+','+ls_stopbits
ole_1.Object.commport = li_comportn
//============================================================================================================
/*
說明 :當接收字元後,若 Rthreshold 屬性設定為 0(預設值)則不產生 OnComm 事件。
例如,設定 Rthreshold 為 1,接收緩衝區收到每一個字元都會使 MSComm 控制元件產生 OnComm 事件。
*/
ole_1.object.rthreshold = 1
/*
若設定 Sthreshold 屬性為 0(預設值),資料傳輸事件不會產生 OnComm 事件。
若設定 Sthreshold 屬性為 1,當傳輸緩衝區完全空時,MSComm 控制元件產生 OnComm 事件。
*/
ole_1.object.Sthreshold = 0
//【該屬性確定是否使Request To Send線有效。一般情況下,由計算機發送Request To Send訊號到連線的調變解調器,以請示允許傳送資料。】
ole_1.object.rtsenable = true
//【該屬性用於設定或返回硬體握手協議】
ole_1.Object.handshaking = li_handshake
//【當InPutMode屬性值為0(文字模式)時,變數中含String型資料。當InputMode屬性值為1(二進位制模式)時,變數中含Byte型陣列資料。】
ole_1.object.inputmode = 0//0-讀取緩衝區中全部的內容
//【 該屬性用於設定或返回輸入緩衝區的大小,預設值為1024位元組】
ole_1.object.inbuffersize = 1024//gl_inbuffer
//【 該屬性用於設定或返回緩衝區大小,值為Integer型,表示傳輸緩衝區的位元組數,預設值為512位元組。】
ole_1.object.outbuffersize = 512//gl_outbuffer
//【該屬性用於開啟或關閉埠。屬性值為Boolean型。】
ole_1.object.portopen = true

//if profilestring(gs_comini,"COMM","EOFEnabled","0") = "1" then
// EOFEnable屬性:該屬性若設定為TRUE,則當輸入中出現EOF,停止輸入併產生OnComm事件。
//	ole_1.object.eofenable = true
//end if


/*

 Input     從接收緩衝區返回和刪除字元。       
 Output    向傳輸緩衝區寫一個字串。
 
 nput 屬性           返回並刪除接收緩衝區中的資料流。該屬性在設計時無效,在執行時為只讀。       
 語法       object.Input       Input 屬性語法包括下列部分:       
 部分 描述       object 物件表示式,其值是“應用於”列表中的物件。       
 說明       InputLen 屬性確定被 Input 屬性讀取的字元數。
 設定 InputLen 為 0,則 Input 屬性讀取緩衝區中全部的內容。       
 InputMode 屬性確定用 Input 屬性讀取的資料型別。
 如果設定 InputMode 為 comInputModeText,
 Input       屬性通過一個 Variant 返回文字資料。
 如果設定 InputMode 為 comInputModeBinary,
 Input 屬性通過一個       Variant .返回一二進位制資料的陣列。       
 資料型別       Variant       Input 屬性示例       
 該例子說明如何從接收緩衝區讀取資料。       
 Private Sub Command1_Click()      
 Dim InString as String       ' 
 讀取所有可用資料。       
 MSComm1.InputLen = 0
 
RThreshold 屬性:
在MSComm控制元件設定CommEvent屬性為comEReceive併產生 OnComm 之前,
設定並返回的要接收的字元數。
語法: object.Rthreshold [ = value ](value 整型表示式,
說明在產生 OnComm 事件之前要接收的字元數。 )
說明 :當接收字元後,若 Rthreshold 屬性設定為 0(預設值)則不產生 OnComm 事件。
例如,設定 Rthreshold 為 1,接收緩衝區收到每一個字元都會使 MSComm 控制元件產生 OnComm 事件。

Threshold屬性:
在MSComm控制元件設定CommEvent屬性為comEvSend 併產生 OnComm 事件之前,
設定並返回傳輸緩衝區中允許的最小字元數。

語法 : object.SThreshold [ = value ] value整形表示式,
代表在 OnComm 事件產生之前在傳輸緩衝區中的最小字元數。

說明:
若設定 Sthreshold 屬性為 0(預設值),資料傳輸事件不會產生 OnComm 事件。
若設定 Sthreshold 屬性為 1,當傳輸緩衝區完全空時,MSComm 控制元件產生 OnComm 事件。
如果在傳輸緩衝區中的字元數小於 value,CommEvent 屬性設定為 comEvSend,併產生 OnComm 事件。
comEvSend 事件僅當字元數與 Sthreshold 交叉時被啟用一次。
例如,如果 Sthreshold 等於 5,僅當在輸出佇列中字元數從 5 降到 4 時,comEvSend 才發生。
如果在輸出佇列中從沒有比 Sthreshold 多的字元,comEvSend 事件將絕不會發生。

 //設定/獲得埠號,如nNewValue=1表示COM1 CommPort(short newValue); 
 //設定/獲得接收緩衝區的大小,預設值為1024位元組 InBufferSize(short newValue); 
 //設定/獲得接收緩衝區內等待讀取的位元組數,引數為0表示清空緩衝區 InBufferCount(short newValue); 
 //設定/獲得接收緩衝區內用Input讀入的位元組數,
 設定該值為0表示Input讀取緩衝區內所有位元組 InputLen(short newValue); 
 //設定/獲得傳送緩衝區的大小,預設值為512位元組 OutBufferSize(short newValue); 
 //設定/獲得input讀取資料的揀出模式,
 0:Input通過一個Variant返回文字資料(預設)
 1、Input通過一個Variant返回二進位制資料的陣列 InputMode(long newValue) 
 //設定/獲得傳送緩衝區內等待發送的位元組數,0為清空傳送緩衝區 OutBufferCount(short newValue); 
 //開啟或關閉串列埠/判斷串列埠是否已經開啟,TRUE開啟,FALSE關閉 PortOpen(BOOL newValue); 
 //設定/獲得當接收緩衝區內的位元組個數達到或超過該值後產生程式碼為ComEvReceive的OnComm事件。 
 //如果設定為1,表示一接收到字元就產生事件 RThreshold(short newValue); 
 // 硬體握手使能 RTSEnable(BOOL newValue); 
 //設定/獲得串列埠通訊引數:波特率、是否奇偶校驗、資料位的個數、停止位,格式為“BBBB,P,D,S” Settings(LPCTSTR newValue); 
 //設定/獲得當傳送緩衝區內的位元組數少於該值後就產生程式碼為ComEvSend的OnComm事件 SThreshold(short newValue); 
 //寫串列埠,即向傳送緩衝區傳送一串字元。引數為VARIANT型別,需要將字串轉化為VARIANT型別物件
 Output(VARIANT newValue); 
 //讀串列埠,即從接收緩衝區讀取一串字元。
 返回值是VARIANT型別物件,需要將其轉化為字串 Input(); 
 //獲得/設定視窗上剛發生的事件(事件可理解為軟體意義上的“訊息”或硬體意義上的“中斷”),
 事件的傳送會導致OnComm訊息誕生 CommEvent();
 

*/