eVC编程遇到的各种问题之——串口相关

本文介绍了在eVC编程中,如何使用SetCommMask()设置串口通信事件以及WaitCommEvent()判断事件是否发生的详细过程。这两种API函数通常用于事件通知法的串口通信,涉及到多线程和消息机制,通过创建监视线程来监视串口事件,并根据事件类型向主线程发送不同消息进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:SetCommMask()和WaitCommEvent()

 

SetCommMask()
用途:设置串口通信事件。
原型:BOOL SetCommMask(HANDLE hFile,
DWORD dwEvtMask
);
参数说明:
-hFile:串口句柄
-dwEvtMask:准备监视的串口事件掩码
注:在用api函数撰写串口通信函数时大体上有两种方法,一种是查寻法,另外一种是事件通知法。
这两种方法的区别在于收串口数据时,前一种方法是主动的周期性的查询串口中当前有没有
数据(查询法);后一种方法是事先设置好需要监视的串口通信事件,然后依靠单独开设的辅助线程进行
监视该事件是否已发生,如果没有发生的话该线程就一直不停的等待直到该事件发生后,将
该串口事件以消息的方式通知主窗体,然后主窗体收到该消息后依据不同的事件性质进行处理。(类似中断)
比如说当主窗体收到监视线程发来的RX_CHAR(串口中有数据)的消息后,就可以用ReadFile()
函数去读串口。该参数有如下信息掩码位值:
EV_BREAK:收到BREAK信号
EV_CTS:CTS(clear to send)线路发生变化
EV_DSR:DST(Data Set Ready)线路发生变化
EV_ERR:线路状态错误,包括了CE_FRAME/CE_OVERRUN/CE_RXPARITY 3钟错误。
EV_RING:检测到振铃信号。
EV_RLSD:CD(Carrier Detect)线路信号发生变化。
EV_RXCHAR:输入缓冲区中已收到数据。
EV_RXFLAG:使用S

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值