社区
C++ Builder
帖子详情
串口缓冲区接收数据问题
herozhang002
2010-04-05 11:18:38
串口通信程序,采用PCOMM控件
缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出,打算定义2个ReceiveBuf缓冲区,ReceiveBuf1和ReceiveBuf2交替使用,ReceiveBuf1写入数据的同时,ReceiveBuf2将数据保存后清空,请问这种方法可行么?如果可行,在此过程中,哪些问题需要考虑,如果不可行,请问大家有什么好的建议?
数据的采样周期为1s
...全文
1029
17
打赏
收藏
串口缓冲区接收数据问题
串口通信程序,采用PCOMM控件 缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出,打算定义2个ReceiveBuf缓冲区,ReceiveBuf1和ReceiveBuf2交替使用,ReceiveBuf1写入数据的同时,ReceiveBuf2将数据保存后清空,请问这种方法可行么?如果可行,在此过程中,哪些问题需要考虑,如果不可行,请问大家有什么好的建议? 数据的采样周期为1s
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
“缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出”
收到数据立马接收,保存在自己定义的数据变量里 就是了
你难道想长时间留在串口缓冲区?
STM32进阶之
串口
环形
缓冲区
实现
这种处理方式是没有
缓冲区
的,当数量太大的时候,亦或者当数据接收太快的时候,我们来不及处理已经收到的数据, 那么,当再次收到数据的时候,就会将之前还未处理的数据覆盖掉。那么就会出现丢包的现象了,对我们的...
串口
接收带有FIFO
缓冲区
串口
中断
接收数据
,将数据存到FIFO
缓冲区
(利用单链表)。代码里FIFO的进栈出栈都有写的易懂,希望对有需要的人有所帮助。
Qt 上位机
串口
编程 Modbus编程
串口
(Serial Port),也称串行通讯接口(通常指COM口),
串口
通信是指将数据一个比特一个比特地逐位进行传输的通信模式。其特点是通信线路简单,传送速度较慢。Qt
串口
通信是借助一个QSerialPort的对象来方便的对...
STC15W4K16S4的
串口
通信(环形队列
缓冲区
)
参考STC官方例程,使用自编的库函数进行
串口
配置。并设计了环形队列作为
串口
缓冲区
,可以方便的移植到其他的处理器上使用。
QT QSerialPort 封装,阻塞方式发送数据后等待读取
缓冲区
数据结果,使用QT信号量阻塞,线程中初始化
串口
和读取数据。
QT QSerialPort 封装,阻塞方式发送数据后等待读取
缓冲区
数据结果,使用QT信号量阻塞,线程中初始化
串口
和读取数据。
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章