登录
首页 串口通信 串口通信
回帖 发帖
正文

主题:232通讯的一点小疑问

点击:1517 回复:15

各位好,弱弱的问个232软件设计的小问题,见笑了,请大家多多指点
232 硬件上可以实现全双工,那在设计软件时,我如果要全双工通讯,那在接收结束之后是否要禁止接收,等到接收数据处理完了再使能接收?如果不禁止接收,那是否要设计双缓冲来避免接收到的数据还未处理完就被新接收的数据覆盖了?表情
11-05-08 09:36
双工的话,发送与接收不是同一寄存器,没有必要禁止;
11-05-08 10:11
谢谢您的回复,但我说的不是被发送寄存器覆盖了,而是前一次接收到的数据还没有处理完就被新一轮接收的数据给覆盖了
11-05-08 11:14
表情
路过的人不能留下点脚印吗?
11-05-08 13:51
双工是发送和接受同时的 但是他们的地址是一样的,但是再他们不会同时用这个地址,所以你不需要担心这种问题了。
11-05-08 16:11

引用 不了忧伤 在 2011/5/8 11:14:00 发言【内容省略】

是的,要不你的处理速度足够快,要不缓冲区足够大.
所谓双缓冲,其实不是硬件的缓冲,是你自己另外开辟的缓冲.也就是说,接收的数据,不能马上执行复杂的运算来处理的话,那就简单地运送到别的更大的存储空间去,等待有空再处理.然后flush接收缓冲区,避免接收丢失溢出.
11-05-08 16:33
呵呵,谢谢您的关注,我想我没有把我的问题描述准确
11-05-08 18:07
那你能把你的问题描述准确点吗?
11-05-08 21:39

引用 pqsh 在 2011/5/8 16:33:12 发言【内容省略】

我已经开辟了一个存储空间来存放接收的数据,具体点说,我在接收中断中已经将接收到的一帧数据存放到了A数组中,对接收包的分析处理是放在主循环的,我的问题是,如果在接收完成之后不禁止接收,则主循环可能还来不及处理完当前帧,下一帧数据又来了,那如果我在主循环中还是用数组A,那这个时候的数组A可能就不是我要处理的那帧数据了,所以我想问,我在接收中断中是否要再开辟个数组B来存,主循环中对数组B进行处理
11-05-08 22:56
你算算接收与发送数据的速度吧;
11-05-08 23:01

上一页下一页

工控新闻

更多新闻资讯