SerialChart
SerialChart是一个由Sergiu Baluta开发的开源应用程序。SerialChart用于实时绘制通过串口(RS-232)端口发送的数据。它通过插件和WebView javascript集成支持其他类型的端口。模块化设计允许激励编码器添加新型端口、解码器和显示过滤器。基本数据处理流程为:
端口(来自串行/USB端口的原始数据)->解码器(处理数据)->值(显示在屏幕/图表上)
对于基本用户,编译后的现成版本可在系列图表官方网页下载:
http://starlino.com/serialchart
有关微控制器(Arduino)项目的示例使用请参见:http://starlino.com/imu_kalman_arduino.html
SerialChart应用程序的配置文件语法。
介绍
SerialChart配置是通过一个文本文件完成的。该文件的一般格式如下:
[section1]
param1 = value
param2 = value
...
[section2]
param1 = value
param2 = value
设置部分
每个配置文件都以“[setup]”部分开始,在这里您可以设置全局参数。例如:
[_setup_]
port=COM3
baudrate=57600
width=1000
height=201
background_color = white
grid_h_origin = 100
grid_h_step = 10
grid_h_color = #EEE
grid_h_origin_color = #CCC
grid_v_origin = 0
grid_v_step = 10
grid_v_color = #EEE
grid_v_origin_color = transparent
下面是可以在’ [setup] '部分中使用的参数:
port-端口
指定软件连接到的通信端口。例如:COM1,COM2,…
baudrate-波特率
波特率(单位:bps)。目前只支持某些值:110,300,600,1200,2400,9600,19200,38400,57600,115200。
请注意,目前不支持流量控制参数,奇偶校验将默认为“none”,停止位默认为1,因为这些是最常见的值。
width, height-宽度、高度
图表区域的宽度和高度,以像素为单位。
background_color-背景\颜色
图表的背景颜色。
Note about color formats-颜色格式注意事项
请注意。scc文件中的颜色可以用十六进制格式指定(例如:#FFF,或#FFFFFF)或命名颜色(白色,蓝色,品红,粉红色,灰色)见:http://www.w3.org/TR/SVG/types.html#ColorKeywords。请注意特殊值_transparent_表示“无颜色”。如果你根本不想绘制一些元素,你可以使用它。
grid_h_origin, grid_v_origin-起始网格
水平网格和垂直网格都有一条起始轴线,通常与常规网格线的颜色不同。这些参数指定该线从图表的上/左边界的移动像素。
grid_v_origin_color, grid_v_origin_color,
-网格原点(轴)线的颜色
grid_h_step, grid_v_step,
-在从原点线开始的每一步像素处画一条网格线。
grid_h_color, grid_v_color,
-规则网格线的颜色。
解码器:
指定CSV解码(默认)
decoder = csv
指定二进制解码
decoder = bin
指定hdlc风格的解码
decoder =hdlc
hdlc_esc =7d
hdlc_sep =7e
hdlc_xor =20
显示方式
显示来自端口的原始数据(默认)
display = raw
将数据显示为值列表
display = list
display_sep = ,
display_skip_transparent = 1
请注意:分隔符可以在Percent Encoded字符串中指定,例如使用TAB分隔列表:
display = list
display_sep = %09
提示:标签分开的值可以很容易地复制和粘贴到Excel电子表格。(在Excel中使用粘贴>特殊粘贴,并选择文本作为格式)。
显示数据为十六进制字符串
display = hex
打开USB HID设备(键盘/鼠标/手柄)
port = HID
vid = 0079
pid = 5d0f
提示:使用USBDeview http://www.nirsoft.net/utils/usb_devices_view.html这样的实用程序来查找特定设备(VID/PID)的供应商和产品id。
默认和字段部分
SerialChart接受CSV格式的数据包(将来可能支持其他格式)。每个包在单独的一行上,每个字段值用逗号分隔。下面是SerialChart将接收的示例数据示例:
100,0.50,0.70
101,0.30,0.50
102,0.25,0.35
配置文件中以下部分的目的是为数据包中的每个字段指定参数。例如:
[_default_]
min=-1
max=1
[Field1]
color=gray
min=0
max=255
[Field2]
color=blue
[Field3]
color=red
您可以指定在默认情况下应用于[_default_]
节中的所有字段的参数。这些参数将应用于所有字段节,除非它们将在字段节中被具有相同名称的参数覆盖。
在上面的例子中,注意Field2和Field3将从[_default_]
部分继承min=-1和max=1。但是Field1将用min=0和max=255覆盖这些值
在定义了默认参数之后,您应该为数据包中接收的每个字段定义一个部分。字段段应该按照它们在包中接收的顺序排列。
字段节的名称可以随机选择,但应与默认的名称 _setup_
,[_default_]
不同。因此,避免使用任何以“_”开头和结尾的名称。
下面是[_default_]
和字段部分中接受的参数的解释:
min,max-最低,最高
这些字段值对应于图表的顶部和底部线。换句话说,如果你指定min = -1, max = 1。值-1将被绘制在图表的顶部边界,值1将被绘制在图表的底部边界。值0(即-1和1之间的中点)将被绘制在图表的中间。字段值从’ [min,max] ‘范围线性映射到’ [0,height] '范围,其中_height_是以像素为单位的图表高度,在设置部分中指定。
color-颜色
这是用于绘制字段值的颜色。如果您不希望绘制特定的字段,请使用_transparent_ color value。
dash
创建中断的行。例如:
dash = 3
将渲染3个样本,然后不渲染接下来的3个样本,然后渲染3个样本,然后再次暂停3个样本,等等…
Specify data length/type for BIN/HDLC decodings-指定BIN/HDLC解码的数据长度/类型
type = byte / sbyte / word / sword / float
Specify data Endianness-指定数据字节顺序
参照 http://en.wikipedia.org/wiki/Endianness
endian = msbf / lsbf
msbf ->最高位字节优先
lsbf->最低有效字节优先
Specify data format for custom display (ex: display = list)-指定自定义显示的数据格式(例如:display = list)
format = %g / %f / %d / %n / %s / %x
%n ->字段名
%f ->浮点数,格式为-9.9
%g ->浮点数,格式为-9.9或-9.9e+9,以较短者为准
%d ->十进制整数
%s ->此值的原始数据
%x ->十六进制的原始数据
可以组合如下格式:
[MyField]
type = float
precision = 3
format = %n = %f
将输出ex:
... , MyField ’ = ’ 1.123,…
Set precision of floats in format-在格式中设置浮点精度
precision = 6
下面是如何应用这种格式(提供源代码):
v.replace(QByteArray("%g"),QByteArray::number(packetValues[i].toDouble(),'g',precision));
v.replace(QByteArray("%f"),QByteArray::number(packetValues[i].toDouble(),'f',precision));
v.replace(QByteArray("%d"),QByteArray::number(packetValues[i].toInt(),'f',0));
v.replace(QByteArray("%n"),field.toAscii());
v.replace(QByteArray("%s"),packetParts[i]);
v.replace(QByteArray("%x"),packetParts[i].toHex());
Using h_origin
and pitch
field parameters-使用“h_origin”和“pitch”字段参数
例如:
[Field1]
h_origin = 50
pitch = 10
使用’ h_origin '来指定与字段值0对应的水平线。因此,在上面的例子中,0将被绘制在图表上边框下方50像素处。
使用“pitch”来指定有多少单位的字段值对应于图表上的一个像素。因此,在上面的例子中,Field1 = 20将被绘制在图表顶部边界下方50 - 20 / 10 = 48像素处。
请注意,’ h_origin ‘和’ pitch ‘,就像任何其他字段参数一样,可以在’ [default] '部分中指定,默认应用于所有字段。
如果没有指定’ h_origin ‘或’ pitch ',那么它将根据字段的min / max参数自动计算,因此max值总是在图表的最上面一行上绘制,min值总是在图表的最下面一行上绘制。
Sending Data-发送数据
从0.3.2版本开始,可以将数据发送到COM端口。这可以通过使用发送框或从配置文件(在运行或停止时)._自动完成
发送的字符串支持以下转义字符:
\\ -> \
\n -> 0x0A (line end)
\r -> 0x0D (line feed)
\t -> 0x07 (tab)
\xAB -> byte with hex code AB
\d123 -> byte with decimal code 123
send_run-发送\运行
send a string when port is opened (run button clicked)-当端口打开时发送一个字符串(单击运行按钮)
send_run = +++\nAT\n
send_stop-发送\停止
send a string when port is closed (stop button clicked)-当端口关闭时发送一个字符串(单击停止按钮)
send_stop = exit\n
x code AB
\d123 -> byte with decimal code 123
## send\_run-发送\运行
### send a string when port is opened (run button clicked)-当端口打开时发送一个字符串(单击运行按钮)
send_run = +++\nAT\n
## send\_stop-发送\停止
### send a string when port is closed (stop button clicked)-当端口关闭时发送一个字符串(单击停止按钮)
send_stop = exit\n