442502587 发表于 2018-5-20 23:19:50

花了点时间写了个串口工具,分享给大家

本帖最后由 442502587 于 2018-5-21 14:07 编辑

使用API做的,UI第用的开源的SOUI,还可以,可能有BUG,但是没有捉到

cpholr1 发表于 2018-5-20 23:26:35

搞串口调试工具,最核心最根本的东西,就是在满负荷数据流下,用hex显示不丢包。

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

jarodzz 发表于 2018-5-20 23:34:49

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

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

可以詳細說明滿載不丟包技巧在哪裡?
或是有sample code可以提供,謝謝。

cpholr1 发表于 2018-5-20 23:37:17

帮你测试了一下,低速下就已经丢的一塌糊涂了。

高速下,软件直接死机。



cpholr1 发表于 2018-5-20 23:39:22

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:52

不丢包的,都是对齐的。

cpholr1 发表于 2018-5-20 23:42:02

高速接收,依然没有丢包,还是对齐的。



creep 发表于 2018-5-20 23:42:49

丁丁的串口的确很稳,较高波特率下HEX都不会丢。

SUPER_CRJ 发表于 2018-5-20 23:44:28

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

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

说的对,我之前写的一个上位机,用于解析CAN总线就是在大数据情况下丢包,解决了几个月,才解决好。

jymt 发表于 2018-5-20 23:45:57

用过很多个串口,最后觉得丁丁的串口稳

cpholr1 发表于 2018-5-20 23:53:41

打击的话说的有点多。楼主再接再厉,加油!{:lol:}

442502587 发表于 2018-5-20 23:55:52

cpholr1 发表于 2018-5-20 23:53
打击的话说的有点多。楼主再接再厉,加油!

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

jianfengxixi 发表于 2018-5-21 06:47:50

我貌似看到了楼主一脸懵逼的样子( ̄∇ ̄)

wye11083 发表于 2018-5-21 08:04:21

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

你定时刷新窗口。否则一个一个字节刷新还不卡死。

w282529350 发表于 2018-5-21 08:29:21

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

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

还有一个长时间接收的问题,串口丁丁的115200最大负荷接收几分钟后崩溃。

fghfguytu 发表于 2018-5-21 08:38:20

在上位机中,也搞过串口通讯,也曾碰到过丟包问题,一直优化呀优化,现在稳定了很多,但在大数据下,还是曾在偶尔 丟包现象
也想学学,大数据,高速下,怎么做,能不丟包

w282529350 发表于 2018-5-21 08:42:57

fghfguytu 发表于 2018-5-21 08:38
在上位机中,也搞过串口通讯,也曾碰到过丟包问题,一直优化呀优化,现在稳定了很多,但在大数据下,还是曾 ...

串口工具基本上快成月经帖了,但大多数是皮毛,仅仅能满足自己的需求而已

Excellence 发表于 2018-5-21 09:00:59

搞IAP时候,一包2048字节,网上只有一个串口助手可以。
现在好像WIN7 64BIT不能用了。

442502587 发表于 2018-5-21 09:38:53

Excellence 发表于 2018-5-21 09:00
搞IAP时候,一包2048字节,网上只有一个串口助手可以。
现在好像WIN7 64BIT不能用了。 ...

我准备开65535字节

giantwjt88 发表于 2018-5-21 10:04:25

任何东西做精也不容易呀

kinsno 发表于 2018-5-21 10:55:21

442502587 发表于 2018-5-21 09:38
我准备开65535字节

你这是开源的吗?用的那个国内那个cnconn,这个有几年没有更新了吧。。我改过一个软件好像还可以,能够大数据量,哪天我发上来看看。。

cpholr1 发表于 2018-5-21 11:15:15

w282529350 发表于 2018-5-21 08:29
还有一个长时间接收的问题,串口丁丁的115200最大负荷接收几分钟后崩溃。 ...

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

不会导致软件崩溃了。



Excellence 发表于 2018-5-21 11:21:59

442502587 发表于 2018-5-21 09:38
我准备开65535字节

加油。。。。。。
祝你成功。

kebaojun305 发表于 2018-5-21 11:50:47

我准备开4096字节

bbstr 发表于 2018-5-21 13:52:07

还缺个存文件的功能

442502587 发表于 2018-5-21 14:06:11

bbstr 发表于 2018-5-21 13:52
还缺个存文件的功能

有哇,你发送了就存了

