送分100分:关于串口数据缓存区数据管理问题

NOBUTYOU 2009-11-30 09:37:35
1、是不是发送缓冲区一旦有了数据对方接收缓冲区就马上有了相同的数据。
2、发送缓冲区的数据是如何清除的。

3、接收缓冲区的数据是读了几个字节,这几个字节就自动清除掉吗?
还有几个问题,想起来再问。
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yubsh 2009-12-17
  • 打赏
  • 举报
回复
#3说的意思你没理解。串口一般自己有个FIFO缓冲区,多是16字节的,这属于硬件范畴,你无需太多关注。在软件开发上,读来的数据和写出的数据要自己开辟个缓冲区去管理它,即,把要输出的数据写入输出缓冲区,而把读来的数据放入输入缓冲区。上层软件只与这两个缓冲区打交道,而物理上的收发是靠中断来实现的。

比较麻烦,建议你去找例程。
一条晚起的虫 2009-12-01
  • 打赏
  • 举报
回复
如果在API层面(非驱动层),则

1、是不是发送缓冲区一旦有了数据对方接收缓冲区就马上有了相同的数据。
//需要硬件传输时间。
2、发送缓冲区的数据是如何清除的。
// PurgeComm清除,或者数据已经到了对方接收缓冲区,则自动清除。
3、接收缓冲区的数据是读了几个字节,这几个字节就自动清除掉吗?
// 是的。
fantacn 2009-11-30
  • 打赏
  • 举报
回复
NOBUTYOU 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 successqigao 的回复:]
硬件自带的缓冲通常不过十几个字节。作应用时,程序一般还应开辟更大的缓冲区,根据不同的应用可以有几十字节甚至几KB。程序缓冲区应当采用FIFO的环形队列结构。缓冲区分发送缓冲和接收缓冲。这样,中断服务程序只要负责对缓冲区的操作即可,所以问题中
1、需要看你发送的时间和速度等,理论上只要发送成功是没问题的。
2、发送缓冲区需要调用函数来清空,这个是针对软件开辟的缓冲区。
3、接收缓冲区硬件是读取后就清空了,但是软件开辟的需要手工清除。
[/Quote]

第2项,我怎么知道对方读取了哪些内容从而进行清理呢。
第3项,软件开辟的是什么意思。 对方发送的信息可以直接发到软件开辟的缓冲区吗?
江川 2009-11-30
  • 打赏
  • 举报
回复
硬件自带的缓冲通常不过十几个字节。作应用时,程序一般还应开辟更大的缓冲区,根据不同的应用可以有几十字节甚至几KB。程序缓冲区应当采用FIFO的环形队列结构。缓冲区分发送缓冲和接收缓冲。这样,中断服务程序只要负责对缓冲区的操作即可,所以问题中
1、需要看你发送的时间和速度等,理论上只要发送成功是没问题的。
2、发送缓冲区需要调用函数来清空,这个是针对软件开辟的缓冲区。
3、接收缓冲区硬件是读取后就清空了,但是软件开辟的需要手工清除。
wocow3 2009-11-30
  • 打赏
  • 举报
回复
传输也需要时间啊,对方硬件级驱动需要时间处理啊,“马上”如何理解
vincent_1011 2009-11-30
  • 打赏
  • 举报
回复
一会我也来看回帖。。。。。。。。

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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