如何提高串口通信速度

bts2003 2009-12-13 09:54:29
硬件工程师开发了一块单片机板,只要按通信协议上位机发数据给下位机,下位机立即回数据,我用串口调试助手试过了,1分钟约可以收发最大6000,可是我用VB的MSCOMM编程,计时,1分钟约2400次,如何提高速度?要求是3600次以内。除出代码,计算机高速运行?
...全文
942 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmyxjw 2010-10-21
  • 打赏
  • 举报
回复
用API做的串口通讯比控件要快!
flfq 2010-10-20
  • 打赏
  • 举报
回复
如果对速度要求很高的话,可以下位机主动发送,上位机被动接收,单片机定时器的精度比pc要高很多。
Gujianda 2010-10-19
  • 打赏
  • 举报
回复
of123真是高手,说到点子上了。
我经常玩和单片机通信的事,你那点代码也不要保密了,贴出来,我帮必改。
tongfeng1981 2010-10-17
  • 打赏
  • 举报
回复
学习了
熊孩子开学喽 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bts2003 的回复:]
大哥,不要玩我呀?只是个EXE,哪有源程序?而且好像很慢????
字节到缓冲区,到串口,不通过控件,直接从API走?
用readfile
和writefile等函数!
[/Quote]
既然没源码,那要么你自己重新写一个,要么反编译去改EXE
of123 2010-09-01
  • 打赏
  • 举报
回复

1 应该不是波特率的问题。要改波特率,必须和底层一起改。现在的情况是,串口助手可以满足你的速率要求,而自己写的程序比较慢。

2 不要用 Timer 这类方式去查询串口的接收状态。用 OnComm 事件或循环查询都可以。注意一下你接收到数据后再发命令是如何衔接的。

3 对于串口这种低速接口,如果没有特殊的连续设置改变,我认为控件和 API 的差别不大。

综上所述,关键点在于你的程序架构。
efengxu 2010-08-31
  • 打赏
  • 举报
回复
我觉得有几种因素决定
1:波特率
2:你电脑的cpu
3:软件处理能力
carefire 2010-08-28
  • 打赏
  • 举报
回复

1. 更改到更高的波特率

2. 如果用VB的MSCOMM,可以:
1)不要用查询方式,而应事件方式,使用OnComm事件,并且不要在里面使用界面处理代码,如不要用类似这样的代码:Text1.Text = Text1.Text & Recv_Char
2)因为每次都收4个字节,所以可以设置Rthreshold=4,至少收到4个字符才触发一次OnComm事件,节省三次事件调用时间。
3)收到数据后,立即发送,利用对方发送时间内做数据处理。
  • 打赏
  • 举报
回复
怎么我的串口还没通啊,谁给个完整的源码瞧瞧啊?
unsv29mj 2009-12-19
  • 打赏
  • 举报
回复
给你找到1个

comdebug.exe 这个我用过 logo是个黄色的 纸飞机 很强大!!!

在CSDN里面有下载


http://download.csdn.net/down/467118/huhonggong

还有那个单片机波特率和助手的要设置一样的!


如果这个助手都搞不定 那么很抱歉!让那个写单片机程序的回家抱孩子去!
unsv29mj 2009-12-19
  • 打赏
  • 举报
回复
你的问题我看的有点糊涂!!

你的意思是说:每分钟串口助手发送3600个字符给单片机。

是这个意思吧??



一分钟 = 60秒 = 60000毫秒

9600的话 一个字符是1.04毫秒

那么波特率9600的话 就是能发6万个字符 跑去乱七八糟的时间 如果单片机程序写得再烂,发3600个字符没啥问题。

所以你的问题应该出现在串口助手编写的有点对付不了这种高速发数的情况

所以建议你换个串口助手

一般来说 用C++编写的处理速度要好很多

所以你的任务是要找到一个好的串口助手
用户 昵称 2009-12-19
  • 打赏
  • 举报
回复
6000 * 9 = 54000

54000 / 60 = 900字节/秒

所以你这块板通信速率应该是9600以上。

估计是19200之类的,速度限制应该是软件的。
langchen456 2009-12-18
  • 打赏
  • 举报
回复
qqq
贝隆 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bts2003 的回复:]
大哥,不要玩我呀?只是个EXE,哪有源程序?而且好像很慢????
字节到缓冲区,到串口,不通过控件,直接从API走?
用readfile
和writefile等函数!
[/Quote]

你说的很对
贝隆 2009-12-13
  • 打赏
  • 举报
回复
bts2003 2009-12-13
  • 打赏
  • 举报
回复
大哥,不要玩我呀?只是个EXE,哪有源程序?而且好像很慢????
字节到缓冲区,到串口,不通过控件,直接从API走?
用readfile
和writefile等函数!
贝隆 2009-12-13
  • 打赏
  • 举报
回复
这是一个使用API写得串口通信控件,包括代码,你可以看看:http://download.csdn.net/source/1887318
比较一下到底是MSComm快,还是API快
我个人认为API快
bts2003 2009-12-13
  • 打赏
  • 举报
回复
发5个字节,收4个字节,串口调试助手1分钟最大约6000次,VB的MSCOMM编程2400次,
是否API会快些?
字节到缓冲区,出去串口?直接用底层的API快些?
咸清 2009-12-13
  • 打赏
  • 举报
回复
你试的数据有多大啊?就一次一个字符那肯定快了~~~
计算机高速运行,仅仅是消息处理的速度快了~~~

速度也是受波特率限制的,你把波特率提高一点不就相对快很多了吗?

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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