PB9串口、网口数据接收工具

 

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();
 

*/