串口缓冲区接收数据问题

herozhang002 2010-04-05 11:18:38
串口通信程序,采用PCOMM控件
缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出,打算定义2个ReceiveBuf缓冲区,ReceiveBuf1和ReceiveBuf2交替使用,ReceiveBuf1写入数据的同时,ReceiveBuf2将数据保存后清空,请问这种方法可行么?如果可行,在此过程中,哪些问题需要考虑,如果不可行,请问大家有什么好的建议?
数据的采样周期为1s
...全文
1029 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbgchen 2011-06-21
  • 打赏
  • 举报
回复
也遇到同样的问题,学习.
hello_en 2010-04-27
  • 打赏
  • 举报
回复
拷贝,队列处理。
zhouzhou78 2010-04-26
  • 打赏
  • 举报
回复
学习,谢谢!
bdbdbdbd 2010-04-22
  • 打赏
  • 举报
回复
已阅!
lhy 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 herozhang002 的回复:]
不会长时间保留在串口缓冲区.我是担心数据接受后的解码过程,如果解码时间过长,影响到下一帧数据的接受怎么处理..
之前看到别人的帖子:"不要在串口中断服务程序中来读取串口数据,可以在中断服务程序中触发一个事件,自己起一个线程待事件,收完并校验数据正确后发送消息至UI来处理及显示。",但是不知道如何在中断服务程序中触发一个事件,起一个线程,能不能指导一下??
拜托

[/Quote]
你没有更改“串口中断服务程序”,那句话和你无关。
wangxiangsjz 2010-04-17
  • 打赏
  • 举报
回复
SPCOMM的缓冲区也可以加大
抖打乒乓球 2010-04-15
  • 打赏
  • 举报
回复
可以把串口的物理缓冲去设置大些.
wangxiangsjz 2010-04-13
  • 打赏
  • 举报
回复
1、定义两个缓冲区是可以的。
2、不知道你用什么串口控件,我一直用SPCOMM。它自己就有一个缓冲区,把接收到的数据保存在其中。
3、在中断程序或串口事件中把收到的数据传送到你定义的缓冲区中。
zhtoad 2010-04-12
  • 打赏
  • 举报
回复
这个问题我也遇到过。

不会长时间保留在串口缓冲区.我是担心数据接受后的解码过程,如果解码时间过长,影响到下一帧数据的接受怎么处理..
之前看到别人的帖子:"不要在串口中断服务程序中来读取串口数据,可以在中断服务程序中触发一个事件,自己起一个线程待事件,收完并校验数据正确后发送消息至UI来处理及显示。",但是不知道如何在中断服务程序中触发一个事件,起一个线程,能不能指……
zhtoad 2010-04-11
  • 打赏
  • 举报
回复
学习了。谢谢。
herozhang002 2010-04-09
  • 打赏
  • 举报
回复
恩,谢谢,我之前对解码时间不太确定,担心时间太长会影响串口数据的接收,经过朋友的讲解,觉得你的这个说法还是可以试一下的.
[Quote=引用 3 楼 xjq2003 的回复:]
引用 2 楼 herozhang002 的回复:
不会长时间保留在串口缓冲区.我是担心数据接受后的解码过程,如果解码时间过长,影响到下一帧数据的接受怎么处理..
之前看到别人的帖子:"不要在串口中断服务程序中来读取串口数据,可以在中断服务程序中触发一个事件,自己起一个线程待事件,收完并校验数据正确后发送消息至UI来处理及显示。",但是不知道如何在中断服务程序中触发一个事件,起一个线程,能不能指……
[/Quote]
xjq2003 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 herozhang002 的回复:]
不会长时间保留在串口缓冲区.我是担心数据接受后的解码过程,如果解码时间过长,影响到下一帧数据的接受怎么处理..
之前看到别人的帖子:"不要在串口中断服务程序中来读取串口数据,可以在中断服务程序中触发一个事件,自己起一个线程待事件,收完并校验数据正确后发送消息至UI来处理及显示。",但是不知道如何在中断服务程序中触发一个事件,起一个线程,能不能指导一下??
拜托



引用 1 楼 zh……
[/Quote]串口也是有缓存的,不必要担心解码时间过长,影响到下一帧数据的接受;只要不停接受就可以了,估计你解码过程也不会超过1秒吧
herozhang002 2010-04-06
  • 打赏
  • 举报
回复
不会长时间保留在串口缓冲区.我是担心数据接受后的解码过程,如果解码时间过长,影响到下一帧数据的接受怎么处理..
之前看到别人的帖子:"不要在串口中断服务程序中来读取串口数据,可以在中断服务程序中触发一个事件,自己起一个线程待事件,收完并校验数据正确后发送消息至UI来处理及显示。",但是不知道如何在中断服务程序中触发一个事件,起一个线程,能不能指导一下??
拜托


[Quote=引用 1 楼 zhouzhangkui 的回复:]
“缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出”
收到数据立马接收,保存在自己定义的数据变量里 就是了
你难道想长时间留在串口缓冲区?
[/Quote]
周药师 2010-04-05
  • 打赏
  • 举报
回复
“缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出”
收到数据立马接收,保存在自己定义的数据变量里 就是了
你难道想长时间留在串口缓冲区?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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