先列舉這個工具的一個特點:
某個主控板正在控制從機的時候,可以把 PC 電腦掛到同一條 RS485 總線上,PC 可以讀寫從機、查看從機打印消息、查看數據波形,完全不干擾現有主板對從機的控制。
跨平臺,支持 Linux、Windows、MacOS、樹莓派 ……
此工具代碼架構是 python + web,python 和每個 web 頁面通過單個 websocket 管道通訊。
web 端是裸 javascript (vanilla, es6), 不需要瞭解特定的前端框架,就可以參與代碼修改。也方便拿此 app 當模板做一些產品的專用上位機軟件。
mcu 和 python 之間是 cdnet 協議,目前只用到 level 1 格式的最簡版本。
python 和 web 之間的協議也是類似 cdnet,地址和端口用任意字符串代替。
運行 python 程序后,首先打開主頁:
Available 列出電腦所有串口,只要粘貼其中任意一小段字符串,填到 Serial 第一個輸入框就可以了,這樣的好處是,如果端口變化,依然可以打開正確的串口?;蛘呤沁x擇插在指定 USB 口的串口。
使用過程中,串口掉線會自動重連接,右邊是 python 后臺打?。翰灏沃笥殖晒χ亟?。
Devices 主要是選擇調試哪一個從機,支持同時調試多個設備,數量不限。
Logs 是所有設備的打印匯總,每個設備各自的頁面只打印各自的調試信息。
打印支持彩色 (ANSI), 和 Linux 下的終端一樣,方便在很多 log 中快速定位錯誤。
Logs 窗口可以隨意調整大小。
編輯的數據都會自動保存。
下面是具體打開一個設備的調試窗口,首先是數據列表讀寫(俗稱寄存器):
鼠標放到寄存器名稱和數據上,會分別提示寄存器說明,和默認數據(默認數據也是從設備中讀?。?。
寄存器的讀寫是按組進行,可以保證一組數據的原子性。
組可以隨便編輯。
點某一組的 R 會讀該組所有數據,W 則是寫一組數據。點最上面的 Read All 和 Write All 則是依次讀寫每一組。
列表是由不同設備的 json 文件配置,其中寄存器列表是設備上電自動打印出來的,拷貝粘貼到 json 模板中即可。
支持數組和多種數據格式,可以設置是否以 16 進制顯示(數據框帶 H 標記),或者是 uint8_t 數組(帶 B 標記)。
同一個組內部,有一些帶一個小凹槽,表示兩個寄存器之間有空洞。首次寫入前會回讀該組數據,避免修改空洞中的數據,空洞可能是空的,也可能是廠商 reserved 寄存器。
這是設備頁面的 Log 調試,同樣可以隨便改變大?。?/p>
再下面是波形窗口,也支持選擇大小。
波形窗口:
每個窗口下面會提示當前選中數據的值,方便且準確。
可以隨便打開、關閉某一條曲線,曲線多的時候不容易亂,圖中 tc_speed 是關閉狀態,但依然會顯示數值。
鼠標滾輪可以配合 shift 或者 ctrl 分別對 x 和 y 軸進行縮放,默認是兩個軸一起縮放。
支持觸摸屏縮放,同樣支持 x 和 y 軸不同比例的縮放。
雙擊恢復默認示圖(最大化顯示所有數據)。鼠標中鍵可拖拽平移(觸摸板也可以)。
可以設置數據深度,老數據自動刪除。方便動態顯示數據(示波器效果)。
波形窗口的個數不限。
上圖下面部分是 IAP 和 寄存器 數據導出和導入:
IAP 支持整體回讀驗證、設備端計算并返回 crc 進行驗證、不驗證。
寄存器格式改變后,可以通過導出和導入進行遷移。
會一并導出 log、波形數據,譬如你是做電機控制的,可以讓客戶把他采集到的波形發給你分析,以此遠程協助客戶調 PID 等參數。
最后是 json 配置,最上面的 reg 是設備上電打印出來的(mcu 端也是自動生成,不用自己填地址、大小和數據類型,不容易出錯):
為了方便閱讀,有 16 進制數和注釋,所以使用的是 json5 格式。
fmt 字符帶 [] 的是數組,在一個編輯框顯示所有數據。
帶 {} 的也是數組,每組占用一個編輯框,每個框內支持多個數據,方便用于結構體數組。
reg_r 和 reg_w 是默認的寄存器分組讀寫,寫不寫無所謂,可以在 UI 上編輯。
plot 的數據的 fmt 比較關鍵,對應兩種數據包格式,x1 a1 b1 a2 b2 。。. 和 x1 a1 b1 x2 a2 b2 。。.
前者是每個包的多組數據之間共享一個 x 軸數據,fmt 首個字符 I 是 x 的格式,表示 uint32_t, 一般是 mcu 里面一個 cnt, 每個 loop 加 1,loop 周期固定,I 后面的數代表 x1 和 x2 之間的差值,從而恢復出 x2 x3 。。.
I 后面沒有數字的是后者,一個包里面的每一組數據都有一個 x 值,適合 loop 周期變化的場景。
硬件層面普通串口也支持的。
沒有硬件也可以打開上面的所有界面預覽,沒數據而已(可以導入別人導出的數據)。
用 CDBUS 專用控制器速度更快更方便,帶仲裁等特性,兼容傳統 RS485,速度最快可以到 50 Mbps,控制器也是 100% 開源:
https://github.com/dukelec/cdbus_ip 此工具默認使用的 USB 轉 RS485 的硬件也是開源的:https://github.com/dukelec/cdbus_bridge
最后提一下 CDCAM 開源RS485 攝像頭,此工具支持圖像預覽。
CDCAM 開源地址:https://github.com/dukelec/cdcam 受限 STM32G071CBT6 的性能,800x600 大小的圖片目前是 10 fps,可以發指令觸發拍照。 一條 RS485 可以掛多個攝像頭、電機,非常方便。
又譬如:傳統需要變焦的場合,直接用 2 個不同焦距的定焦攝像頭就好了,反正成本便宜。也不增加接線。 非常適合機器視覺的場合。
再順便補充一下,cdnet ip 是參考 ipv6 的概念,方便通過字符串來代表不同的地址(為了效率,mcu 用 3 字節 uint8_t 數組),其定義如下:
/* CDNET address format:** local link unique local multicast* level0: 00MM* level1: 80MM a0MM f0ML* `-with seq: 88MM a8MM f8ML* level2: c0MM* `-with seq: c8MM** Notes:* NN: net_id, MM: mac_addr, MH+ML: multicast_id*/
廣播和組播也可以用 local link 格式,一般沒有必要用 multicast 格式。一般用 80 開頭的就夠了,00 開頭的主要是為了人肉敲命令裸數據調試的時候可以少一兩個字符而已,機器就不建議用了。
unique local 是跨網段的時候才用,譬如有多個網段,每個子網有多個設備。level2 是用來傳輸框架外的任意數據,一般用來多臺電腦之間傳輸真正的 tcp/ip 協議,組電腦網絡。
cdnet ip 地址可直接映像為標準的 ipv6 地址,這樣電腦上可以通過標準 udp 編程和 mcu 互動,mcu 代碼不用變,開銷非常小,不用跑 ipv6 協議棧。
原文標題:開源串口圖形界面工具:超方便,附代碼
文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
先列舉這個工具的一個特點:
某個主控板正在控制從機的時候,可以把 PC 電腦掛到同一條 RS485 總線上,PC 可以讀寫從機、查看從機打印消息、查看數據波形,完全不干擾現有主板對從機的控制。
跨平臺,支持 Linux、Windows、MacOS、樹莓派 ……
mcu 代碼及協議參考這個開源步進電機驅動器:
此工具代碼架構是 python + web,python 和每個 web 頁面通過單個 websocket 管道通訊。
web 端是裸 javascript (vanilla, es6), 不需要瞭解特定的前端框架,就可以參與代碼修改。也方便拿此 app 當模板做一些產品的專用上位機軟件。
mcu 和 python 之間是 cdnet 協議,目前只用到 level 1 格式的最簡版本。
python 和 web 之間的協議也是類似 cdnet,地址和端口用任意字符串代替。
運行 python 程序后,首先打開主頁: Available 列出電腦所有串口,只要粘貼其中任意一小段字符串,填到 Serial 第一個輸入框就可以了,這樣的好處是,如果端口變化,依然可以打開正確的串口。或者是選擇插在指定 USB 口的串口。
使用過程中,串口掉線會自動重連接,右邊是 python 后臺打?。翰灏沃笥殖晒χ亟?。
Devices 主要是選擇調試哪一個從機,支持同時調試多個設備,數量不限。
Logs 是所有設備的打印匯總,每個設備各自的頁面只打印各自的調試信息。
打印支持彩色 (ANSI), 和 Linux 下的終端一樣,方便在很多 log 中快速定位錯誤。
Logs 窗口可以隨意調整大小。
編輯的數據都會自動保存。
下面是具體打開一個設備的調試窗口,首先是數據列表讀寫(俗稱寄存器): 鼠標放到寄存器名稱和數據上,會分別提示寄存器說明,和默認數據(默認數據也是從設備中讀取)。
寄存器的讀寫是按組進行,可以保證一組數據的原子性。
組可以隨便編輯。
點某一組的 R 會讀該組所有數據,W 則是寫一組數據。點最上面的 Read All 和 Write All 則是依次讀寫每一組。
列表是由不同設備的 json 文件配置,其中寄存器列表是設備上電自動打印出來的,拷貝粘貼到 json 模板中即可。
支持數組和多種數據格式,可以設置是否以 16 進制顯示(數據框帶 H 標記),或者是 uint8_t 數組(帶 B 標記)。
同一個組內部,有一些帶一個小凹槽,表示兩個寄存器之間有空洞。首次寫入前會回讀該組數據,避免修改空洞中的數據,空洞可能是空的,也可能是廠商 reserved 寄存器。
這是設備頁面的 Log 調試,同樣可以隨便改變大小: 再下面是波形窗口,也支持選擇大小。
波形窗口:
每個窗口下面會提示當前選中數據的值,方便且準確。
可以隨便打開、關閉某一條曲線,曲線多的時候不容易亂,圖中 tc_speed 是關閉狀態,但依然會顯示數值。
鼠標滾輪可以配合 shift 或者 ctrl 分別對 x 和 y 軸進行縮放,默認是兩個軸一起縮放。
支持觸摸屏縮放,同樣支持 x 和 y 軸不同比例的縮放。
雙擊恢復默認示圖(最大化顯示所有數據)。鼠標中鍵可拖拽平移(觸摸板也可以)。
可以設置數據深度,老數據自動刪除。方便動態顯示數據(示波器效果)。
波形窗口的個數不限。
上圖下面部分是 IAP 和 寄存器 數據導出和導入:
IAP 支持整體回讀驗證、設備端計算并返回 crc 進行驗證、不驗證。
寄存器格式改變后,可以通過導出和導入進行遷移。
會一并導出 log、波形數據,譬如你是做電機控制的,可以讓客戶把他采集到的波形發給你分析,以此遠程協助客戶調 PID 等參數。
最后是 json 配置,最上面的 reg 是設備上電打印出來的(mcu 端也是自動生成,不用自己填地址、大小和數據類型,不容易出錯):
為了方便閱讀,有 16 進制數和注釋,所以使用的是 json5 格式。
fmt 字符帶 [] 的是數組,在一個編輯框顯示所有數據。
帶 {} 的也是數組,每組占用一個編輯框,每個框內支持多個數據,方便用于結構體數組。
reg_r 和 reg_w 是默認的寄存器分組讀寫,寫不寫無所謂,可以在 UI 上編輯。
plot 的數據的 fmt 比較關鍵,對應兩種數據包格式,x1 a1 b1 a2 b2 。.. 和 x1 a1 b1 x2 a2 b2 。..
前者是每個包的多組數據之間共享一個 x 軸數據,fmt 首個字符 I 是 x 的格式,表示 uint32_t, 一般是 mcu 里面一個 cnt, 每個 loop 加 1,loop 周期固定,I 后面的數代表 x1 和 x2 之間的差值,從而恢復出 x2 x3 。..
I 后面沒有數字的是后者,一個包里面的每一組數據都有一個 x 值,適合 loop 周期變化的場景。
硬件層面普通串口也支持的。
沒有硬件也可以打開上面的所有界面預覽,沒數據而已(可以導入別人導出的數據)。
用 CDBUS 專用控制器速度更快更方便,帶仲裁等特性,兼容傳統 RS485,速度最快可以到 50 Mbps,控制器也是 100% 開源: https://github.com/dukelec/cdbus_ip 此工具默認使用的 USB 轉 RS485 的硬件也是開源的:https://github.com/dukelec/cdbus_bridge
最后提一下 CDCAM 開源RS485 攝像頭,此工具支持圖像預覽。 CDCAM 開源地址:https://github.com/dukelec/cdcam 受限 STM32G071CBT6 的性能,800x600 大小的圖片目前是 10 fps,可以發指令觸發拍照。 一條 RS485 可以掛多個攝像頭、電機,非常方便。 又譬如:傳統需要變焦的場合,直接用 2 個不同焦距的定焦攝像頭就好了,反正成本便宜。也不增加接線。 非常適合機器視覺的場合。
再順便補充一下,cdnet ip 是參考 ipv6 的概念,方便通過字符串來代表不同的地址(為了效率,mcu 用 3 字節 uint8_t 數組),其定義如下:
/* CDNET address format:** local link unique local multicast* level0: 00MM* level1: 80MM a0MM f0ML* `-with seq: 88MM a8MM f8ML* level2: c0MM* `-with seq: c8MM** Notes:* NN: net_id, MM: mac_addr, MH+ML: multicast_id*/ 廣播和組播也可以用 local link 格式,一般沒有必要用 multicast 格式。一般用 80 開頭的就夠了,00 開頭的主要是為了人肉敲命令裸數據調試的時候可以少一兩個字符而已,機器就不建議用了。 unique local 是跨網段的時候才用,譬如有多個網段,每個子網有多個設備。level2 是用來傳輸框架外的任意數據,一般用來多臺電腦之間傳輸真正的 tcp/ip 協議,組電腦網絡。 cdnet ip 地址可直接映像為標準的 ipv6 地址,這樣電腦上可以通過標準 udp 編程和 mcu 互動,mcu 代碼不用變,開銷非常小,不用跑 ipv6 協議棧。
原文標題:開源串口圖形界面工具:超方便,附代碼
文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
mcu
+關注
關注
146文章
17185瀏覽量
351727 -
代碼
+關注
關注
30文章
4803瀏覽量
68752
原文標題:開源串口圖形界面工具:超方便,附代碼
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論