標(biāo)題: SerialChart串口數(shù)據(jù)實(shí)時(shí)生成圖形 串口波形描繪_使用說(shuō)明翻譯 [打印本頁(yè)]

作者: 51黑dd    時(shí)間: 2016-4-9 21:07
標(biāo)題: SerialChart串口數(shù)據(jù)實(shí)時(shí)生成圖形 串口波形描繪_使用說(shuō)明翻譯
在做PID調(diào)試,還有卡爾曼濾波融合的時(shí)候,如果有一個(gè)能把數(shù)據(jù)實(shí)時(shí)傳回電腦進(jìn)行分析,并且生成圖形的軟件,會(huì)對(duì)調(diào)試過(guò)程起到事半功倍的效果。

軟件的SVN地址是http://code.google.com/p/serialchart/

配置方法介紹地址是http://code.google.com/p/serialchart/wiki/ConfigurationFileSyntax




軟件下載: SerialChart.zip (5.4 MB, 下載次數(shù): 329)

下面介紹下這個(gè)軟件的使用:

哦 附張前幾天的測(cè)試圖吧





介紹
SerialChart通過(guò)一個(gè)文本來(lái)進(jìn)行配置。通常的格式如下:
[section1]
param1 = value
param2 = value
...

[section2]
param1 = value
param2 = value
Setup 部分
每個(gè)配置文件由[_setup_]部分開(kāi)始,這里你能設(shè)置全局參數(shù)比如:
[_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_]部分能夠使用的參數(shù):
port
這就是軟件進(jìn)行串口通訊的接口啦,比如COM1,COM2.。。
baudrate
波特率,目前只支持以下幾種波特率:
110,300,600,1200,2400,9600,19200,38400,57600,115200.
請(qǐng)注意目前的版本不支持流量控制的參數(shù)設(shè)置,默認(rèn)設(shè)置為“無(wú)”,停

止位默認(rèn)為1,采用最常用的設(shè)置
width,height
chart區(qū)域的象素寬度和高度
background_color
chart的背景顏色
關(guān)于顏色的一些提醒 請(qǐng)注意在.SCC文件中(也就是此軟件的配置文件)顏色可以用16進(jìn)制來(lái)表示(如 #FFF,#FFFFFF)
或者用一些已命名的顏色(白色,藍(lán)色,品紅,粉紅,灰色)
更多顏色請(qǐng)參考 http://www.w3.org/TR/SVG/types.html#ColorKeywords 請(qǐng)注意特殊的
顏色“透明”代表“沒(méi)有顏色”。如果你不想讓一些元素被繪制出來(lái)你可以使用它
grid_h_origin, grid_v_origin
水平方向和豎直方向都有一條原始的軸線,一般和普通的格點(diǎn)線(每條曲線都是由一個(gè)個(gè)像素組成的,所以叫格點(diǎn)線)顏色不同這兩個(gè)參數(shù)確定了軸線在圖表中距離頂點(diǎn)、左側(cè)邊界的位移,單位為像素
grid_h_origin_color, grid_v_origin_color
原始軸線的顏色
grid_h_step, grid_v_step
這兩個(gè)參數(shù)確定了每次畫(huà)線的長(zhǎng)度(我也搞不懂這句話。。)
grid_h_color, grid_v_color
普通格點(diǎn)線的顏色
Default and Field Sections
(默認(rèn)設(shè)置和區(qū)域設(shè)置)SerialChart能識(shí)別CSV(逗號(hào)分隔數(shù)據(jù))的數(shù)據(jù)包(將來(lái)可能會(huì)支持更多的格式)。每一行傳送一份數(shù)據(jù)包,每一份數(shù)據(jù)包中的不同數(shù)據(jù)用逗號(hào)來(lái)分隔。下面的例子是SerialChart能識(shí)別的格式:
100,0.50,0.70
101,0.30,0.50
102,0.25,0.35
在配置文件中,下面的部分為每份數(shù)據(jù)包中的不同數(shù)據(jù)設(shè)定了參數(shù)比如:
[_default_]
min=-1
max=1

[Field1]
color=gray
min=0
max=255

[Field2]
color=blue

[Field3]
color=red
通過(guò)[_default_]你可以對(duì)所有區(qū)域進(jìn)行一個(gè)默認(rèn)設(shè)置。這些參數(shù)對(duì)所有的數(shù)據(jù)區(qū)都有效除非在[Field]區(qū)域中他們被相同的名字覆蓋在上面的例子中,[Field2]和[Field3]將繼承[_default_]區(qū)的默認(rèn)設(shè)置
min=-1,max=1,但[Field1]中的參數(shù)把值改為了min=0 and max=255
在你設(shè)置了默認(rèn)設(shè)置后你應(yīng)該為數(shù)據(jù)包中每個(gè)區(qū)域進(jìn)行新的設(shè)置。設(shè)置順序應(yīng)根據(jù)他們?cè)跀?shù)據(jù)包中的先后而設(shè)置[field]部分的名字可以隨意命名但不能和[_setup_],[_default_]相同,也不能以'_'開(kāi)頭和結(jié)尾,比如可以命名為[distance],[time],但不能命名為[_setup],[_time_]下面的參數(shù)是[default]和[field]區(qū)能識(shí)別的參數(shù)min,max這兩個(gè)值是對(duì)應(yīng)曲線在圖中的上下界。換句話說(shuō),如果你設(shè)定min=-1,max=1,那數(shù)據(jù)“1”將會(huì)被描繪在圖中的頂端,數(shù)據(jù)“-1”將被描繪在圖中的底端,而“0”將會(huì)描繪在圖的正中間。數(shù)據(jù)會(huì)從[min,max]映射到圖中的[0,height],height就是曲線圖的高度,在開(kāi)始的[_setup_]中可以設(shè)置(這有點(diǎn)像arduino中的map()函數(shù))
color
設(shè)置數(shù)據(jù)所對(duì)應(yīng)曲線的顏色。如果你不想讓某個(gè)數(shù)據(jù)被繪制出來(lái)可以設(shè)置為transparent(透明)
dash
可將曲線變成一條虛線,如,當(dāng)dash=3,軟件會(huì)將3個(gè)數(shù)據(jù)繪制出來(lái),再停止繪制3個(gè)數(shù)據(jù),再繪制3個(gè)數(shù)據(jù),如此反復(fù)。。

