amobbs.com 阿莫电子技术论坛

标题: 花了点时间写了个串口工具,分享给大家 [打印本页]

作者: 442502587    时间: 2018-5-20 23:19
标题: 花了点时间写了个串口工具,分享给大家
本帖最后由 442502587 于 2018-5-21 14:07 编辑

使用API做的,UI第用的开源的SOUI,还可以,可能有BUG,但是没有捉到
作者: cpholr1    时间: 2018-5-20 23:26
搞串口调试工具,最核心最根本的东西,就是在满负荷数据流下,用hex显示不丢包。

其他界面什么的,都是浮云。


作者: jarodzz    时间: 2018-5-20 23:34
cpholr1 发表于 2018-5-20 23:26
搞串口调试工具,最核心最根本的东西,就是在满负荷数据流下,用hex显示不丢包。

其他界面什么的,都是浮 ...

可以詳細說明滿載不丟包技巧在哪裡?
或是有sample code可以提供,謝謝。
作者: cpholr1    时间: 2018-5-20 23:37
帮你测试了一下,低速下就已经丢的一塌糊涂了。

高速下,软件直接死机。

[attach]413026[/attach]


作者: cpholr1    时间: 2018-5-20 23:39
jarodzz 发表于 2018-5-20 23:34
可以詳細說明滿載不丟包技巧在哪裡?
或是有sample code可以提供,謝謝。

https://www.amobbs.com/thread-5672304-1-1.html?_dsign=6451ed57

丁丁/小猛大侠的SSCOM,是我用过的串口软件里面,为数不多的,完全不丢包的软件。


作者: cpholr1    时间: 2018-5-20 23:40
不丢包的,都是对齐的。

[attach]413027[/attach]
作者: cpholr1    时间: 2018-5-20 23:42
高速接收,依然没有丢包,还是对齐的。

[attach]413029[/attach]


作者: creep    时间: 2018-5-20 23:42
丁丁的串口的确很稳,较高波特率下HEX都不会丢。
作者: SUPER_CRJ    时间: 2018-5-20 23:44
cpholr1 发表于 2018-5-20 23:26
搞串口调试工具,最核心最根本的东西,就是在满负荷数据流下,用hex显示不丢包。

其他界面什么的,都是浮 ...

说的对,我之前写的一个上位机,用于解析CAN总线就是在大数据情况下丢包,解决了几个月,才解决好。
作者: jymt    时间: 2018-5-20 23:45
用过很多个串口,最后觉得丁丁的串口稳
作者: cpholr1    时间: 2018-5-20 23:53
打击的话说的有点多。楼主再接再厉,加油!
作者: 442502587    时间: 2018-5-20 23:55
cpholr1 发表于 2018-5-20 23:53
打击的话说的有点多。楼主再接再厉,加油!

用的是那个什么Cncomm库,软件门外汉,明天测试优化一下,

作者: jianfengxixi    时间: 2018-5-21 06:47
我貌似看到了楼主一脸懵逼的样子( ̄∇ ̄)
作者: wye11083    时间: 2018-5-21 08:04
jarodzz 发表于 2018-5-20 23:34
可以詳細說明滿載不丟包技巧在哪裡?
或是有sample code可以提供,謝謝。

你定时刷新窗口。否则一个一个字节刷新还不卡死。
作者: w282529350    时间: 2018-5-21 08:29
cpholr1 发表于 2018-5-20 23:26
搞串口调试工具,最核心最根本的东西,就是在满负荷数据流下,用hex显示不丢包。

其他界面什么的,都是浮 ...

还有一个长时间接收的问题,串口丁丁的115200最大负荷接收几分钟后崩溃。
作者: fghfguytu    时间: 2018-5-21 08:38
在上位机中,也搞过串口通讯,也曾碰到过丟包问题,一直优化呀优化,现在稳定了很多,但在大数据下,还是曾在偶尔 丟包现象
也想学学,大数据,高速下,怎么做,能不丟包
作者: w282529350    时间: 2018-5-21 08:42
fghfguytu 发表于 2018-5-21 08:38
在上位机中,也搞过串口通讯,也曾碰到过丟包问题,一直优化呀优化,现在稳定了很多,但在大数据下,还是曾 ...

