SerialChart -- Analyse and chart serial data from RS-232 COM ports

开源, 源代码(在GitHub上也可以看到), 文档 及 下载: https://code.google.com/archive/p/serialchart/

GitHub上的源代码: https://github.com/jupe/serialchart

Wiki: https://en.wikiversity.org/wiki/SerialChart_Tutorial


用单片机或Arduino串口调试时,有没有想过要一款软件把串口数据的波形给打印出来,调试传感器,PID参数等,这款软件绝对值得拥有:
10

一段来自SerialChart 的MPU6050测试视频片段:
11


代码示例(复制到软件的Configuration区,按需修改串口号、波特率、曲线颜色、显示窗口大小等):

[_setup_]                               
port=COM3                           
baudrate=9600                   

width=1000                          
height=400
background_color = black

grid_h_origin = 0
grid_h_step = 100
grid_h_color = #EEE
grid_h_origin_color = #CCC

grid_v_origin = 0
grid_v_step = 100
grid_v_color = #EEE
grid_v_origin_color=#CCC

[_default_]     
min=-1000        
max=1000            

[pulsetime0]    
color=blue
min=-90      
max=90  

[pulsetime1]
color=cyan  
dash=5  

代码说明:
[setup] ;这些注释千万不要复制进去

port=COM3 ;串口号

baudrate=9600
;目前支持波特率110,300,600,1200,2400,9600,19200,38400,57600,115200

width=1000 ;软件Chart区有效显示范围宽度,高度,以像素为单位 height=200

background_color = white
;Chart区的背景颜色,更多颜色请参考http://www.w3.org/TR/SVG/types.html#ColorKeywords
;在.SCC文件中(也就是此软件的配置文件)颜色可以用16进制来表示(如 #FFF,#FFFFFF)
;或者用一些已命名的颜色(白色,蓝色,品红,粉红,灰色)

grid_h_origin = 0
grid_h_step = 1
grid_h_color = #EEE
grid_h_origin_color = #CCC

grid_v_origin = 0
grid_v_step = 0
grid_v_color = #EEE
grid_v_origin_color=#CCC
;水平方向和竖直方向都有一条原始的轴线,一般和普通的格点线(每条曲线都是由一个个像素组成的,所以叫格点线)颜色不同
;grid_h_origin, grid_v_origin 这两个参数确定了轴线在图表中距离顶点、左侧(左上角)边界的位移,单位为像素
;以Chart区左边中点为参考零点,正右方为x轴,正上方为y轴,则原点相对坐标(grid_v_origin,grid_h_origin)单位:像素,注意别弄反了
;注意Chart较小不能完全显示时可以用鼠标拖边框使之变大 ;
; grid_h_step, grid_v_step这两个参数用来确定网格的大小:grid_h_step为网格纵向像素,grid_v_step为网格横向像素 ;
; grid_h_color, grid_v_color 网格线的颜色 ;
; grid_h_origin_color, grid_v_origin_color ;坐标轴的颜色
;(默认设置和区域设置)SerialChart能识别CSV(=Comma separated values逗号分隔数据)的数据包(将来可能会支持更多的格式)。
;每一行传送一份数据包,每一份数据包中的不同数据用逗号来分隔。
; 下面的例子是SerialChart能识别的格式:
;100,-20,0.50,0.70,-0.10 ; 30,10,0.30,0.50,2.10 ; -80,50,0.25,0.35 … …
;第一列是第一条曲线对应的值,第二列第二条曲线,依次类推

[default]
;默认情况下应用[default]的设置(范围、颜色等)。这些参数将适用于所有领域部分,除非以下这些领域部分参数具有自定义的同类名称。

min=-1
;如果你设定min=-1,max=1,那数据“1”将会被描绘在图中的顶端,数据“-1”将被描绘在图中的底端,
max=1
;而“0”将会描绘在图的正中间。数据会从[min,max]映射到图中的[0,height],height就是曲线图的高度 ;第一条曲线设置

[pulsetime0]
;以下的这几个名字可以自己起,不能和[setup],[default]同名,也不能以’_’开头和结尾
color=blue
;设置数据所对应曲线的颜色。如果你不想让某个数据被绘制出来可以设置为transparent(透明),详见上面颜色参考网址
min=-150 ;第一条曲线自定义范围 max=150 ;第二条曲线设置

[pulsetime1]
color=cyan
;(green绿,lime绿黄),(red红,magenta紫红),(blue蓝,cyan青),pink粉红,bisque橘黄,transparent透明(不让显示),
min=0 ;第二条曲线自定义范围
max=40000

dash=1
;dash可将曲线变成一条虚线,如,当dash=3,软件会将3个数据绘制出来,再停止绘制3个数据,再绘制3个数据,如此反复。。
[distance0] ;使用默认范围配置[default] min=-1 max=1
color=pink

[distance1] color=gold

[distance] color=red


使用注意: MCU或者Arduino串口发送时数据以逗号(英文逗号,不能是中文逗号)分割,数据包以回车换行分割.

联想Y470 Win7 64bit系统使用虚拟串口测试,仅支持COM1-COM9端口,使用定时发送,实际测试屏幕最高刷新速率500像素/5s=100像素/s,亦即刷新速率不超过100次/s,串口调试助手定时发送最好在10ms/次以上如20ms/次。

屏幕分辨率若为1366*768,即刷新一屏至少需要1366/100=14s,会循环刷新,时间上可能有20%的误差,如果感觉数据太拥挤,看不大清,可提高定时发送数据包的速率,每个像素点所在列对应一个数据包,如当50ms发送一次数据,数据刷新100个像素点(接收了100个数据包即100行数据)花了5s(50ms*100=5s),即此时的屏幕刷新速率为20个像素点/s,与波特率无关。

当然,数据包太大,波特率太小是不行的,如9600bps,每秒最多9600/8=1200字节,10ms能发12字节,但是单片机如果没有DMA通道的话,10ms通过串口发送一次数据包,每个数据包12个字节,理论上CPU已经没有精力去执行任何任务了?所以如果想提高CPU效率,减少意外的发生,数据包要尽可能小,波特率尽可能高,但最好不要超过115200吧?(上面代码有说明,但测试的到256000也还行)。


类似的软件还有调试飞思卡尔智能车时经常用的Visual Scope :
15


原作于 2014年10月
CSDN发表于2016年4月
weifengdq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值