社区
C++ Builder
帖子详情
串口缓冲区接收数据问题
herozhang002
2010-04-05 11:18:38
串口通信程序,采用PCOMM控件
缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出,打算定义2个ReceiveBuf缓冲区,ReceiveBuf1和ReceiveBuf2交替使用,ReceiveBuf1写入数据的同时,ReceiveBuf2将数据保存后清空,请问这种方法可行么?如果可行,在此过程中,哪些问题需要考虑,如果不可行,请问大家有什么好的建议?
数据的采样周期为1s
...全文
1105
17
打赏
收藏
串口缓冲区接收数据问题
串口通信程序,采用PCOMM控件 缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出,打算定义2个ReceiveBuf缓冲区,ReceiveBuf1和ReceiveBuf2交替使用,ReceiveBuf1写入数据的同时,ReceiveBuf2将数据保存后清空,请问这种方法可行么?如果可行,在此过程中,哪些问题需要考虑,如果不可行,请问大家有什么好的建议? 数据的采样周期为1s
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
“缓冲区接收数据,考虑到接收时间长,数据量比较大,为了防止数据从缓冲区溢出”
收到数据立马接收,保存在自己定义的数据变量里 就是了
你难道想长时间留在串口缓冲区?
22. USART_CircleBuffer
串口
接收环形
缓冲区
STM32
串口
接收,环形
缓冲区
方式实现
串口
接收
QT
串口
,重点解决了
串口
接收数据
分包或者不完整的
问题
QT开发的
串口
代码,解决了
串口
接收数据
分包或者不完整的
问题
C#
串口
通信(彻底解决C#
串口
通信中的数据丢失
问题
)
以网上某位大虾的源码为版本,沿用了其可用的代码部分。对其余欠妥部分进行了改造。不要资源分,是大家不用为积分而烦恼。出来混都不容易,希望大家相互照应!
stm32
串口
1
串口
2 DMA方式收发数据
stm32
串口
1
串口
2,DMA方式收发数据。使用定时器定时查询DMA接收到的数据,当
串口
的数据空闲中断,将数据拷贝到
缓冲区
,交由其他程序处理。可以接收任意大小的数据包。本方法占用CPU时间极少,尤其是波特率很高时,效果更加明显。
STM32_HAL+
串口
+DMA发送和不定长度数据接收
STM32_HAL+
串口
+DMA发送和接收,可做项目研发,
串口
用DMA发送和接收,减轻CPU负担。
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章