翻譯完畢,加入一些個(gè)人使用心得
1、串口只能同時(shí)被一個(gè)程序使用,當(dāng)你要更新程序時(shí),要點(diǎn)
SerialChart中的stop
2、剛下完程序打開(kāi)SerialChart可能沒(méi)反應(yīng),按一下復(fù)位再等個(gè)幾秒應(yīng)
該就好了,bootloader的啟動(dòng)速度,你懂得。。。
3、[field]的名字千萬(wàn)不能相同,否則有些曲線是繪制不出來(lái)的

發(fā)個(gè)我測(cè)試超聲波的例子吧
Serial Chart代碼:
  1. [_setup_]
  2. port=COM3   
  3. baudrate=9600

  4. width=10000
  5. height=500
  6. background_color = white

  7. grid_h_origin = 0
  8. grid_h_step = 1
  9. grid_h_color = #EEE
  10. grid_h_origin_color = #CCC

  11. grid_v_origin = -100
  12. grid_v_step = 0
  13. grid_v_color = #EEE
  14. grid_v_origin_color=#CCC
  15. [_default_]
  16. min=0
  17. max=500

  18. [pulsetime]
  19. min=0
  20. max=40000
  21. color=bisque

  22. [pulsetime1]
  23. min=0
  24. max=40000
  25. color=gray


  26. [distance1]
  27. color=pink
  28. min=0
  29. max=400



  30. [distance2]
  31. color=gold
  32. min=0
  33. max=400

  34. [distance]
  35. color=red
  36. min=0
  37. max=400
復(fù)制代碼

arduino代碼:
  1.     void setup()
  2.     {
  3.       pinMode(BeePin,OUTPUT);
  4.       pinMode(UMT,OUTPUT);
  5.       pinMode(UMR,INPUT);
  6.       Serial.begin(9600);
  7.       Serial.println("begin");
  8.     }

  9.     unsigned long Detect1()
  10.     {
  11.       //一坨
  12.       return 10000;
  13.     }

  14.     unsigned long Detect2()
  15.     {
  16.       //兩坨
  17.       return 20000;
  18.     }
  19.     void loop()
  20.     {
  21.       distance1=Detect1();
  22.       distance2=Detect2();
  23.       Serial.print(distance1,DEC);
  24.       Serial.print(",");
  25.       Serial.print(distance2,DEC);
  26.       Serial.print(",");*/
  27.        delay(100);
  28.     }
