VC串口异步和同步通信方式问题

yzh_1983_yzh 2008-06-11 10:29:25
CreateFile创建串口时可以通过FILE_FLAG_OVERLAPPED来设置通信模式为异步或同步
在和单片机通信时要保持下位机和上位机设置相同才能保证正常通信
请问VC里的异步和单片机的异步是一个意思么?VC里又管这个方式叫I/O口重叠
在有的文章里还看到管这种方式叫多线程方式
这跟VC里讲的多线程有关系么,就是说我设置为异步通信方式,然后用单线程读写串口行么?
多谢解答!
...全文
994 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zaodt 2008-06-11
  • 打赏
  • 举报
回复

我建议你这么做:


串行口硬件的同步跟这里说的同步不是一个意思。

刚开始,最好是用同步的方式,即不要设置 FILE_FLAG_OVERLAPPED ,这里改用 NULL

同步方式的特点就是:

ReadFile(...);

这时,程序会停在这里,等待数据上来;

当在指定的时间到了后数据还没有上来,函数才返回;

这时可以判断它其中的一个参数,可以知道没有收到指定的字节数。

具体的,看下面这篇文章,讲的很清楚:

http://vckbase.com/document/viewdoc/?id=1114


同步使用没问题后,再研究异步,我就是这么学过来的。
smneo 2008-06-11
  • 打赏
  • 举报
回复
单片机没做过.
CreateFile异步说的是...例如你读写的时候要花费一段时间..
程序,不必等待读写完成,然后在继续往下执行..
可以在ReadFile..WriteFile..以后继续执行下面的程序..等R,W完成的时候,它会通知你..
你在对它进行处理..
其实这里的线程是系统的线程...你自己的程序里.有一个线程就可以..
yzh_1983_yzh 2008-06-11
  • 打赏
  • 举报
回复
首先谢谢楼上的解答!!
如果采用同步方法读串口,我是不是只能定时查询串口,然后Readfile()
我想用事件触发的方式读取串口数据,这里涉及一个WaitCommEvent()函数,这个函数说是要阻塞线程
这样是不是只能采用异步方式,并且创建一个线程用于监视串口事件
也就是说我想用同步方式并且采用事件触发读取串口是不可能的?
sorry刚接触上位机这块,对于很多概念还不理解

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