串口工具基本上快成月经帖了,但大多数是皮毛,仅仅能满足自己的需求而已
作者: Excellence    时间: 2018-5-21 09:00
搞IAP时候,一包2048字节,网上只有一个串口助手可以。
现在好像WIN7 64BIT不能用了。
作者: 442502587    时间: 2018-5-21 09:38
Excellence 发表于 2018-5-21 09:00
搞IAP时候,一包2048字节,网上只有一个串口助手可以。
现在好像WIN7 64BIT不能用了。 ...

我准备开65535字节
作者: giantwjt88    时间: 2018-5-21 10:04
任何东西做精也不容易呀
作者: kinsno    时间: 2018-5-21 10:55
442502587 发表于 2018-5-21 09:38
我准备开65535字节

你这是开源的吗?用的那个国内那个cnconn,这个有几年没有更新了吧。。我改过一个软件好像还可以,能够大数据量,哪天我发上来看看。。
作者: cpholr1    时间: 2018-5-21 11:15
w282529350 发表于 2018-5-21 08:29
还有一个长时间接收的问题,串口丁丁的115200最大负荷接收几分钟后崩溃。 ...

5.xx版本 数据量超过一定值会自动清除部分字节。

不会导致软件崩溃了。

[attach]413057[/attach]


作者: Excellence    时间: 2018-5-21 11:21
442502587 发表于 2018-5-21 09:38
我准备开65535字节

加油。。。。。。
祝你成功。
作者: kebaojun305    时间: 2018-5-21 11:50
我准备开4096字节
作者: bbstr    时间: 2018-5-21 13:52
还缺个存文件的功能
作者: 442502587    时间: 2018-5-21 14:06
bbstr 发表于 2018-5-21 13:52
还缺个存文件的功能

有哇,你发送了就存了
作者: 442502587    时间: 2018-5-21 14:07
cpholr1 发表于 2018-5-21 11:15
5.xx版本 数据量超过一定值会自动清除部分字节。

不会导致软件崩溃了。

神僧  ,上传了新版本,欢迎暴力测试
作者: love_zjb    时间: 2018-5-21 14:19
cpholr1 发表于 2018-5-20 23:40
不丢包的,都是对齐的。

怎么测试高速丢包?
作者: tcm123    时间: 2018-5-21 14:21
cpholr1 发表于 2018-5-20 23:39
https://www.amobbs.com/thread-5672304-1-1.html?_dsign=6451ed57

丁丁/小猛大侠的SSCOM,是我用过的串 ...

一样 也会丢包    高速通信时很容易出现     完美的串口助手还没找到
作者: cpholr1    时间: 2018-5-21 14:26
love_zjb 发表于 2018-5-21 14:19
怎么测试高速丢包?

低速下依然悲剧。


[attach]413123[/attach]
作者: cpholr1    时间: 2018-5-21 14:28
tcm123 发表于 2018-5-21 14:21
一样 也会丢包    高速通信时很容易出现     完美的串口助手还没找到  ...

也可能是你硬件上的问题。

我试过115200满负荷,跑了几个小时,一个字节都没丢的。

硬件是FT232。

同样的测试条件,用PL2303,满负荷,没多久就会出错。



作者: cpholr1    时间: 2018-5-21 14:30
442502587 发表于 2018-5-21 14:07
神僧  ,上传了新版本,欢迎暴力测试

高速通信下,刷新非常慢,然后滚动条没有随窗口走。
这次没有死机。

但数据也是丢的一塌糊涂。


[attach]413124[/attach]


作者: cpholr1    时间: 2018-5-21 14:32
你这个还是自己测吧。

用个单片机,波特率调到115200,1ms发送一次。 我现在给你测的是每次10个字节。



作者: cpholr1    时间: 2018-5-21 14:34
串口通信上,115200的满负荷运行,
这样计算,一个8bit的字节,加1个校验位,一个停止位,一共10bit,

