MSComm控件的属性和事件

1、MSComm控件的属性和事件       
       (1)CommPort:用于设置并返回连接的串口号,Windows将使用该串口和外界通信。
       (2)Settings:用于设置并返回数据传输的通信参数。例如设置值为“9600,n,8,<?xml:namespace prefix = st1 />1”时,表示数据传输速率为9600bit/s,没有奇偶校验,数据位是8位,停止位是1位。
       (3)PortOpen:取值为true或false,用于打开或者关闭端口。
       (4)InputMode:取值及其含义如表所示,用于设置或返回Input属性取回的数据的类型。

InputMode属性的设置值


常数
 值
 含义描述
 
ComInputModeText
 0
 数据通过Input属性以文本形式取回(默认)
 
ComInputModeBinary
 1
 数据通过Input属性以二进制形式取回
 

 

5)Inputlen:设置或返回一次从接收缓冲区中读取的字节数。
6)InPut:用于从接收缓冲区读取Inputlen长度的数据,并将接收到的数据赋予变量。

7)OutPut:用于向发送缓冲区写数据,OutPut属性可以发送文本或二进制数据。
8)Rthreshold:该属性为一阀值,当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件,用户可在OnComm事件处理程序中进行相应处理,若Rthreshold属性设置为0,则不产生OnComm事件。
9)Sthreshold:该属性亦为一阀值,当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件,若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是,仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm事件,其后就不再产生OnComm事件。
10)Handshaking:用于设置或者返回硬件握手协议,即PC机和通信设备之间为了控制流速而设定的内部协议。

11)InBufferSize: 设置或返回接收缓冲区的大小,默认值为1024B。
12)InBufferCount:设置或返回接收缓冲区中等待计算机接收的字节数。
13)OutBufferSize:设置或返回发送缓冲区的大小,默认值为512B。
14)OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字节数。
(2)C#编程要点 

1)串口属性设置 


AxMSCommLib.AxMSComm com;   //定义MSComm控件变量

com.CommPort = 1;                //设定串口号 

if(com.PortOpen)

com.PortOpen = false; //若该端口已经打开,则关闭该端口 

com.RThreshold = 1;      //当接收到数据时就触发OnComm事件 

//设置参数:数据传输速率为9600bit/s,没有奇偶校验,数据位是8位,停止位是1位 

com.Settings = " 9600,n,8,1"; 

com.Handshaking = MSCommLib.HandshakeConstants.comNone; //没有使用握手协议 

com.InputMode = MSCommLib.InputModeConstants.comInputModeText;//文本形式取回 

com.InputLen = 0;      //当设置为零时,在Input可用时读取所有的数据 

com.OnComm += new System.EventHandler(this.OnComm); //OnComm事件发生,加入列表 

com.PortOpen = true;      //打开端口                                                                                    

2)发送和接收数据数据发送的容易实现,只需将要发送的数据赋值给 Output,代码如下: 

axMSComm1.Output="This is a test";         //发送的数据字符串                                         

MSComm 控件采用查询或事件驱动方法从串口获取数据,由于前面 Rthreshold 属性设置为 1,所以只要有数据到达就会产生 OnComm 事件,实现接收数据代码如下: 

private void OnComm(object sender, System.EventArgs e) 

string recievemsg; //检查接收到的数据长度是否大于0,若大于0表示接收到数据 

if(com.InBufferCount > 0)                                   

recievemsg =(string)com.Input; 
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值