关闭

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

标签: MSComm串口通信
408人阅读 评论(0) 收藏 举报
分类:
   问题描述:一般单片机、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的例程。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:243685次
    • 积分:3788
    • 等级:
    • 排名:第8485名
    • 原创:287篇
    • 转载:16篇
    • 译文:0篇
    • 评论:18条
    最新评论