115200/10bit/1000ms = 11.52字节。

也就是说,115200波特率下,1ms连续发送11个字节,就属于满负荷了。


作者: cpholr1    时间: 2018-5-21 14:42
我记得2012年时候,用delphi写过一个串口,用的第三方插件, 高速下也是丢的一塌糊涂,完全没法改进。

这个应该是插件没做好的问题。

[attach]413125[/attach]


作者: njlzzdh    时间: 2018-5-21 14:46
有没有用labview做串口不丢包的,出来走两圈
作者: t3486784401    时间: 2018-5-21 16:09
以前给xx部门做过类似助手,一个 exe带32路串口同时开,每路要求连续115200通信,要求7×24小时不丢包、不死机、不卡系统。后来解决方案也是妥协,存硬盘再看
作者: tcm123    时间: 2018-5-21 16:19
cpholr1 发表于 2018-5-21 14:28
也可能是你硬件上的问题。

我试过115200满负荷,跑了几个小时,一个字节都没丢的。

我是921600跑几百K的数据。 硬件用的STM32 VCP, 用SSCOM确实会出错,后来用了个UartAssist没丢了。

我原来也一直相信SSCOM的, 还以为是自己程序的问题 调了好久
作者: Excellence    时间: 2018-5-21 16:38
tcm123 发表于 2018-5-21 16:19
我是921600跑几百K的数据。 硬件用的STM32 VCP, 用SSCOM确实会出错,后来用了个UartAssist没丢了。

我 ...

好高的波特率
作者: Excellence    时间: 2018-5-21 16:38
njlzzdh 发表于 2018-5-21 14:46
有没有用labview做串口不丢包的,出来走两圈

这个软件更不行。。。。。
作者: cpholr1    时间: 2018-5-21 16:40
tcm123 发表于 2018-5-21 16:19
我是921600跑几百K的数据。 硬件用的STM32 VCP, 用SSCOM确实会出错,后来用了个UartAssist没丢了。

我 ...

SSCOM在数据满1M的时候,自动删除掉前面900k数据,只留下100k数据。
你可能是遇上这个了。


作者: feigoo    时间: 2018-5-21 17:05
之前调试PID的时候,到处找串口工具,要能显示曲线,能将HEX数据转换成实际有意义的值。 找了一圈,没找到合适的。
无奈想起以前用过LABVIEW,下载安装了一个,花了半小时写了一个串口工具,很适合自己用。 推荐下LABVIEW NXG ,
很好用。
[attach]413137[/attach]
[attach]413138[/attach]

作者: Excellence    时间: 2018-5-21 18:38
cpholr1 发表于 2018-5-21 16:40
SSCOM在数据满1M的时候,自动删除掉前面900k数据,只留下100k数据。
你可能是遇上这个了。

他波特率是921600.。。。。。。。。。。。。。。是你的8倍。
作者: cpholr1    时间: 2018-5-21 18:44
Excellence 发表于 2018-5-21 18:38
他波特率是921600.。。。。。。。。。。。。。。是你的8倍。

嗯,所以他的数据流更快。也更轻易达到1M数据量。

还是建议他再试一次,看下是不是1M数据量被自动删除掉900k。

另外 我也测试了丁丁的网口通信功能,另一边是CAN总线,波特率1M的,也接近满负荷运行,依然没有丢包。

之前碰到数据量变少,我也以为是软件BUG,还特意发邮件问了作者。


作者: 山外メ雲ジ    时间: 2018-5-21 18:47
cpholr1 发表于 2018-5-21 14:34
串口通信上,115200的满负荷运行,
这样计算,一个8bit的字节,加1个校验位,一个停止位,一共10bit,

你说的高速测试,是用115200做测试,连续发送吗?

帮忙测试一下这款的高速模式,看看会不会丢数据。
下载地址:链接: https://pan.baidu.com/s/1i7nFSfN 密码: 21gi
作者: cpholr1    时间: 2018-5-21 18:49
山外メ雲ジ 发表于 2018-5-21 18:47
你说的高速测试,是用115200做测试,连续发送吗?