復(fù)制代碼

arduino代碼省略了很多。。。寫(xiě)的太爛了。。 大體是這樣的
好了,希望這個(gè)軟件能幫上大家的忙


問(wèn):請(qǐng)教個(gè)問(wèn)題,我用串口發(fā)送數(shù)據(jù)的時(shí)候發(fā)現(xiàn),Serial.print好像強(qiáng)制以ascii形式發(fā)送的,比如說(shuō)101,其實(shí)發(fā)送的是字符串“101”的ascii碼49、48、49,這樣處理數(shù)據(jù)的話好像效率特別低,有沒(méi)有什么比較好的辦法直接傳輸數(shù)值的?

答:
你可以給他加上格式
具體可以參考一下他的reference
關(guān)于Serial_Print
他的原文是這樣的:
Serial.print(78, BIN) gives "1001110"//輸出二進(jìn)制
Serial.print(78, OCT) gives "116"//輸出8進(jìn)制
Serial.print(78, DEC) gives "78"//輸出10進(jìn)制
Serial.print(78, HEX) gives "4E"//輸出16進(jìn)制
Serial.println(1.23456, 0) gives "1"//輸出浮點(diǎn),后面的數(shù)字代表小數(shù)位數(shù)
Serial.println(1.23456, 2) gives "1.23"//同上
Serial.println(1.23456, 4) gives "1.2346"//同上

問(wèn):
不知道你有沒(méi)有試過(guò),這樣發(fā)送的其實(shí)還是ascii值
答:
恩,我仔細(xì)看了一下他的reference,好像arduino會(huì)自動(dòng)把所有類(lèi)型轉(zhuǎn)為ASCII碼
Numbers are printed using an ASCII character for each digit. Floats are similarly printed as ASCII digits, defaulting to two decimal places. Bytes are sent as a single character. Characters and strings are sent as is.
我現(xiàn)在也想不到什么好辦法
可以提高波特率吧,在一定范圍內(nèi)
還有,避免使用float,或者壓縮一下數(shù)據(jù),呵呵
這個(gè)可以討論一下,但是目前的通信速率已經(jīng)夠我用了



作者: rronglin    時(shí)間: 2016-12-28 21:09
下載下來(lái)看看。
作者: TeddyC    時(shí)間: 2017-4-6 15:47
這翻譯沃幾夫雷啊
作者: nnq    時(shí)間: 2017-4-19 17:00
使用起來(lái)設(shè)置數(shù)據(jù)流格式很啰嗦但也有必要
作者: flyingmind    時(shí)間: 2017-8-9 10:50
不知道arduino程序中發(fā)送數(shù)據(jù)是否需要在中斷中進(jìn)行?否則采樣間隔不固定,這個(gè)波形還有意義么?
作者: zmc419    時(shí)間: 2017-9-11 22:26
很好很好
作者: jinshan010    時(shí)間: 2017-11-15 16:24
多謝分享
作者: ebaeab    時(shí)間: 2017-11-28 17:22
謝謝,正需要!
作者: uhhznb    時(shí)間: 2018-1-17 16:57
謝謝,我做pid整定需要。
作者: Pillar2060    時(shí)間: 2018-3-13 16:59
軟件事自己做的嗎
作者: Pillar2060    時(shí)間: 2018-3-13 17:00
幫頂,厲害了樓主
作者: coulomb    時(shí)間: 2018-3-20 14:44
下載下來(lái)看看;很好!!找好久;總算有類(lèi)似的軟件
作者: xf0902    時(shí)間: 2018-4-8 11:38
下載下來(lái)看看;很好!!找好久;總算有類(lèi)似的軟件
作者: YUM    時(shí)間: 2018-5-24 07:43
好厲害啊,學(xué)習(xí)學(xué)習(xí)
作者: tsgx519    時(shí)間: 2018-8-10 19:18
正需要這樣的軟件
作者: swjtu19980828    時(shí)間: 2018-8-15 00:14
贊!。。。
作者: jc235    時(shí)間: 2018-11-27 13:20
很不錯(cuò)!
作者: hayppy    時(shí)間: 2019-1-18 18:20
這個(gè)不錯(cuò)哦~




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1