目录

Serial Studio 数据可视化工具

一、简介

Serial Studio(/‘sɪəriəl /‘stjuːdiəʊ/) 是一个多平台、多用途的串行数据可视化应用软件。此程序的目标是使嵌入式开发人员可以轻松地可视化呈现和分析其设备(或项目)生成的数据,而无需为每个项目编写专用的计算机软件。由于开源,这个工具可以扩展支持几乎所有与数据采集/测量相关的项目。Serial Studio 使用 MIT 开源协议,我们可以自由使用、复制、修改、合并、发布、分发,再许可和(或)出售。
在实际使用上发现 Serial Studio 主要针对飞行器数据可视化的一款应用软件,因为它的可视化仪表盘主要分为陀螺仪、地图坐标(经纬度)、加速计、电池指示器。Serial Studio 类似汽车的仪表盘,专业性比不上虚拟示波器这类测量软件。
../img/20210515_01_01.gif

二、使用

1、工作原理

首先在 Serial Studio 电脑软件上向设备发送启动命令,被启动的设备不断地向 Serial Studio 发送数据,Serial Studio 以仪表盘可视化方式把这些数据展示出来。关于仪表盘呈现界面需要事先通过电脑的 json 文件或者由设备第一时间直接发 json 信息给 Serial Studio 进行即时定制。Serial Studio 与设备连接的方式可以是串口、TCP/UDP、MQTT。设备为服务端,Serial Studio 为客户端。

2、安装方法

下载安装包直接安装,一直点下一步即可(注:实测只能安装到 C 盘)。相关网址:官方下载GitHub开源官方通讯协议说明

3、界面简介

3.1、界面语言选择:
../img/20210515_02_01.jpg

3.2、界面功能介绍:
../img/20210515_02_02.jpg

4、应用例子:仪表盘界面配置

4.1、配置仪表盘界面及数据格式:

本例使用电脑 json 配置文件来配置仪表盘界面(使用设备发来 json 配置未测试成功),具体请看下图:

../img/20210515_03_01.jpg

4.2、json 描述仪表盘语法说明:

数据结构组成"g":所有小窗口 > "d":小窗口所有数据 > "w":单个标准部件(包括:小窗口部件 > 数据小部件

  • t:项目标题(字符串,必填)
  • g:组(数组)
    • t:组标题(字符串,必填)
    • w:窗口小部件类型(字符串),可选-可以如下:
      • map:创建在地图上显示位置的小部件
      • bar:垂直进度栏(带有max&min值)
      • gyro:陀螺仪指示器(带有x,y&z值)
      • accelerometer:加速计指示(与x,y,&z值)
    • d:组数据集(数组)
      • t:数据集标题(字符串,可选)
      • v:数据集值(变量,必填)
      • u:数据集单位(字符串,可选)
      • g:数据集图(布尔值,可选)
      • w:窗口小部件类型(字符串),取决于组窗口小部件类型,可能如下:
        • 对于gyro&accelerometer小部件:
          • x:X轴的值
          • y:Y轴的值
          • z:Z轴的值
        • 对于map小部件:
          • lat:纬度
          • lon:经度
        • 对于bar小部件:
          • max:最大值
          • min:最小值

4.3、json 描述仪表盘界面例子:

● 新建 test.json 文件,其须为UTF-8编码,因为数据单位使用一些特殊字符。
● 编写仪表盘界面描述:(实际上无须重新编写 json,只需要对下面参考例子增删改即可)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
{
   "t":"%1",
   "g":[
      {
         "t":"Mission Status-任务状态",
         "d":[
            {
               "t":"Runtime",
               "v":"%2",
               "u":"ms"
            },
            {
               "t":"Packet count",
               "v":"%3"
            },
            {
               "t":"Battery voltage",
               "v":"%4",
               "g":true,
               "u":"V",
               "w":"bar",
               "min":3.6,
               "max":4.3
            }
         ]
      },
      {
         "t":"Sensor Readings-传感器读数",
         "d":[
            {
               "t":"Temperature(温度)",
               "v":"%5",
               "g":true,
               "u":"°C",
               "w":"bar",
               "min":0,
               "max":80
            },
            {
               "t":"Altitude(海拔)",
               "v":"%6",
               "u":"m",
               "w":"bar",
               "min":0,
               "max":3000
            },
            {
               "t":"Pressure(压力)",
               "v":"%7",
               "u":"KPa",
               "g":true,
               "w":"bar",
               "min":54,
               "max":102
            },
            {
               "t":"External Temperature",
               "v":"%8",
               "g":true,
               "u":"°C",
               "w":"bar",
               "min":0,
               "max":80
            },
            {
               "t":"Humidity(湿度)",
               "v":"%9",
               "g":true,
               "u":"%",
               "w":"bar",
               "min":0,
               "max":100
            }
         ]
      },
      {
         "t":"GPS-地图坐标",
         "w":"map",
         "d":[
            {
               "t":"GPS Time",
               "v":"%10"
            },
            {
               "t":"Longitude(经度)",
               "v":"%11",
               "u":"°E",
               "w":"lon"
            },
            {
               "t":"Latitude(纬度)",
               "v":"%12",
               "u":"°N",
               "w":"lat"
            },
            {
               "t":"Altitude(海拔)",
               "v":"%13",
               "u":"m"
            },
            {
               "t":"No. Sats",
               "v":"%14"
            }
         ]
      },
      {
         "t":"Accelerometer-加速计",
         "w":"accelerometer",
         "d":[
            {
               "t":"X",
               "v":"%15",
               "u":"m/s^2",
               "g":true,
               "w":"x"
            },
            {
               "t":"Y",
               "v":"%16",
               "u":"m/s^2",
               "g":true,
               "w":"y"
            },
            {
               "t":"Z",
               "v":"%17",
               "u":"m/s^2",
               "g":true,
               "w":"z"
            }
         ]
      },
      {
         "t":"Gyroscope-陀螺仪",
         "w":"gyro",
         "d":[
            {
               "t":"X",
               "v":"%18",
               "u":"°",
               "g":true,
               "w":"yaw"
            },
            {
               "t":"Y",
               "v":"%19",
               "u":"°",
               "g":true,
               "w":"roll"
            },
            {
               "t":"Z",
               "v":"%20",
               "u":"°",
               "g":true,
               "w":"pitch"
            }
         ]
      }
   ]
}
5、应用例子:仪表盘界面启动

配置 Serial Studio 与设备的连接方式,本例为使用 UDP 方式进行连接,并向设备发送自定义“start”启动命令(收到命令后,设备端就可以不断发送相关可视化数据到仪表盘显示了):

../img/20210515_03_02.jpg

6、应用例子:仪表盘界面显示

6.1、设备发送的可视化数据包格式说明:

● 数据包协议:起始符为/*,结束符为*/,数据之间使用,分隔。json 中诸如"%1""%2"……表示第几个数据。上面例子最大为"%20"表示共有 20 个数据,其中第 1 个数据为数据集合的标题
● 特别要注意:数据须为UTF-8编码,如果是全英文字符则可以ACSII编码。

1
/*title,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20*/

6.2、将收到的数据在仪表盘界面显示:

使用 UDP 软件模拟设备发送数据给 Serial Studio,然后分别在 Serial Studio 的控制台、仪表盘、小部件窗口查看数据:

../img/20210515_03_03.jpg