帮忙测试一下这款的高速模式,看看会不会丢数据。

半夜帮你测一下。

现在没空。
作者: dxgdsx    时间: 2018-5-21 20:05
442502587 发表于 2018-5-20 23:55
用的是那个什么Cncomm库,软件门外汉,明天测试优化一下,

楼主用的哪个库?PCOMM.DLL?
作者: eliterxzgxu    时间: 2018-5-21 20:08
感谢楼主分享
作者: 442502587    时间: 2018-5-21 20:26
dxgdsx 发表于 2018-5-21 20:05
楼主用的哪个库?PCOMM.DLL?

是这个库  
作者: 442502587    时间: 2018-5-21 20:27
dxgdsx 发表于 2018-5-21 20:05
楼主用的哪个库?PCOMM.DLL?

用这个没办法做成一个文件
作者: cpholr1    时间: 2018-5-21 20:51
山外メ雲ジ 发表于 2018-5-21 18:47
你说的高速测试,是用115200做测试,连续发送吗?

帮忙测试一下这款的高速模式,看看会不会丢数据。

以下测试的是一分钟的数据,是手动停止的,所以有误差,另外,MCU还有其他活,所以发出来的,不一定是600000个字节,但一定是10的整数倍。

第一次测试  
丁丁 一分钟 470570字节 尾数为0,
山外 一分钟 474381字节 尾数为1,少量丢包

第二次测试
丁丁 一分钟 474780字节 尾数为0
山外 一分钟 474501字节 尾数为1,少量丢包

第二次测试
山外 一分钟 479480字节 尾数为0  没有丢包 (测试大分辨率版本)
山外 一分钟 471907字节 尾数为7  少量丢包  (测试大分辨率版本)

结论:山外的,少量丢包,接收时候界面很卡,界面刷新率太低,不能拉伸对齐数据。如果可以拉伸对齐的话,哪个数据丢了或者多了,一目了然。

丁丁SSCOM的很流畅,不丢包,刷新率高,可以拉伸对齐。

丁丁的打分100的话,山外这个只能打60-70分。

[attach]413159[/attach]
[attach]413163[/attach]

作者: cpholr1    时间: 2018-5-21 20:54
山外メ雲ジ 发表于 2018-5-21 18:47
你说的高速测试,是用115200做测试,连续发送吗?

帮忙测试一下这款的高速模式,看看会不会丢数据。

帮你测试 花了一个小时。。。


作者: uindex    时间: 2018-5-21 21:06
115200bps是不是有点拿不出手啊,要压力测试上12Mbps,目前FTDI最高串口速率。
作者: 68336016    时间: 2018-5-21 21:32
以前用CPU带自动降频功能的电脑,串口有时候数据丢得一塌糊涂,换了没这个功能的电脑,跑1,2天都没事。
当时还遇到有客户电脑装了360,也会将串口数据丢得稀里哗啦,卸载后恢复正常。
作者: cpholr1    时间: 2018-5-21 21:37
uindex 发表于 2018-5-21 21:06
115200bps是不是有点拿不出手啊,要压力测试上12Mbps,目前FTDI最高串口速率。

问题是,目前没几个串口软件,能在115200满负荷下不丢包,更高的就不用说了。

另外,常用的一些max3232芯片,一般都只保证115200波特率下不出问题,再高的波特率,就没说一定支持了。

你说的FTDI的那个高速,肯定是TTL裸板了。


作者: uindex    时间: 2018-5-21 22:06
cpholr1 发表于 2018-5-21 21:37
问题是,目前没几个串口软件,能在115200满负荷下不丢包,更高的就不用说了。

另外,常用的一些max3232 ...

说的也是,基本的115200要先搞稳定!
作者: dxgdsx    时间: 2018-5-21 22:34
442502587 发表于 2018-5-21 20:27
用这个没办法做成一个文件

直接搞源码,可以的楼主。厉害。dll调用相对麻烦点。
作者: 山外メ雲ジ    时间: 2018-5-21 22:37
cpholr1 发表于 2018-5-21 20:54
帮你测试 花了一个小时。。。

