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

模擬IC設(shè)計(jì)中Spectre和HSPICE仿真工具的起源、差別和優(yōu)劣勢(shì)
DRV8821-23 EVM圖形用戶界面

DRV8800-01 EVM圖形用戶界面

芯原股份與開源圖形庫(kù)LVGL達(dá)成戰(zhàn)略合作
圖形用戶界面與命令行接口的比較
如何在低成本ARM平臺(tái)部署LVGL免費(fèi)圖形庫(kù),基于全志T113-i
ElfBoard開源項(xiàng)目|“智慧教室”開源項(xiàng)目技術(shù)文檔

labview字符串的四種表示各有什么特點(diǎn)
更強(qiáng)的無(wú)線(雙)串口數(shù)據(jù)記錄 調(diào)試工具

評(píng)論