442502587 发表于 2018-5-21 14:07:37

cpholr1 发表于 2018-5-21 11:15
5.xx版本 数据量超过一定值会自动清除部分字节。

不会导致软件崩溃了。


神僧,上传了新版本,欢迎暴力测试

love_zjb 发表于 2018-5-21 14:19:12

cpholr1 发表于 2018-5-20 23:40
不丢包的,都是对齐的。

怎么测试高速丢包?

tcm123 发表于 2018-5-21 14:21:00

cpholr1 发表于 2018-5-20 23:39
https://www.amobbs.com/thread-5672304-1-1.html?_dsign=6451ed57

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

一样 也会丢包    高速通信时很容易出现   完美的串口助手还没找到{:lol:}

cpholr1 发表于 2018-5-21 14:26:23

love_zjb 发表于 2018-5-21 14:19
怎么测试高速丢包?

低速下依然悲剧。


cpholr1 发表于 2018-5-21 14:28:21

tcm123 发表于 2018-5-21 14:21
一样 也会丢包    高速通信时很容易出现   完美的串口助手还没找到...

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

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

硬件是FT232。

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


cpholr1 发表于 2018-5-21 14:30:22

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

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

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




cpholr1 发表于 2018-5-21 14:32:04

你这个还是自己测吧。

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


cpholr1 发表于 2018-5-21 14:34:35

串口通信上,115200的满负荷运行,
这样计算,一个8bit的字节,加1个校验位,一个停止位,一共10bit,

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

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

cpholr1 发表于 2018-5-21 14:42:13

我记得2012年时候,用delphi写过一个串口,用的第三方插件, 高速下也是丢的一塌糊涂,完全没法改进。

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



njlzzdh 发表于 2018-5-21 14:46:29

有没有用labview做串口不丢包的,出来走两圈

t3486784401 发表于 2018-5-21 16:09:36

以前给xx部门做过类似助手,一个 exe带32路串口同时开,每路要求连续115200通信,要求7×24小时不丢包、不死机、不卡系统。后来解决方案也是妥协,存硬盘再看

tcm123 发表于 2018-5-21 16:19:04

cpholr1 发表于 2018-5-21 14:28
也可能是你硬件上的问题。

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


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

我原来也一直相信SSCOM的, 还以为是自己程序的问题 调了好久

Excellence 发表于 2018-5-21 16:38:00

tcm123 发表于 2018-5-21 16:19
我是921600跑几百K的数据。 硬件用的STM32 VCP, 用SSCOM确实会出错,后来用了个UartAssist没丢了。

我 ...

好高的波特率

Excellence 发表于 2018-5-21 16:38:32

njlzzdh 发表于 2018-5-21 14:46
有没有用labview做串口不丢包的,出来走两圈

这个软件更不行。。。。。

cpholr1 发表于 2018-5-21 16:40:47

tcm123 发表于 2018-5-21 16:19
我是921600跑几百K的数据。 硬件用的STM32 VCP, 用SSCOM确实会出错,后来用了个UartAssist没丢了。

我 ...

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

feigoo 发表于 2018-5-21 17:05:57

之前调试PID的时候,到处找串口工具,要能显示曲线,能将HEX数据转换成实际有意义的值。 找了一圈,没找到合适的。
无奈想起以前用过LABVIEW,下载安装了一个,花了半小时写了一个串口工具,很适合自己用。 推荐下LABVIEW NXG ,
很好用。


Excellence 发表于 2018-5-21 18:38:06

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



他波特率是921600.。。。。。。。。。。。。。。是你的8倍。

cpholr1 发表于 2018-5-21 18:44:37

Excellence 发表于 2018-5-21 18:38
他波特率是921600.。。。。。。。。。。。。。。是你的8倍。

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

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

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

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

山外メ雲ジ 发表于 2018-5-21 18:47:15

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



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

帮忙测试一下这款的高速模式,看看会不会丢数据。
下载地址:链接: https://pan.baidu.com/s/1i7nFSfN 密码: 21gi

cpholr1 发表于 2018-5-21 18:49:10

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

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


半夜帮你测一下。

现在没空。

dxgdsx 发表于 2018-5-21 20:05:44

442502587 发表于 2018-5-20 23:55
用的是那个什么Cncomm库,软件门外汉,明天测试优化一下,

楼主用的哪个库?PCOMM.DLL?

