熟悉WriteFile函数吗?会用它写入串口设备吗?------太好了! 老大,找的就是你!

CYQ_96 2001-07-12 03:29:05
不知用WriteFile函数向串口写入一串信息的时候,它是原样写入呢,还是要进行一些处理呢?比如:把那一串信息的每一个8位字符加头尾同步位和奇偶检验位?
...全文
152 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ximuwa 2001-07-17
各位串口高手好好讲讲!俺旁听!~~~
回复
neomeng 2001-07-16
很简单的,893126
回复
wuzhujian 2001-07-16
在Windows环境下,如果用PC机对PC机通信,双方配置相同的DCB,便可通信。为了在通信中不丢数据,双方应约定一个通信协议来完成,一应一答。为实时得到数据,可以创建一个后台线程,调用::ClearCommError(m_Com, &Count, &cs)来监视接收缓冲区是否有数据。使用后台线程有与主线程同步的问题。后台线程可以用SendMessage()来通知主线程。
如还有问题,可来信:zjwu@joinhands.com.cn
回复
hooligan 2001-07-12
数据不会丢失的,系统收到数据后会自动放到接收缓冲区中去,调ReadFile时,再从接收缓冲区中读出来。另外,如果不想用查询方式,可以创建一个监视线程,调用WaitCommEvent来监视是否收到数据。
回复
CYQ_96 2001-07-12
另:dcb已经配置好了!
回复
CYQ_96 2001-07-12
如果ReadFile只是读当前到达的字节,那串口应该在接到一个字节时发一个类似中断请求的东西,否则怎能知道什么时候应该去ReadFile呢?因为用循环检测法好象是不行的,在windows环境下,如果其它进程占用了大量CPU时间的话,循环检测串口的进程可能会被延迟一下,那时再ReadFile可能丢字节了。
有没有人知道在Windows环境下串口通信是怎样解决这个问题的呢?还请不吝赐教。
不过最好用API函数解决,因为我有个程序已编得差不多了,不想临时做太大的变动。
回复
ximuwa 2001-07-12
缓冲区阿有,这些是硬件完成的,设备无关性!

你要做的是配置dcb以及读写同步
回复
clack 2001-07-12
我想ReadFile只是读当前到达的字节,之前到达的如果没有做缓冲的话应该丢弃了,不会混乱
回复
CYQ_96 2001-07-12
up
回复
CYQ_96 2001-07-12
同步位和奇偶检验位已经设好了,我还想更深入地问一下:
除了同步位和奇偶检验位以外,还会不会加一些附加信息呢?比如说,为了能在另一端让ReadFile函数读出这一串信息,ReadFile和Write之间会不会有类似“信息开始”,“信息结束”的某种形式的约定?否则,ReadFile那一端岂不是只能8位8位的读,而难以区分出一次WriteFile到底Write了多少个8位的信息过来? 如果这种情况发生的话,在接收端开始接收时如发送端已多次WriteFile了,那岂不是要一片混乱?
回复
ZHENG017 2001-07-12
这些都是由硬件uart 8250完成的.
你只需将dcb设置成你所需要的就行了.
回复
CYQ_96 2001-07-12
up一下
回复
CYQ_96 2001-07-12
那除了同步位和奇偶检验位以外,还会不会加一些附加信息呢?比如说,为了能在另一端让ReadFile函数读出这一串信息,ReadFile和Write之间会不会有类似“信息开始”,“信息结束”的某种形式的约定?否则,ReadFile那一端岂不是只能8位8位的读,而难以区分出一次WriteFile到底Write了多少个8位的信息过来? 如果这种情况发生的话,在接收端开始接收时如发送端已多次WriteFile了,那岂不是要一片混乱?
回复
wuzhujian 2001-07-12
波特率及同步位和奇偶检验位由API函数SetCommState()确定,其中用到一个DCB结构。可先使用GetCommState()对DCB结构初始化。
WriteFile函数向串口写入一串信息是有效数据,同步位和奇偶检验位是硬件加的。

回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-12 03:29
社区公告

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