題:
串行數據繪圖程序
akellyirl
2014-04-15 14:08:12 UTC
view on stackexchange narkive permalink

我需要繪製來自Arduino的串行數據。

我需要支持:

  1. 各種數據格式(例如,有符號,無符號,8位,16位);
  2. 在相同的軸上繪製多個數據;
  3. 導出/導入文件數據。
  4. ol>

    從Arduino繪製串行數據是一種常見的需求,我的問題是:可以使用哪些程序/實用程序從Arduino繪製滿足上述需求的串行數據?

    您建議的方法的優點/缺點是什麼?

我決定重新打開您的上一次編輯。從這個問題的立場來看,它似乎是在主題上,因為它是*特定的。*我將對任何人都很清楚(因為這些類型的問題不多):如果這個問題太離題了,我可能必須介入但是,發生這種情況的可能性很少。 :) @JRobert如果GnuPlot滿足問題的要求,則將其發布。
Arduino Playground上的[“與其他軟件接口”](http://playground.arduino.cc/Main/InterfaceWithSoftware)頁面顯示了從Arduino到iPhone,Windows PC, Linux PC等
二十 答案:
niutech
2015-02-23 22:40:09 UTC
view on stackexchange narkive permalink

有一些很好的可視化串行數據的應用程序,包括:

(這是社區Wiki,您可以展開列表。)

我糊塗了。我在下面發布了自己的解決方案,但是現在我不確定,因為它是Wiki,所以編輯您的帖子是否更好。你怎麼看 ?
@Overdrivr當然,為他人著想,請擴展此Wiki!
JRobert
2014-04-19 02:15:14 UTC
view on stackexchange narkive permalink

GnuPlot

優點:它非常靈活,可編寫腳本並且可以免費使用。

缺點:學習起來有點複雜(但是我知道如何在幾分鐘內開始使用,在一兩個小時內就可以正常運行),在終端窗口中運行(如果您認為這是一個缺點) )。

我發現非常有用的一點是,編寫腳本以定期重新加載終端程序的日誌文件,以便在實驗進行時獲得動態圖。

Image of GnuPlot



編輯:這是繪製它的GnuPlot腳本:

 #!/ usr / local / bin / gnuplot -rv#注意此處反向視頻^^^直到我找到一種將其放入腳本的方法#gpFanCtl-繪製DiffThermo風扇控制器數據(高空,低速,Tdiff,風扇狀態)。#$ Id:gpFanCtl,v 1.8 2014-04-28 09:40:51-04 jrobert Exp jrobert $ set terminal x11 1 noraiseset xtics 3600set mxtics 4set xdata timeset ytics 1 nomirrorset mytics 2set y2range [0:3] set y2tics 1set my2tics 4set gridset ylabel'Temperature,degC'set y2label'Tdiff,degC'textcolor rgb'# cd'/ Users / jrobert / Desktop'使用“($ 0 * 4):1”繪製“ Logfile.txt”標題,並使用($ 0 * 4):2標題lc rgb“ red”,\“ Logfile.txt” “ alow”與行lc rgb“#3982FF”,\“ Logfile.txt”使用($ 0 * 4):3標題“ Tdiff”與行lc rgb“#00CD63”軸x1y2,\“日誌文件.txt”,使用($ 0 * 4):4標題“ Fan”,行lc rgb“橙色”軸x1y2;暫停4refreshreread  
這看起來很棒。您可以添加一些演示代碼嗎?
但是它將繪製Logfile.txt中的數據,而不是實時串行數據。如何將其連接到串行端口?
不,此腳本不是“實時”的,可能最多延遲4秒鐘。 Logfile.txt是終端程序輸出的捕獲文件。就我而言,數據收集系統每4秒鐘採樣並記錄一次日誌,而GnuPlot腳本每4秒鐘重新繪製一次日誌文件。對於我正在做的事情(監視室溫),這足夠動態。
Connor Wolf
2014-04-18 06:13:42 UTC
view on stackexchange narkive permalink

我需要使用 Matplotlib進行任何繪圖。

它不是arduino特有的,但是它是非常出色的 Python 繪製工具包。

