Windows串口通信有关的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网站了 MSComm Control (MSComm Control) | Microsoft Learn而且还提供VB6.0的例程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技塑未来-苏导

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值