[MSComm]串口通信有关的MSComm控件

    问题描述:一般单片机、ARM、FPGA一类的板子基本都会带有RS232串口,因为协议简单,而且成熟,有许多现成的东西可以借鉴使用。在上位机通过串口获取下位机传来的信息或数据,Windows下一般有(1)使用开发环境自身提供的串口操作接口函数;(2)使用ActiveX控件MSComm;(3)直接调用WindowsAPI实现串口操作。直接调用 WindowsAPI实现串口操作实现难度相对要大一些,要对Windows底层API比较熟悉,而且这些事情MSComm已经做好了,因此下面重点了解MSComm控件。
    每个MSComm控件对应一个串口,若需访问多个串口时必须使用多个MSComm控件。
    MSComm:ActiveX控件,可以在PC操作串口发送和接收数据,支持查询方式和中断方式(Windows下称为事件驱动方式)。
    中断方式:当串口有数据到达或有数据写入到串口缓冲中时,就会触发中断,可以使用OnComm捕获事件并进行处理。这种方式响应及时,比轮询方式效率要高。
    查询方式:实际上仍热是事件驱动的,需要检查CommEvent属性值来查询事件。
    MSComm常用属性:
    CommPort:设置并返回通讯端口号
    Settings:以字符串形式设置并返回波特率、奇偶校验、数据位、停止位
    PortOpen: 设置并返回通讯端口的状态。也可以打开和关闭端口
   Input:从接收缓冲区返回和删除字符
   InputLen:设置并返回input属性从接收缓冲区读取的字符数
   Output:向传输缓冲区写一个字符串
  RThreshold:在设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回要接收的字符数
   CTSHolding:确定是否可通过查询CTS线的状态发送数据
  SThreshold:设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数
   CDHolding:通过查询CD线的状态确定当前是否有传输
   DSRHolding:确定DSR线的状态
  EOFEnable:确定在输入过程中MSComm控件是否寻找文件结尾(EOF)
   MSComm 控件的事件:
   MSCOMM 控件只使用一个事件 OnComm ,用属性 CommEvent 的十七个值来区分不同的触发时机。主要有以下几个:   
   (1)CommEvent=1 时:传输缓冲区中的字符个数已少于 Sthreshold( 可设置的属性值 )
   (2)CommEvent=2 时:接收缓冲区中收到 Rthreshold( 可设置的属性值 ) 个字符,利用此事件可编写接收数据的过程
   (3)CommEvent=3 时: CTS 线发生变化
   (4)CommEvent=4 时: DSR 线发生变化
   (5)CommEvent=5 时: CD 线发生变化
   (6)CommEvent=6 时:检测到振铃信号
   另外十种情况是通信错误时产生,即错误代码
    参考资料:更详细的资料当然是参考Microsoft的msdn网站了 http://msdn.microsoft.com/en-us/library/aa259393(v=vs.60).aspx而且还提供VB6.0的例程。

你可能感兴趣的:(通信,串口,MSCOMM)