使用线程监视串口,处理串口发送的信息问题

T2 2003-11-24 11:54:34
线程监视串口程序做好了,可是在处理时有难题,如下:
串口不停的发送以STR为头和ETX为尾中间带有其他信息的串,如:
STR**********ETX
我要处理该信息,从中获取******的部分,可是线程运行速度很快,串口发送信息慢
如;
串口发了STR****线程就接受了STR****可是我不能凭这半段信息就取出我要的部分,我必须等整条信息都收到了我才能处理,这段程序我不知道如何编写,请有这方面经验的朋友提供思路或代码,谢谢
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LVOLCANO 2004-01-13
  • 打赏
  • 举报
回复
学习
onionertou 2004-01-13
  • 打赏
  • 举报
回复
把串口的SxBufferThreshold(RxBufferThreshold)的值改大没有用的,这个问题我也遇到过,其实是串口速率太低来不及程序的反应速度。线程我没有用过,但在vb6里我一般用timer控件来对接收进行处理,你可以用空循环来做,让程序停顿在那儿,然后转移去做别的事情。

do
doevents(这个是vb6里面的转让cpu控制)
loop until 接收到结尾的“EXT”字符
。。。接收到了全部的一帧数据再做处理


其实最重要的是同步的问题。我觉得你在STR后面可以加上一个数字,表示整个帧的长度,这样也更方便你做判断,比如STR812357EXT,8表示后面有8个字符。你试试
shwen 2003-11-24
  • 打赏
  • 举报
回复
每次都一个字节:
如果是STR就把缓冲区清空
如果是ETX就把缓冲区内容输出
否则把读到的字节放到缓冲区的后面

stonegoldaustin 2003-11-24
  • 打赏
  • 举报
回复
你试试把串口的SxBufferThreshold(RxBufferThreshold)的值设大点呢.
还有,你最好把你处理数据的流程贴一下,希望能帮助你.
T2 2003-11-24
  • 打赏
  • 举报
回复
...

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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