好的,迟点再改进
作者: Excellence    时间: 2018-5-22 07:57
找个带modbus功能的,用modscan一次几百字节测试。。。。
作者: 442502587    时间: 2018-5-22 19:14
V1.3来了,增加可以缩进对齐的功能和自动成帧 功能,
作者: cpholr1    时间: 2018-5-22 19:53
442502587 发表于 2018-5-22 19:14
V1.3来了,增加可以缩进对齐的功能和自动成帧 功能,

帮你测试了下,这次我把数据复制出来word上,统计字数,这个功能算是正常的,算是没丢了。

但最好窗口能拉伸,对齐。

另外,换行的标准有问题。你估计是buffer读取一次换一次行?

不用换行,直接追加到末尾。

[attach]413274[/attach]


作者: wind2100    时间: 2018-5-23 08:14
cpholr1 发表于 2018-5-20 23:26
搞串口调试工具,最核心最根本的东西,就是在满负荷数据流下,用hex显示不丢包。

其他界面什么的,都是浮 ...

很多,速度一快就挂了 只能结束进程, 还有IO浮空的时候 也挂,
好的程序一定有很多出错处理.
作者: 442502587    时间: 2018-5-23 17:57
做了一些小改动
作者: njlzzdh    时间: 2018-5-23 18:40
Excellence 发表于 2018-5-21 16:38
这个软件更不行。。。。。

labview很厉害的。你加入"队列技术",自带例程有,防止数据堵塞丟帧。
作者: njlzzdh    时间: 2018-5-23 18:43
很多人都用buffer,等满了一次性处理,数据量大了是有问题的,因为很多人不会用多线程。(不是让你开一个工作线程,一个界面线程。是工作线程就开两个线程)。但是labview的队列技术,可以一边接收,一边处理。(当然用到多线程)
作者: Excellence    时间: 2018-5-24 08:45
njlzzdh 发表于 2018-5-23 18:40
labview很厉害的。你加入"队列技术",自带例程有,防止数据堵塞丟帧。

谢谢指点。
我是感觉用C++如果都处理不好LABVIEW估计够呛。

作者: armstrong    时间: 2018-5-24 11:10
本帖最后由 armstrong 于 2018-5-24 11:12 编辑

这些软件都经不起高负荷使用,都不是专业的软件开发者写的。国外的HHD Device Monitoring Studio Ultimate这种软件才叫专业!
要做得专业,就得深入了解Windows通信API,Windows多线程的GUI设计,Windows异步操作(overlapped),还要了解一些软件设计模式,比如MVC之类的。
没有在这些基础上投入精力,想做好就别想了;马马虎虎凑合还行。
掌握了底层技术,以现在的电脑配置,用API写个不丢包的串口根本不难。
作者: armstrong    时间: 2018-5-24 11:17
在拉伸界面时就会丢包的软件,其实现上都把界面更新与收发线程没独立开。
比如后台接收线程(要用异步方式读,nonblocking)收到的数据放入一个大缓冲池fifo,界面线程即使CPU满负荷卡顿,也不会丢数据啊。
作者: way2888    时间: 2018-5-26 20:29
cpholr1 发表于 2018-5-20 23:39
https://www.amobbs.com/thread-5672304-1-1.html?_dsign=6451ed57

丁丁/小猛大侠的SSCOM,是我用过的串 ...

丁丁的SSCOM效率最高的版本是3.x,最新的5.x效率很差,只是5.x版解决了出错关闭不了的问题
作者: wind2100    时间: 2018-5-26 21:04
cpholr1 发表于 2018-5-21 11:15
5.xx版本 数据量超过一定值会自动清除部分字节。

不会导致软件崩溃了。

TCP SEVER还没用  
作者: 天使之翼    时间: 2018-5-27 07:20
刷新与数据接收应该分离,接收只做数据缓存,显示可以定时刷新。
作者: let8011    时间: 2018-5-27 10:20
谢谢分享,下载收藏
作者: TKZXJ    时间: 2018-12-18 13:32
好资料,谢谢楼主




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4