搜索
bottom↓
回复: 23

VB写的上位机串口接收软件处理速度没有sscom32高,是什么...

[复制链接]

出0入0汤圆

发表于 2016-10-27 09:38:50 | 显示全部楼层 |阅读模式
如题,在接收处理8字节数据的时候频率高于100赫兹就出现丢包的情况,不知道是VB的问题还是电脑解算串口数据延迟的问题,sscom32出的就不错,好像能处理1K的频率吧,但是sscom32发送高于1K也发不了,这是什么原因?用C++或其他语言写的软件会好一点吗?

出0入264汤圆

发表于 2016-10-27 09:53:08 | 显示全部楼层
串口本来就是低速的。而且windows API也很难做到实时,包括界面的刷新等等之类的。

出0入0汤圆

发表于 2016-10-27 09:55:05 | 显示全部楼层
没有问题吧,什么参数什么情况;
1KHZ是速率吗

出0入0汤圆

发表于 2016-10-27 09:56:11 | 显示全部楼层
电脑跟单片机不同。  电脑适合大批量,  没法跟单片机一样几十个US发零碎一个字节。

出0入0汤圆

 楼主| 发表于 2016-10-27 09:57:54 | 显示全部楼层
mcu5i51 发表于 2016-10-27 09:55
没有问题吧,什么参数什么情况;
1KHZ是速率吗

波特率115200,8字节数据长度,发送频率500赫兹,时间间隔就是2毫秒,上位机接收和显示软件是用VB写的。
这种情况会出现明显的丢包现象

出0入0汤圆

发表于 2016-10-27 09:58:22 | 显示全部楼层
哪个版本的VB?

出0入70汤圆

发表于 2016-10-27 10:20:36 | 显示全部楼层
VB用的是微软的MSCOMM.OCX,      性能差

你可以试下 换 PCommPro,  是DLL库来的

出0入0汤圆

发表于 2016-10-27 10:28:22 | 显示全部楼层
测试过了,SSCOM32完成不了

出0入0汤圆

发表于 2016-10-27 10:29:48 | 显示全部楼层
17ms一次

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-27 10:31:18 | 显示全部楼层
windows中要用多媒体定时器才行,你怎么弄的

出0入0汤圆

发表于 2016-10-27 10:40:28 | 显示全部楼层
本帖最后由 ilcvm 于 2016-10-27 10:41 编辑

才4kbyte/s,电脑串口的处理速度肯定足够,接受丢包估计是VB程序响应慢和缓存不足。能否实现稳定500Hz的发射频率关键是程序的响应速度,固定2ms的间隔响应对于windows这种非实时系统估计需要有特殊方法。

出0入0汤圆

发表于 2016-10-27 10:40:46 | 显示全部楼层
mcu5i51 发表于 2016-10-27 10:31
windows中要用多媒体定时器才行,你怎么弄的

多媒体也只能ms为单位,  楼主估计想跟单片机一样几十个us甚至几个us间隔。。,。

出0入0汤圆

发表于 2016-10-27 14:32:01 | 显示全部楼层
陶新成 发表于 2016-10-27 09:57
波特率115200,8字节数据长度,发送频率500赫兹,时间间隔就是2毫秒,上位机接收和显示软件是用VB写的。
...

以前我用 QT写一个的串口也是总丢包,当然 我是1MS 发送一次,一次是6byte。解决方案是:接收开一个大buffer,每隔一段时间处理一下。

后来另一个项目用了921600的波特率,也有丢包,FT232的驱动这里设置一下,就好了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-10-27 15:50:57 | 显示全部楼层
xuboluan 发表于 2016-10-27 14:32
以前我用 QT写一个的串口也是总丢包,当然 我是1MS 发送一次,一次是6byte。解决方案是:接收开一个大buf ...

921600的波特率你是用的什么处理器?CPLD?

出0入0汤圆

 楼主| 发表于 2016-10-27 16:05:45 | 显示全部楼层
huangqi412 发表于 2016-10-27 10:40
多媒体也只能ms为单位,  楼主估计想跟单片机一样几十个us甚至几个us间隔。。,。 ...

我用STM32F407做的测试,工作频率168M,数据包长度64byte,发送最短时间间隔是17ms,也不太好做到微秒级

出0入0汤圆

发表于 2016-10-27 16:19:54 | 显示全部楼层
估计是VB中处理方法不对,上位机串口只是接收的话,下位机1ms发8个字节也不会丢包,当然如果是通过判断两个字节数据间隔来分包的话,ms级的时间windows系统确实不好做可靠

出0入0汤圆

发表于 2016-10-27 16:38:03 | 显示全部楼层
陶新成 发表于 2016-10-27 16:05
我用STM32F407做的测试,工作频率168M,数据包长度64byte,发送最短时间间隔是17ms,也不太好做到微秒级 ...

现在单片机动不动就是CM4,有些TTL串口可以上M,  一次发送1,2个字节,不就是us间隔了。
电脑只能如你楼上13楼所说,隔一段时间攒一堆一块处理。

出0入0汤圆

发表于 2016-10-27 16:58:51 来自手机 | 显示全部楼层
高波特率时,用232接口(三线共地)估计会有问题。改用422接口(差分),应该不会出问题的。

出0入0汤圆

发表于 2016-10-27 19:50:52 来自手机 | 显示全部楼层
系统调度时间问题,刚才楼上哪位说对了。

出0入0汤圆

发表于 2016-10-27 23:03:04 来自手机 | 显示全部楼层
以前用VB6写串口程序,接收20次的固定数据,也是丢帧,后来干脆换VC,利用多线程进行串口接收就再没出现过

出0入0汤圆

发表于 2016-11-4 09:32:36 | 显示全部楼层
我用vb.net  115200 bps, 发包频率 1K的貌似没出现问题。

出0入0汤圆

发表于 2016-11-4 09:44:19 | 显示全部楼层
串口本来就不太适合高速大量数据的场合

出0入0汤圆

发表于 2016-11-4 14:41:51 | 显示全部楼层
100Hz,如果丢包了,一定软件写的有问题

出0入0汤圆

发表于 2017-2-21 21:47:36 | 显示全部楼层
一品电子 发表于 2016-11-4 09:32
我用vb.net  115200 bps, 发包频率 1K的貌似没出现问题。

请教下,是上位机主动发送1K吗还是下位机主动呢,若上位机主动的话,发包时间间隔要小于1ms,windows 系统下好操作吗,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 21:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表