我構建了許多應用程序,這些應用程序將來自各種微控制器的數據實時繪製到圖形上,但這實際上是一個兩步過程:1.獲取數據從設備到計算機,2.繪製實時數據。

真的,我認為您應該將問題分為兩個部分:

  • 如何從Arduino /獲得數據任何串行設備都可以輕鬆地連接到計算機。
  • 什麼是易於使用的優質繪圖庫。
+1。 “ Arduino實時繪圖Matlab” [https://www.youtube.com/watch?v=ntHZsLmNkgw]視頻是否使用相同的技術?
是的它使用將arduino數據讀取到matlab變量中的調用,然後使用使用matlab變量更新matlab圖的調用。
Matplotlib是python,而不是matlab。
我不同意您的意見,這個問題不應一分為二。有些解決方案(例如我在下面發布的解決方案)可以同時解決這兩個問題,因為麻煩的是要重新使用arduino應用程序進行遠程監視和控制,而且還因為編寫用於實時繪圖的python代碼實際上並非易事。使用matplotlib可以完成操作,但是顯然有更好的替代方法,例如pyqtgraph。
對於第1部分:從Arduino獲取數據:https://github.com/ElectricRCAircraftGuy/eRCaGuy_PyTerm
Nate
2017-01-05 07:54:24 UTC
view on stackexchange narkive permalink

SerialPlot(免費)。

其他功能

  • 放大數據
  • 單擊數據點以查看值
  • 將命令發送回Arduino
  • 調整繪製的點總數
  • 能夠在自己的自動縮放圖中顯示每個通道
  • 解釋二進制,ASCII和自定義數據包
  • 演示模式可讓您使用功能

enter image description here

好答案,我喜歡serialplot,它會自動找到我的COM端口和波特率,我只需要從二進制更改為CSV,然後增加到3個通道(對於磁力計),就可以繪製出精美的圖。
這是最簡潔且易於使用的-但我確實希望有一個Mac Binary :)
AppImage可用=>超快速安裝!
但是似乎在Ubuntu(AppImage)中看不到SerialPlot的圖標。
akellyirl
2014-04-15 14:16:10 UTC
view on stackexchange narkive permalink

在這裡回答我自己的問題。.如上所述,我使用Bridge Control Panel。

優點:有很多功能。

缺點:設置麻煩且語法/錯誤非常差

使用:您需要一次在串行端口上通過一個字節寫入Arduino數據。對於如下所示的int數據類型:

  // RX8 [h = 43] @ 1Key1 @ 0Key1Serial.print(“ C”); Serial.write(data>>8);序列。 write(data&0xff);  

在Bridge中讀取數據的命令是:

  RX8 [h = 43] @ 1Key1 @ 0Key1  

RX8是讀取命令[h = 43]表示下一個有效字節是ASCII中的“ C”,然後是Key1的高字節,然後是Key1的低字節

在Bridge中看起來像這樣:

enter image description here

enter image description here

ah01
2014-09-24 06:10:41 UTC
view on stackexchange narkive permalink

您可以嘗試 序列圖 。這是相當嚴格的程序。它完全符合您的要求。唯一的缺點是它需要CSV格式的數據(不符合第一點)。

項目頁面的屏幕截圖:

example

我嘗試了一下,發現開始工作很笨拙,沒有默認配置,沒有自動縮放,在忙了半個小時的語法後,我仍然沒有一條直線,所以我放棄並使用了SerialPlot在幾分鐘內就可以工作了,只需要指定ascii文字和頻道數即可。
Sebastian Zeki
2016-03-01 02:20:10 UTC
view on stackexchange narkive permalink

沒有人提到過具有超級通用性的處理。您不僅可以進行繪圖,還可以做很多事情,但是,如果您只想這樣做,就可以使用gwoptics庫。按照此處的指示連接Arduino和Processing。

Overdrivr
2016-03-01 17:07:44 UTC
view on stackexchange narkive permalink

您可能對遙測 在Github上查看感興趣。這是一種易於使用的通信協議,具有乾淨的接口,可與Arduino / Mbed設備進行雙向通信。