eliterxzgxu 发表于 2018-5-21 20:08:30

感谢楼主分享

442502587 发表于 2018-5-21 20:26:32

dxgdsx 发表于 2018-5-21 20:05
楼主用的哪个库?PCOMM.DLL?

是这个库

442502587 发表于 2018-5-21 20:27:08

dxgdsx 发表于 2018-5-21 20:05
楼主用的哪个库?PCOMM.DLL?

用这个没办法做成一个文件

cpholr1 发表于 2018-5-21 20:51:03

山外メ雲ジ 发表于 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分。



cpholr1 发表于 2018-5-21 20:54:21

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

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


帮你测试 花了一个小时。。。{:sweat:}

uindex 发表于 2018-5-21 21:06:33

115200bps是不是有点拿不出手啊,要压力测试上12Mbps,目前FTDI最高串口速率。

68336016 发表于 2018-5-21 21:32:45

以前用CPU带自动降频功能的电脑,串口有时候数据丢得一塌糊涂,换了没这个功能的电脑,跑1,2天都没事。
当时还遇到有客户电脑装了360,也会将串口数据丢得稀里哗啦,卸载后恢复正常。

cpholr1 发表于 2018-5-21 21:37:41

uindex 发表于 2018-5-21 21:06
115200bps是不是有点拿不出手啊,要压力测试上12Mbps,目前FTDI最高串口速率。

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

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

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

uindex 发表于 2018-5-21 22:06:07

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

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

说的也是,基本的115200要先搞稳定!

dxgdsx 发表于 2018-5-21 22:34:32

442502587 发表于 2018-5-21 20:27
用这个没办法做成一个文件

直接搞源码,可以的楼主。厉害。dll调用相对麻烦点。

山外メ雲ジ 发表于 2018-5-21 22:37:30

cpholr1 发表于 2018-5-21 20:54
帮你测试 花了一个小时。。。

好的,迟点再改进

Excellence 发表于 2018-5-22 07:57:15

找个带modbus功能的,用modscan一次几百字节测试。。。。

442502587 发表于 2018-5-22 19:14:03

V1.3来了,增加可以缩进对齐的功能和自动成帧 功能,

cpholr1 发表于 2018-5-22 19:53:24

442502587 发表于 2018-5-22 19:14
V1.3来了,增加可以缩进对齐的功能和自动成帧 功能,

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

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

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

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



wind2100 发表于 2018-5-23 08:14:45

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

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

很多,速度一快就挂了 只能结束进程, 还有IO浮空的时候 也挂,
好的程序一定有很多出错处理.

442502587 发表于 2018-5-23 17:57:05

做了一些小改动

njlzzdh 发表于 2018-5-23 18:40:34

Excellence 发表于 2018-5-21 16:38
这个软件更不行。。。。。

labview很厉害的。你加入"队列技术",自带例程有,防止数据堵塞丟帧。

njlzzdh 发表于 2018-5-23 18:43:47

很多人都用buffer,等满了一次性处理,数据量大了是有问题的,因为很多人不会用多线程。(不是让你开一个工作线程,一个界面线程。是工作线程就开两个线程)。但是labview的队列技术,可以一边接收,一边处理。(当然用到多线程)

Excellence 发表于 2018-5-24 08:45:39

njlzzdh 发表于 2018-5-23 18:40
labview很厉害的。你加入"队列技术",自带例程有,防止数据堵塞丟帧。

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

armstrong 发表于 2018-5-24 11:10:52

本帖最后由 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:15

在拉伸界面时就会丢包的软件,其实现上都把界面更新与收发线程没独立开。
比如后台接收线程(要用异步方式读,nonblocking)收到的数据放入一个大缓冲池fifo,界面线程即使CPU满负荷卡顿,也不会丢数据啊。

way2888 发表于 2018-5-26 20:29:16

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:07

cpholr1 发表于 2018-5-21 11:15
5.xx版本 数据量超过一定值会自动清除部分字节。

不会导致软件崩溃了。


TCP SEVER还没用

天使之翼 发表于 2018-5-27 07:20:12

刷新与数据接收应该分离,接收只做数据缓存,显示可以定时刷新。

let8011 发表于 2018-5-27 10:20:47

谢谢分享,下载收藏

TKZXJ 发表于 2018-12-18 13:32:55

好资料,谢谢楼主
页: [1]
查看完整版本: 花了点时间写了个串口工具,分享给大家