如果您不想閱讀這篇冗長的文章,請參閱 其中所有出色功能的演練

該庫的強大功能來自桌面命令行界面(無需編程即可無需

只需輸入命令,便可以打開高性能圖(比使用matplotlib可以完成的功能高得多)。

該協議支持複雜的數據結構。目前,可以從嵌入式主板發送陣列和稀疏陣列。

從命令行界面打開的圖了解數據的類型,對於數組,不是針對每個樣本隨時間繪製圖表,而是針對其自身索引繪製樣本。

在在不久的將來,計劃增加對空間坐標的支持(xyz數據),以便您立即繪製空間數據。再次,這些圖將弄清所有內容,將數據繪製在2D或3D空間中,您可以專注於開發應用程序。

我相信這些功能對於這些功能只是唯一

液位測定CLI PyPI version

一旦安裝了 pip ,就可以使用命令行啟動

  pytlm  

然後您可以 connect ls (列出)收到的主題,打印在主題上收到的數據,在主題上的 pub (發布),或打開主題上的 plot 以實時顯示接收到的數據

enter image description here

enter image description here

入門

Wiki

PS:我是作者。

我之所以開發它,是因為我找不到能夠讓我做到的解決方案:

  • 快速編寫PC腳本來控制Arduino
  • 快速調試
  • 繪製複雜數據(不僅僅是隨時間變化的值)

上述所有功能,而無需使用專有解決方案或膨脹的GUI。

使用該庫,在Arduino和PC之間建立通信的時間通常從半天到5分鐘。

PS:完全支持在python包中記錄串行端口數據(原始數據和解碼數據)。我打算用它來實現離線重放功能(模擬串行數據流)
AHKh
2014-07-31 13:09:34 UTC
view on stackexchange narkive permalink

您可以使用 MATLAB Student Edition,這也可以節省您進行進一步分析的時間。您只需在MATLAB中打開COM端口並繪製接收到的信號和/或將信號保存到工作區或其他。 MATLAB使一切變得簡單!

歡迎使用Arduino SE!您能否編輯答案以添加更多信息來描述其如何滿足OP的需求,還可能添加一些其他信息(例如鍊接或照片)?謝謝!
好的答案,不會考慮使用Matlab,這裡有一個SO線程https://stackoverflow.com/questions/19483098/using-matlab-to-display-streaming-serial-data
mba7
2014-09-21 20:09:16 UTC
view on stackexchange narkive permalink

我用python做了一個等效的工具,可以打印來自ADXL345加速度計的實時數據。 https://github.com/mba7/SerialPort-RealTime-Data-Plotter

也許對某人會有幫助

enter image description here

只需選擇串行com和速度並以以下格式發送串行數據:

  • 3個輸入,每個輸入為2個字節(二進制補碼)
  • 6個字節,以空格分隔
  • 數據包是一個以'\ n'結尾的字符串

可以很容易地更改此格式

您能解釋一下如何使用它,它的優缺點是什麼?
ed82484954
2015-11-10 21:33:40 UTC
view on stackexchange narkive permalink

CSV格式對於任何數據(有符號/無符號,各種大小和精度)最通用。

跨平台(用Java / Scala編寫)工具 Scsvlog可以從串行端口/套接字接收/解析CSV字符串,顯示值和繪製圖表(最多8個)。 / p>

很遺憾,現在無法再找到該工具-原始鏈接已死,我似乎找不到任何副本。
newtonis
2016-02-21 10:50:13 UTC
view on stackexchange narkive permalink

您可以嘗試我為此提案開發的軟件。目的是易於使用。請參見 SerialGraphicator-開源的免費串行端口客戶端,該客戶端功能能夠以JSON格式接收圖形值。

David Cary
2014-09-25 03:06:04 UTC
view on stackexchange narkive permalink

雖然我本人還沒有使用過它,但在PC上運行“ rqt_plot”似乎是一種流行的方法,可在通過運行草圖的Arduino通過串行端口在PC上繪製數據其中包括 rosserial_arduino庫或 ros_arduino_bridge庫。

Jazawe
2016-08-04 21:43:17 UTC
view on stackexchange narkive permalink

我知道這是一個非常老的問題,但是我最近創建了一個Mac應用程序,很好地解決了這個問題。您可以在www.bloonapp.com上找到有關它的更多信息。網站上有一些演示視頻,您可以查看。 enter image description here

截至18年8月1日,此網站已失效。
Ed Mallon
2016-08-17 23:43:12 UTC
view on stackexchange narkive permalink

我知道您可能正在追求更高級的GUI輸出,但是我設法複製了一個通常用示波器完成的任務: Arduino Serial Plotter output

使用串行您可以在eBay上以3美元的價格獲得Arduino IDE中的繪圖儀和ADC模塊。我承認這有點粗糙,但是在您投資於Python / Matlab / ect級別的解決方案之前,也許有一段時間可以使用該工具。它非常易於使用。將SD卡記錄添加到該過程不會花費太多。

請參閱: https://edwardmallon.wordpress.com/2016/08/15/using-the-arduino-uno-作為基本數據採集系統/

mahesh
2016-02-29 11:33:02 UTC
view on stackexchange narkive permalink

幾乎有用。它需要:

  1. 將串行數據記錄到文件中,或
  2. 從文件中繪圖並每xxx毫秒更新一次。
  3. ol>

    Live Graph是更好的選擇,我將其與 Tera Term結合使用,後者通過USB /串行鏈接獲取數據(並將其保存到日誌文件中,然後Live Graph對其進行輪詢)。

    在緩存數據時,“實時圖”有時會出現錯誤,並且我還沒有找到設置移動窗口以顯示結果的方法。同樣,顯示多個圖形需要手動縮放,但是儘管如此,它仍然非常有用。它是用Java編寫的,因此您需要JRE。我更喜歡這樣做,而不是像其他一些繪圖程序一樣必須安裝python。另一個缺點是,它會打開4個不同的窗口,當我想在它和Tera Term之間切換時,這很痛苦。

    我還沒有找到可以

    1. 可執行文件(.EXE),因此沒有外部依賴
    2. 包括終端仿真器或串行數據記錄器
    3. 記錄串行數據
    4. 從CSV中繪製多個項目
    5. 允許使用CSV和製表符分隔的數據(在同時監視圖形的同時滾動時更易於閱讀。
    6. 允許設置不同的設置縮放每個覆蓋圖,而不必將所有比例縮放到[0..1]或設置乘數,即允許為每個被繪製的項目設置[y0..y1]範圍。
    7. ol>
歡迎使用Arduino SE!您的答案很有用,但您可以使用編輯器中的`?`按鈕查看的降價指南來改善答案的格式。
Ali80
2018-07-29 18:55:36 UTC
view on stackexchange narkive permalink

遙測查看器

優點:

  1. 易於使用
  2. 直觀且靈活的用戶界面
  3. 開放源代碼和免費
  4. 不同類型的圖形
  5. 圖形更新速度非常快
  6. ol>

    缺點:

    1. 停止開發
    2. 二進制數據格式尚未完成。
    3. 原始圖形控件(如縮放,屏幕截圖和... enter image description here li) > ol>
Александр
2018-12-06 23:02:01 UTC
view on stackexchange narkive permalink

SVisual不僅為Arduino監視和記錄信號。

enter image description here enter image description here

視頻示例

下載(免費)

user2298995
2019-01-27 21:17:31 UTC
view on stackexchange narkive permalink

串行繪圖儀是一個簡單的程序,我已經與電子生產,在下面的格式接收數據: DATA1,DATA2,時間戳; 代碼>並且將其轉換成一個實時圖表。

enter image description here

detector
2019-10-06 02:54:42 UTC
view on stackexchange narkive permalink

我正在使用processing.org從Arduino進行串行繪圖。這是我能找到的唯一一款使我能夠製作真實的直方圖的應用程序(例如,一百個裝箱中的一百萬個事件),並且除了顯示每個通道的平均sigma之外,還顯示各種信息編號。兩個主要問題:A)事實證明它是基於Java的,沒有無符號的字節B)與輸入所需的循環緩衝區和數據中的標記同步。 (高速,無握手)



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...