指令參考
兩個版本共用同一張指令表。同名指令的語法與語意逐字相同,差異只會是「有沒有 這個指令」——標了「僅視窗版」的就是那種。
指令列在畫面最下方。Tab 補齊指令名與常見的第二個關鍵字(如 record sta + Tab),打完指令名後會在上方浮出該指令的用法與範例(Tab 候選開著時先顯示候選),Enter 執行。
- 歷史:上下鍵翻歷史。已經打了幾個字再按
↑,只會翻到開頭相同的指令(例如打rd再按↑只找rd …);一路按↓回到最後,會還原你原本打的字。 - 淺色預測:打了幾個字後,游標後面會以淡色顯示這個 Tab 最近一次以相同開頭打過的整行。游標在行尾時按
→整段帶入、Ctrl+→只帶入下一個詞;不按就不會送出(Enter只送你打的字)。 Esc清空指令列,清掉的那一行會先存進歷史,按↑就找得回來。- 編輯:指令列有字時,
Home/End跳到行首/行尾(沒字時照舊捲動面板);Ctrl+←/Ctrl+→以空白為界一次跳一個詞,Ctrl+Backspace刪掉游標前一個詞,Ctrl+Delete刪掉游標後一個詞。 - 選取、復原與剪貼簿:
Shift+方向鍵(或Home/End)延伸選取,Ctrl+A全選(焦點在 Log 面板時Ctrl+A仍是全選 Log);打字或貼上會取代選取。Ctrl+Z復原上一步(再按一次重做)。視窗版Ctrl+C/Ctrl+X/Ctrl+V複製/剪下/貼上;終端機版的Ctrl+C是關閉程式,複製用Ctrl+Shift+C或Ctrl+Insert(兩者相同:指令列有選取就複製它,否則複製 Log 或暫存器表的選取;視窗版的Ctrl+Insert也是Ctrl+C的別名),剪下用Ctrl+X或Shift+Delete,貼上用Ctrl+V或Shift+Insert。
讀這張表之前
- 數值一律是十六進位。
rd 16讀的是位移0x16,不是0x10。0x前綴可以 加,只是顯式標示。 [...]是可省略的參數,<...>是要你填的值。@p<N>指定面板:終端機版是@p0(左上)到@p3,視窗版依面板數最多到@p63(編號是十進位,@p10就是第 10 號),面板標題左邊的p0、p1… 就是它的編號。不指定時作用在目前有焦點的面板。- 每個指令下面先列出每一種用法,再給可以直接照抄的範例(
#後面是說明, 不用打)。最底下的「完整語法」是程式內建help印出的原文,給需要精確語法的人參考。 - 位址沒特別指定時用的是這個分頁的 slave 位址,也就是
addr設的那個。 - 想把手動下的指令錄成 Lua 腳本,用
record,教學見錄製 I2C 操作。
暫存器存取
| 指令 | 做什麼 |
|---|---|
| rd | 讀取暫存器位元組。 |
| wr | 寫入一或多個位元組。 |
| rd16 | 以實體 16-bit 定址讀取,用於暫存器位移超過一個位元組的 IC。 |
| wr16 | 以實體 16-bit 定址寫入。 |
| set | read-modify-write:把遮罩選中的位元設成指定值,其餘位元原樣保留。 |
| clr | read-modify-write:把遮罩選中的位元清為 0。 |
| dump | 讀出目前 bank 的全部 256 個位元組並印在 Log 面板,不寫檔。 |
| dump all | 把這個掛載的所有 bank 匯出成一個 logs/ 檔案。 |
| dump snap | 把暫存器表面板目前的快取快照匯出到 logs/。 |
| dump diff | 把存好的 dump 檔(golden)與匯流排即時讀到的值逐位元組比對;有差異或讀不到時 Batch Exit Code 為 64。 |
| dump load | 把存好的 dump 檔(golden)寫回目標 IC;預設只寫 regdef 標為 RW 的暫存器,互動介面會先跳出確認。 |
| bank | 查詢或切換目前的 bank(分頁)。 |
| bank reg | 設定 bank 暫存器的位移與遮罩,也就是告訴程式「這顆 IC 用哪個暫存器的哪幾個位元選頁」。 |
| watch | 把一個暫存器加進監看清單持續監看。 |
| unwatch | 從監看清單移除一個監看項目。 |
| trigger | 對一筆已在監看的暫存器設定觸發條件(要先 watch)。 |
| snap | 在記憶體裡留具名的暫存器快照,之後拿來和另一份快照或目前的值比對,看改了哪幾格。 |
| mark | 在暫存器表上標出「讀回時值曾經變過」的格子,標記會一直留著,直到你重設基準。 |
| undo | 還原你最後一次用 wr、set、clr 寫的值(一個指令一筆,多位元組的 wr 一次全部還原,最多留 16 筆)。 |
| regdef | 載入或卸下暫存器定義檔。 |
rd別名 r
讀取暫存器位元組。未指定數量時讀 1 個位元組;未指定位址時,用目標面板(@p<N>,或目前焦點面板)所掛那顆 IC 的位址;只有一顆 IC 的 Tab 就是 addr 設的那個位址。
| rd <offset> [@p<N>] | 讀 1 個位元組,用目前的位址。 |
| rd <offset> <count> [@p<N>] | 從位移開始連續讀 count 個位元組(十六進位)。 |
| rd <offset> <count> <addr> [@p<N>] | 指定位址讀取。位移後面只有 1 個數字時那是數量,所以要指定位址時數量一定要一起給。 |
# 讀取位移 0x16 的 1 個位元組(沒給數量,預設 1 個)。 rd 16 # 從位移 0x10 連續讀 0x20(十進位 32)個位元組。 rd 10 20 # 讀位移 0x05 的 1 個位元組,位址是 0x56——只給位移+一個數字時那是數量,要指定位址必須連數量一起打。 rd 05 1 56
rd <offset> [<count>] [<addr>] [@p<N>]wr別名 w
寫入一或多個位元組。位移後面只接 2 個數字時,第 2 個是位址而不是第 2 個值;接 3 個以上時全部都是值、不能再帶位址(要指定目標請先下 addr 或用 @p<N>)。
| wr <offset> <val> [@p<N>] | 寫 1 個位元組到目前的位址。 |
| wr <offset> <val> <addr> [@p<N>] | 寫 1 個位元組到指定位址。位移後面只有 2 個數字時,第 2 個一定是位址,所以沒辦法一次只寫剛好 2 個位元組,請分兩次寫。 |
| wr <offset> <val> <val> <val> [<val>...] [@p<N>] | 從位移開始連續寫 3 個以上的位元組到目前的位址;這種寫法不能帶位址,要換目標請先下 addr。 |
# 把 0xA5 寫進位移 0x10(目前的位址)。 wr 10 A5 # 把 0xA5 寫進位移 0x10,位址是 0x58——只有 1 個資料值時,後面那個數字是位址。 wr 10 A5 58 # 從位移 0x10 開始連續寫入 0xA5、0x5A、0x3C 三個位元組(目前的位址)。 wr 10 A5 5A 3C
wr <offset> <val> [<val>...] [<addr>] [@p<N>]rd16
以實體 16-bit 定址讀取,用於暫存器位移超過一個位元組的 IC。
| rd16 <offset> [@p<N>] | 以 16-bit 位移讀 1 個位元組,用目前的位址。 |
| rd16 <offset> <count> [@p<N>] | 從 16-bit 位移開始連續讀 count 個位元組(十六進位)。 |
| rd16 <offset> <count> <addr> [@p<N>] | 指定位址讀取;和 rd 一樣,要指定位址時數量一定要一起給。 |
# 讀取 16-bit 位移 0x0100 的 1 個位元組。 rd16 0100 # 讀取位址 0x50、16-bit 位移 0x0100 起的 0x10(16)個位元組。 rd16 0100 10 50
rd16 <offset> [<count>] [<addr>] [@p<N>]wr16
以實體 16-bit 定址寫入。
| wr16 <offset> <val> [@p<N>] | 以 16-bit 位移寫 1 個位元組到目前的位址。 |
| wr16 <offset> <val> <addr> [@p<N>] | 寫 1 個位元組到指定位址;和 wr 一樣,位移後面只有 2 個數字時第 2 個是位址。 |
| wr16 <offset> <val> <val> <val> [<val>...] [@p<N>] | 連續寫 3 個以上的位元組到目前的位址,不能帶位址。 |
# 把 0xA5 寫進 16-bit 位移 0x0100。 wr16 0100 A5 # 把 0xA5 寫進 16-bit 位移 0x0100,位址是 0x3C。 wr16 0100 A5 3C
wr16 <offset> <val> [<val>...] [<addr>] [@p<N>]set別名 s
read-modify-write:把遮罩選中的位元設成指定值,其餘位元原樣保留。
| set <offset> <mask> <val> [<addr>] [@p<N>] | 只改遮罩選中的那幾個位元,設成 val 對應的值,其餘位元不動;三個數字皆十六進位。 |
# 把位移 0x10 的低 4 位元(遮罩 0x0F)設成 0x05,高 4 位元不變。 set 10 0F 05 # 同上,但目標是位址 0x58。 set 10 0F 05 58
set <offset> <mask> <val> [<addr>] [@p<N>]clr別名 c
read-modify-write:把遮罩選中的位元清為 0。
| clr <offset> <mask> [<addr>] [@p<N>] | 把遮罩選中的位元清為 0,其餘位元不動;位移與遮罩皆十六進位。 |
# 把位移 0x10 的低 4 位元(遮罩 0x0F)清為 0。
clr 10 0F
clr <offset> <mask> [<addr>] [@p<N>]dump
讀出目前 bank 的全部 256 個位元組並印在 Log 面板,不寫檔。
| dump [<addr>] [@p<N>] | 讀出目前 bank 的全部 256 個位元組,印在 Log 面板;不會存檔,要存成檔案請用 dump all。 |
# 讀出目前位址、目前 bank 的 256 個位元組。 dump # 讀出位址 0x58 那顆裝置目前 bank 的 256 個位元組。 dump 58
dump [<addr>] [@p<N>]dump all
把這個掛載的所有 bank 匯出成一個 logs/ 檔案。不帶參數時沿用目前追蹤到的 bank 狀態。
| dump all [@p<N>] | 不指定 bank 暫存器時,沿用這個掛載目前的 bank 選頁設定,把遮罩能表示的每一頁都切過去匯出;遮罩是 0xFF 時推不出頁數,會拒絕執行(請改用下面的完整形式)。沒有設定 bank 的掛載只匯出單一頁、不切頁。 |
| dump all <bank_reg> <mask> <count> [<addr>] [@p<N>] | 明確指定 bank 選頁暫存器位移、位元遮罩(皆十六進位),以及要切幾頁(十進位,即頁 0 到 count-1,不能超過遮罩能表示的頁數);這是本次的一次性參數,不會覆寫已追蹤的 bank reg 設定,逐頁讀完寫成一個 logs/ 檔案。 |
# 用這個 Tab 目前追蹤的 bank 狀態,把全部 bank 匯出成一個檔案。 dump all # bank 選頁暫存器在位移 0x7F、用遮罩 0x03 選頁,切 4(十進位)頁全部匯出。 dump all 7F 03 4
dump all [<bank_reg> <mask> <count(dec)>] [<addr>] [@p<N>]dump snap
把暫存器表面板目前的快取快照匯出到 logs/。不碰匯流排,離線也能用。
| dump snap [@p<N>] | 把暫存器表面板目前顯示的快取內容原樣寫成一個 logs/ 檔案,完全不碰匯流排,離線或裝置離線時也能用。 |
# 把目前焦點面板的快取快照存成檔案。 dump snap # 把面板 0 的暫存器表快取快照存成檔案。 dump snap @p0
dump snap [@p<N>]dump diff
把存好的 dump 檔(golden)與匯流排即時讀到的值逐位元組比對;有差異或讀不到時 Batch Exit Code 為 64。
| dump diff <file> [<addr>] [@p<N>] | 讀回目標掛載目前的暫存器值(同時寫出 logs/ 的 live 檔作為追溯證據),與 <file> 逐位元組比對。檔內的 -- 視為略過;檔頭位址與目標不同時須明確給 <addr>;多 bank 檔依檔頭的 bank_reg/mask 切 bank,單段檔只比對目前的 bank。 |
# 拿產線基準檔比對目前掛載的晶片。 dump diff logs/dump_20260930_100000_addr51_allbanks.txt # 把 golden.txt 拿去比對面板 1 上位址 0x58 的晶片。 dump diff golden.txt 58 @p1
dump diff <file> [<addr>] [@p<N>]dump load
把存好的 dump 檔(golden)寫回目標 IC;預設只寫 regdef 標為 RW 的暫存器,互動介面會先跳出確認。
| dump load <file> [raw] [force] [<addr>] [@p<N>] | 依 regdef 只寫 RW 暫存器(檔內的 -- 與 RO/WO/W1C/W0C/RSVD 一律略過);沒有載入對應的 regdef 時必須加 raw,才會寫入所有非 -- 的位元組。多 bank 檔依檔頭的 bank_reg/mask 逐 bank 切換(bank_reg 那一格不寫),單段檔只寫目前的 bank。不加 force 時指令不會執行:TUI/GUI 跳出確認視窗,確認後以 force 重送;Batch 與腳本則直接被拒絕(Exit Code 2)。成功印出 LOADED 與略過數;中途失敗立即停止、不重試(Exit Code 為錯誤碼絕對值)。要驗證就接著跑 dump diff 同一個檔。 |
# 互動介面:跳出確認視窗,列出要寫幾個位元組、略過幾個。 dump load golden.txt # 已確認,直接寫入(Batch 與腳本必須這樣寫)。 dump load golden.txt force # 沒有 regdef 時,把 golden.txt 所有非 -- 的位元組寫進面板 1 上位址 0x58 的晶片。 dump load golden.txt raw force 58 @p1
dump load <file> [raw] [force] [<addr>] [@p<N>]bank
查詢或切換目前的 bank(分頁)。
| bank [@p<N>] | 查詢目前的 bank/分頁編號。 |
| bank <page> [@p<N>] | 切換到指定的 bank/分頁(十六進位);需要已載入 Plugin 或先用 bank reg 設定選頁暫存器,且頁號不能超出遮罩能表示的範圍。沒有 Plugin 的 mount 會把頁號存進設定、重開自動套用。 |
# 查詢目前的 bank。 bank # 切換到 bank 0x02。 bank 02
bank [<page>] [@p<N>]bank reg
設定 bank 暫存器的位移與遮罩,也就是告訴程式「這顆 IC 用哪個暫存器的哪幾個位元選頁」。設錯會讀到另一頁而且不會報錯。沒有 Plugin 的 mount 會把設定存進 config.ini,重開自動套用(載入 Plugin 的 mount 不存)。
| bank reg [@p<N>] | 查詢目前設定的 bank 選頁暫存器位移與遮罩。 |
| bank reg <reg_offset> [@p<N>] | 只設定選頁暫存器的位移(十六進位),遮罩重設為 0xFF(整個位元組就是頁號)。沒有 Plugin 的 mount 會存進設定,重開自動套用。 |
| bank reg <reg_offset> <mask> [@p<N>] | 同時設定選頁暫存器的位移與位元遮罩(皆十六進位)——遮罩決定用哪幾個位元判斷目前在哪一頁。 |
# 查詢目前的 bank 選頁暫存器設定。 bank reg # 把選頁暫存器設在位移 0x7F,遮罩用預設的 0xFF(全部位元參與選頁)。 bank reg 7F # 把選頁暫存器設在位移 0x7F,只用其中的位元 0–1(遮罩 0x03)選頁。 bank reg 7F 03
bank reg [<reg_offset>] [<mask>] [@p<N>]watch
把一個暫存器加進監看清單持續監看。不帶參數時列出目前的監看項目。
| watch | 列出這個 Tab 目前監看中的全部項目。 |
| watch <offset> [<addr>] [@p<N>] | 把指定位移(可選位址、面板)加進監看清單,持續背景重讀,值變了就標出來。 |
# 列出目前監看的項目。 watch # 監看位移 0x10(目前的位址)。 watch 10 # 監看面板 1、位址 0x58、位移 0x10。 watch 10 58 @p1
watch [<offset> [<addr>]] [@p<N>]unwatch
從監看清單移除一個監看項目。
| unwatch <offset> [<addr>] [@p<N>] | 移除指定位移(可選位址)的監看項目,以面板辨識目標掛載;省略 @p<N> 時用目前焦點面板。 |
| unwatch <offset> [<addr>] [@s<N>] | 同上,但改以掛載槽編號(非面板,N 為十進位 0–31)直接指定要刪的是哪一列,適合同一個位移被多顆裝置監看的情況。 |
| unwatch all | 清空這個 Tab 的整份監看清單(不接受 @p<N>/@s<N>)。 |
# 移除位移 0x10 的監看。 unwatch 10 # 移除位址 0x58、位移 0x10 的監看。 unwatch 10 58 # 移除掛載槽 0 上、位移 0x10 的監看。 unwatch 10 @s0 # 清空整份監看清單。 unwatch all
unwatch <offset> [<addr>] [@p<N>|@s<N>] | unwatch alltrigger
對一筆已在監看的暫存器設定觸發條件(要先 watch)。條件成立時記一筆 Log、把整頁 256 個位元組存成 logs/ 檔案,並可自動送出一道指令;預設只觸發一次,加 cont 才會每次都觸發。
| trigger <offset> [<addr>] <mask> any [cont] [@p<N>] [do <command...>] | 遮罩選中的位元只要有變化(不論方向),就記一筆 Log、並把整頁 256 個位元組存成 logs/ 檔案;cont 表示不只觸發一次、持續觸發(預設觸發一次就關閉);do 後面可接觸發時要自動送出的指令,do none 可清掉已設的指令,不寫 do 時原本設定的指令保留。 |
| trigger <offset> [<addr>] <mask> rise [cont] [@p<N>] [do <command...>] | 遮罩選中的位元出現上升緣(由 0 變 1)時觸發。 |
| trigger <offset> [<addr>] <mask> fall [cont] [@p<N>] [do <command...>] | 遮罩選中的位元出現下降緣(由 1 變 0)時觸發。 |
| trigger <offset> [<addr>] <mask> off [@p<N>] | 清除該筆監看的觸發條件,監看本身不受影響。 |
# 位址 0x58、位移 0x10:遮罩 0x0F 選中的位元出現上升緣時記一筆 Log。 trigger 10 58 0F rise # 位移 0x10(需先 watch 10)第一次出現變化時,自動送出 wr 10 00;只觸發一次,要每次都觸發請加 cont。 trigger 10 FF any do wr 10 00 # 持續監看位移 0x10 的下降緣,每次都觸發,不是只觸發一次。 trigger 10 FF fall cont # 清除位移 0x10 的觸發條件。 trigger 10 FF off
trigger <offset> [<addr>] <mask> <any|rise|fall|off> [cont] [@p<N>] [do <command...>]snap
在記憶體裡留具名的暫存器快照,之後拿來和另一份快照或目前的值比對,看改了哪幾格。只讀暫存器表已經快取的值,完全不碰匯流排,離線或 poll off 時也能用。和 dump snap(把快取寫成檔案)是兩回事。
| snap take <name> [@p<N>] | 把目標掛載目前快取的所有 bank 存成名稱為 name 的快照(省略 @p<N> 取焦點面板;Batch 必須帶 @p<N>)。名稱 1~15 個英數字或底線,不分大小寫,live 是保留字。同名會覆寫;最多 8 份,滿了要先 snap drop;有資料的 bank 超過 16 個會拒絕。快取還沒讀到任何東西時仍會存成空快照。 |
| snap diff <A> [<B>|live] | 拿快照 A 對快照 B(兩者必須來自同一個掛載),或省略 B/寫 live 時對 A 那個掛載目前的快取比對。只要任一邊沒有值(快取沒讀到、或該 bank 不在)就略過該格,不算差異;有差異才算失敗(Batch Exit Code 64)。結果列、差異表與結果視窗和 dump diff 相同。A 的掛載已被移除時,對 live 比對會被拒絕。 |
| snap list | 列出所有快照,每份一行:名稱、位址、bank 數與取得後經過的秒數(例如 before @0x58 banks=2 age=35s)。 |
| snap drop <name> | 刪除一份快照。 |
# 改設定之前先把目前快取的暫存器值留下來。 snap take before # 改完之後看看哪幾格和 before 不一樣。 snap diff before # 把面板 1 的掛載目前的快取也存起來。 snap take after @p1 # 比對兩份快照(必須同一個掛載)。 snap diff before after # 看目前留了哪些快照。 snap list
snap take <name> [@p<N>] | snap diff <A> [<B>|live] | snap list | snap drop <name>mark
在暫存器表上標出「讀回時值曾經變過」的格子,標記會一直留著,直到你重設基準。暫態的綠色高亮 1.5 秒就退,這個標記不會退,適合找偶發的變化。只有讀回的值變了才算(你自己寫入、dump load 不算),第一次讀到也不算。標記只換前景色(沿用 LOG WARN 的顏色),值為 00 的格子也不會變暗。顯示開關是全域的、預設關閉、不寫進 config.ini;基準累積不受開關影響,事後才打開也看得到。
| mark | 回報目前顯示開關:mark is on 或 mark is off。 |
| mark on | 顯示持續變化標記。 |
| mark off | 隱藏標記(畫面和沒有這個功能時逐格相同)。 |
| mark reset | 清掉所有掛載、所有 bank 的標記,從現在起重新累積(回應 mark: baseline reset)。不接受 @p<N>。 |
# 打開標記,之後讀回變過值的格子會用警告色顯示。 mark on # 改完設定、想看「接下來」還有哪些格子在變時,先重設基準。 mark reset
mark [on|off|reset]undo
還原你最後一次用 wr、set、clr 寫的值(一個指令一筆,多位元組的 wr 一次全部還原,最多留 16 筆)。為了不蓋掉別人的改動,只有在「那一格自從你寫入後沒被動過」時才會寫回:該格的快取值必須有效且仍是你寫的值,掛載與 bank 也必須和當時相同;regdef 標了 W1C、W0C 或 volatile 的格子一律拒絕。被拒絕時堆疊不會動,原因會顯示在狀態列與 Log,可用 undo list 檢視,不想要那一筆就用 undo drop 丟掉。wr16、位移大於 0xFF 的明示 bank 寫入、帶 <addr> 指到別顆 IC 的寫入,以及監看觸發的 do 寫入都不會被記錄;還原本身也不能再還原;仍有寫入在飛行時會先拒絕,稍後重試即可。
| undo | 還原最近一筆寫入,成功後從堆疊移除。堆疊空時回報 undo: nothing to undo。 |
| undo list | 由新到舊列出堆疊內容到 Log(索引、Tab、掛載、位址、bank、位移、新值與舊值)。 |
| undo drop | 丟掉最近一筆,不寫硬體。最近一筆一直被拒絕又不想處理時用它。 |
# 剛才寫錯了,把它寫回原值。 undo # 看堆疊裡還有哪些寫入可以還原。 undo list
undo [list|drop]regdef
載入或卸下暫存器定義檔。載入後把游標移到暫存器表的任一格,暫存器定義面板就會把那個位元組解成具名的位元欄位。
| regdef | 查詢目前載入中的定義檔。 |
| regdef load <file> [@bus <name>] | 載入指定路徑的暫存器定義檔;可用 @bus 指定這份定義只套用在某一條匯流排上。 |
| regdef off | 卸下目前載入的定義檔。 |
# 查詢目前載入的定義檔。 regdef # 載入 ds3231.regdef.json 這份定義檔(檔名僅為範例)。 regdef load ds3231.regdef.json # 卸下目前的定義檔。 regdef off
regdef load <file> [@bus <name>] | regdef | regdef off硬體與掛載
| 指令 | 做什麼 |
|---|---|
| addr | 查詢或設定這個 Tab 主要 IC 的 slave 位址(掛載槽 0)。 |
| mount | 在指定面板掛上另一顆 IC,讓同一個 Tab 能同時看多顆裝置。 |
| unmount | 卸下指定面板的掛載。 |
| poll | 開關背景輪詢(含 GPIO 中斷);不接受輪詢間隔(只認 on/off/toggle)。 |
| dongle | 查詢目前的 dongle,或切換到指定的後端。 |
| dongle who | 查出是哪一個程式正佔用著裝置。 |
| dongle close | 手動關閉一個後端,語意等同拔線,但不會自動重連。 |
| dongle rescan | 重新掃描 dongles/ 目錄,把新找到的後端加進清單(不會自動連上,也不會移除舊項目)。 |
| dongle op | 列出或執行 dongle 韌體自己宣告的廠商操作(vendor op)。 |
| dongle recover | 嘗試解開卡住的 I2C 匯流排:在 SCL 上送出時脈直到 SDA 被釋放。 |
| dongle pulse | 讓指定的 GPIO 腳位輸出固定時間的電位,然後放開,用於需要精確寬度的復位脈衝。 |
| dongle int | 查看或設定 dongle 的外部中斷(INT)腳:偵測哪個邊緣、內部上下拉、清除計數,以及把每個邊緣寫進 Log。 |
| dongle speed | 設定該掛載所用後端的 I2C 匯流排速度(kHz,十進位)。 |
| scan | 掃描匯流排上有回應的 slave 位址。 |
| bridge | 跨行程 I2C 橋接:讓另一個程式透過本程式存取同一條匯流排。 |
| password | 對 IC 送出固定的密碼解鎖序列。 |
addr
查詢或設定這個 Tab 主要 IC 的 slave 位址(掛載槽 0)。要再掛第二顆請用 mount。
| addr | 查詢目前主要 IC(掛載槽 0)的 slave 位址。 |
| addr <addr> | 把主要 IC(掛載槽 0)的 slave 位址改成指定值(7-bit 十六進位,00–7F)。 |
# 查詢目前的位址。 addr # 把主要 IC 的位址改成 0x50。 addr 50
addr [<addr>]mount
在指定面板掛上另一顆 IC,讓同一個 Tab 能同時看多顆裝置。mount list 列出目前的掛載。
| mount <addr> [@p<N>] [8bit|16bit] | 在指定面板(省略即目前焦點面板)掛上一顆位址為 addr 的 IC。結尾可指定暫存器位址寬度 8bit 或 16bit;省略就維持目前的設定。 |
| mount list | 列出這個 Tab 目前所有的掛載。 |
# 在面板 1 掛上位址 0x68 的 IC。 mount 68 @p1 # 在面板 1 掛上位址 0x58 的 IC,並用 16 位元暫存器位址。 mount 0x58 16bit @p1 # 列出目前的掛載清單。 mount list
mount <addr> [@p<N>] [8bit|16bit] | mount listunmount
卸下指定面板的掛載。
| unmount @p<N> | 卸下指定面板目前的掛載;面板是必填的,沒有預設目標。若該掛載載著 Plugin,會自動先卸載 Plugin,卸載完成後才拆掉掛載(互動模式下指令立即回傳,稍後生效;批次模式會等到完成)。 |
# 卸下面板 1 的掛載。
unmount @p1
unmount @p<N>poll
開關背景輪詢(含 GPIO 中斷);不接受輪詢間隔(只認 on/off/toggle)。關閉時監看清單會停止更新、觸發條件也不會被檢查——這是預期行為。
| poll [@p<N>] | 不帶 on/off:切換狀態。不帶 @p<N> 時切換的是整個程式的背景輪詢;帶 @p<N> 時只切換那個暫存器表面板自己的自動更新。 |
| poll toggle [@p<N>] | 與不帶參數相同:切換開關。 |
| poll on [@p<N>] | 打開背景輪詢;帶 @p<N> 則只打開那個面板的自動更新。 |
| poll off [@p<N>] | 關閉背景輪詢(監看與觸發條件會一併停止檢查);帶 @p<N> 則只關閉那個面板的自動更新。 |
# 切換整個程式的背景輪詢開關。 poll # 關閉背景輪詢。 poll off # 只打開面板 0(暫存器表)的自動更新,不影響全域輪詢;@p<N> 必須指向暫存器表面板。 poll on @p0
poll [on|off|toggle] [@p<N>]dongle
查詢目前的 dongle,或切換到指定的後端。不帶參數時列出掃描到的全部後端。
| dongle | 列出掃描到的全部後端(不接受 @p<N>,列後端是全域動作)。 |
| dongle <name> [@p<N>] | 切換到指定名稱的後端;帶 @p<N> 時只綁定那個面板的掛載,不影響全域預設後端。名稱由各後端 DLL 自訂,不是固定清單;auto 是保留字,不能當後端名稱。 |
| dongle auto @p<N> | 取消該面板自己的後端指定,改回跟隨全域預設後端。 |
# 列出目前掃描到的所有後端。 dongle # 切換到名為 ui2c 的後端(後端名稱依實際安裝的 dongle 而定,這裡只是舉例)。 dongle ui2c
dongle [<name>] [@p<N>]dongle who
查出是哪一個程式正佔用著裝置。接不上硬體時先問它。
| dongle who | 查出目前的裝置是不是被另一個程式佔用。 |
# 查裝置目前被哪個程式佔用。
dongle who
dongle whodongle close
手動關閉一個後端,語意等同拔線,但不會自動重連。
| dongle close [<name>] | 關閉指定名稱的後端;省略名稱則關閉目前的預設後端。關閉後不會自動重連,要恢復請用 dongle <name> 重新連上。 |
# 關閉目前的預設後端。 dongle close # 關閉名為 ui2c 的後端。 dongle close ui2c
dongle close [<name>]dongle rescan
重新掃描 dongles/ 目錄,把新找到的後端加進清單(不會自動連上,也不會移除舊項目)。熱插入或啟動時沒插著的裝置可以用它補進來,再用 dongle <name> 連上;換了 USB 孔的裝置會以新名稱多出一筆。
| dongle rescan | 重新掃描可用的後端清單,不接受任何參數;只會新增,不會移除或重連舊項目。 |
# 重新掃描一次可用的後端。
dongle rescan
dongle rescandongle op
列出或執行 dongle 韌體自己宣告的廠商操作(vendor op)。目錄由裝置提供,所以新韌體加了操作不用升級本程式;支援的 dongle 例如 STM32 dongle,完整操作清單見「支援的硬體」。第一次使用時 Core 才會向裝置抓目錄:Batch 會等它完成,互動介面會把結果寫進 Log 並請你稍後重試;裝置沒有目錄時會明確回報。參數的型別與範圍由目錄決定並在送出前檢查(範圍、缺少、重複、多餘、未知名稱都有明確錯誤)。腳位與寬度的數字皆為十進位;參數文字裡不能出現 @p<N> 字樣。目標用 @p<N> 指定面板的掛載(只有一個掛載時可省略)。視窗版另有「Dongle operations...」選單表單,送出的就是 dongle op run。
| dongle op [list] | 列出目前後端宣告的全部 op,完整清單寫進 Log。 |
| dongle op help <name> | 顯示某個 op 的參數(型別、範圍、單位、預設值)與結果欄位,說明寫進 Log。 |
| dongle op [run] <name> [args] [@p<N>] | 執行 op。參數可依宣告順序寫位置值,也可寫 名稱=值,位置值必須在具名值之前;省略有預設值的參數會補預設。結果以「名稱=值單位」一行印出;結果長度與目錄不符時會附上原始 hex。名稱剛好叫 list、help 或 run 的 op 要寫成 dongle op run <name>。 |
# 列出後端支援的 vendor op。 dongle op # 查看 wave 這個 op 的參數與結果。 dongle op help wave # 用具名參數執行 wave(STM32 dongle:在 SCL/SDA 輸出方波)。 dongle op wave scl_hz=100000 sda_hz=50000
dongle op [list] | dongle op help <name> | dongle op [run] <name> [args] [@p<N>]dongle recover
嘗試解開卡住的 I2C 匯流排:在 SCL 上送出時脈直到 SDA 被釋放。執行完成不代表線已放開,結果印 done, pins=0x3 這類一行(bit0 = SCL、bit1 = SDA 的電位,兩條都是 1 才算放開,目前 Exit Code 仍為 0);仍卡住(pins 不是 0x3)時請找出拉住 SDA 的從裝置。STM32 dongle 的 recover 會順便強制把腳位切回 I2C 模式並停掉方波,所以也是把被 bus_set/wave 借走的腳位救回來的入口。不會自動重試。
| dongle recover [@p<N>] | 對該掛載所用的後端執行匯流排復原。 |
# 解開卡住的匯流排。
dongle recover
dongle recover [@p<N>]dongle pulse
讓指定的 GPIO 腳位輸出固定時間的電位,然後放開,用於需要精確寬度的復位脈衝。寬度範圍由 dongle 決定:STM32 dongle 是 1 微秒~699 毫秒(毫秒解析度、向上取整),超出會被拒絕、不會被縮短;指令本身的上限是 1 秒。執行期間該後端不處理其他 Job,其他 I2C 存取要等。脈衝結束後腳位的靜止電位由 dongle 決定。
| dongle pulse <pin> <0|1> <width>us|ms [@p<N>] | 腳位與電位為十進位;寬度必須帶單位 us 或 ms,為 0 或超出範圍會被拒絕。 |
# 把 3 號腳拉低 100 毫秒。 dongle pulse 3 0 100ms # 把 1 號腳拉高 2000 微秒。 dongle pulse 1 1 2000us
dongle pulse <pin> <0|1> <width>us|ms [@p<N>] (pin and width are decimal)dongle int
查看或設定 dongle 的外部中斷(INT)腳:偵測哪個邊緣、內部上下拉、清除計數,以及把每個邊緣寫進 Log。邊緣事件帶 dongle 本地的微秒時間戳,間隔 dt 是精確的,主程式時間只是估計;dongle 的計數約 71.6 分鐘繞回一次,已處理。INT 線只有一條,Host 指令、Plugin、Lua 腳本的請求會合併:邊緣取聯集,上下拉取第一個非 none 者。事件取回受 poll off 管制,poll on 後一次交出累積的事件。需要 dongle 支援(例如 STM32 dongle),不支援時回 not supported。
| dongle int [status] | 顯示中斷腳目前的設定、電位、邊緣計數、丟棄數與最近一次邊緣的 dongle 時間戳。 |
| dongle int clear | 清除 dongle 端與主程式端的計數及尚未取走的事件(同後端的其他 Plugin 還沒處理的事件也會被清掉)。 |
| dongle int config <falling|rising|both|none> [up|down|none] | 設定偵測的邊緣與內部上下拉。邊緣 none 只釋放 Host 自己的請求;有 Plugin 或 Lua 腳本持有時偵測繼續。硬體設定是各請求者邊緣的聯集,Plugin 可能收到自己沒要求的邊緣。 |
| dongle int log on|off | 切換每個邊緣是否寫進 Log(INT edge: level=… dt=… us,第一筆 dt 為 n/a,絕對時間標「estimated」)。預設關,不寫進 config.ini,重新連線後保留。 |
# 偵測下降緣,內部上拉。 dongle int config falling up # 把每個邊緣寫進 Log。 dongle int log on # 查看中斷腳的狀態。 dongle int status
dongle int [status] | clear | config <falling|rising|both|none> [up|down|none] | log on|off [@p<N>]dongle speed
設定該掛載所用後端的 I2C 匯流排速度(kHz,十進位)。實際速度由 dongle 決定:FT2232/FT232H 取不高於要求值的除數(10~1000 kHz),ui2c 只有 50/100/200/400/最快 幾個檔位(取不高於要求值的一檔,低於 50 會被拒絕),STM32 dongle 記住設定並在重新開啟後套用。實際值可用 dongle who 查看。只改後端記憶體,不寫入 config.ini,重新連線或重啟後回到預設。不支援的後端回 ERR_NOT_SUPPORTED。
| dongle speed <khz> [@p<N>] | 要求的速度為十進位 kHz,0 或非數字會被拒絕;範圍由後端判定。 |
# 把匯流排設為 400 kHz。
dongle speed 400
dongle speed <khz> [@p<N>] (khz is decimal)scan
掃描匯流排上有回應的 slave 位址。不確定 IC 掛在哪個位址時用它。
| scan | 掃描每一條已連線的匯流排,列出有回應的 slave 位址。 |
| scan id | 先掃描,再讀取 regdefs 資料夾各定義檔 detect[] 宣告的 ID 暫存器,依 score 由高到低列出吻合的檔案並建議 regdef/mount 指令;只建議、不自動載入或掛載。沒有吻合時 Batch 仍回傳 0。 |
# 掃描匯流排上有回應的位址。 scan # 掃描並辨識有回應位址上的晶片,Log 會建議該載入哪份定義檔。 scan id
scan [id]bridge
跨行程 I2C 橋接:讓另一個程式透過本程式存取同一條匯流排。
| bridge | 查詢橋接目前的狀態(等同 bridge status)。 |
| bridge status | 查詢橋接目前的狀態,與 bridge 相同。 |
| bridge on [<dongle>] | 打開橋接,讓其他程式可以透過本程式共用這條匯流排;可指定要共用哪個後端,省略則用目前的預設後端。 |
| bridge off | 關閉橋接。 |
| bridge reset | 踢掉目前連著的外部程式,讓橋接回到等待新連線的狀態(外部程式卡住、重跑也搶不到連線時用)。 |
# 查詢橋接狀態。 bridge # 打開橋接,共用名為 ui2c 的後端。 bridge on ui2c # 關閉橋接。 bridge off
bridge [on [<dongle>]|off|status|reset]password別名 pw
對 IC 送出固定的密碼解鎖序列。password list 列出可用的 IC。成功訊息只表示每一次寫入都收到 ACK,不代表解鎖一定成功。
| password | 等同 password list:列出全部可用的解鎖序列。 |
| password list [<filter>] | 列出可用的解鎖序列,可選填關鍵字(不分大小寫、部分符合即可)篩選名稱。 |
| password reload | 重新載入解鎖序列的設定檔。 |
| password update | 從更新伺服器下載最新的解鎖序列定義檔並重新載入(背景進行,結果記在 Log)。 |
| password <ic> [@p<N>] | 對名為 ic 的裝置送出固定的解鎖序列;寫入的位址一律取自定義檔,@p<N> 只決定從哪個面板所用的 dongle 送出。成功只代表每一次寫入都收到 ACK,不保證真的解鎖。 |
# 列出全部可用的解鎖序列。 password list # 對名為 ds3231 的裝置送出解鎖序列(IC 名稱僅為範例)。 password ds3231 # 重新載入解鎖序列設定檔。 password reload # 檢查並更新解鎖序列定義。 password update
password | password list [<filter>] | password reload | password updatePlugin
| 指令 | 做什麼 |
|---|---|
| plugin | 切換、卸下或查詢 Plugin。 |
plugin別名 ic
切換、卸下或查詢 Plugin。plugin list 列出掃到的 Plugin;plugin catalog/install/remove 管理線上安裝的 Plugin。
| plugin | 查詢目前使用中的 Plugin。 |
| plugin switch <name> [@p<N>] [force] | 切換到指定名稱的 Plugin;可用 @p<N> 指定面板。加 force 表示即使 Plugin 偵測不到硬體(probe 失敗)也照樣掛上,方便在沒接板子時除錯。 |
| plugin unload [<name>|@p<N>] | 卸下 Plugin;省略名稱時卸下焦點面板上的那個(焦點沒有、別處有時會列出落點),@p<N> 卸下掛在該面板的那個。 |
| plugin list | 列出掃描到的全部 Plugin。 |
| plugin show <name> | 把右下角面板(@p3)換成這顆 Plugin 的操作面板;只有這個 Plugin 目前掛在這個 Tab 上時才有效。 |
| plugin version <name> | 查詢指定 Plugin 目前的版本。 |
| plugin catalog | 查詢線上目錄有哪些可安裝的 Plugin。 |
| plugin install <name> [ver] | 從線上目錄安裝指定名稱的 Plugin;可指定版本,省略則裝與目前程式相容、未被撤回的最新版。裝完要重開程式才會載入。 |
| plugin remove <name> | 移除已安裝的 Plugin。 |
# 切換到名為 ds3231 的 Plugin(名稱僅為範例)。 plugin switch ds3231 # 在面板 1 掛上 ds3231;就算偵測不到這顆 IC 也強制掛上(沒接硬體時除錯用)。 plugin switch ds3231 @p1 force # 列出掃描到的全部 Plugin。 plugin list # 從線上目錄安裝 ds3231 的 1.2.0 版。 plugin install ds3231 1.2.0
plugin [switch <name> [@p<N>] [force]|unload [<name>|@p<N>]|restart [<name>|@p<N>] [force]|list|show <name>|version <name>|catalog|install <name> [ver]|remove <name>]面板與版面
| 指令 | 做什麼 |
|---|---|
| layout | 查詢或設定這個 Tab 的面板配置:指定某個面板放哪一種內容,或(終端機版)調整兩條分割線的比例。 |
| layout lock | 鎖定版面(視窗版限定):鎖定後拖標題列浮起/移動/停靠面板、拖八個縮放把手、拖分隔線都不會動,避免誤觸把版面弄亂;點擊收合、放大/還原與明確的版面指令照常可用。 |
| layout unlock | 解除版面鎖定(視窗版限定):拖曳、縮放與分隔線拖曳恢復正常。 |
| layout float | 把鋪底面板浮起成浮動面板(視窗版限定)。 |
| layout dock | 把浮動面板停靠回浮起之前的位置(視窗版限定)。 |
| layout max | 放大面板填滿內容區,再下一次還原(視窗版限定,切換式)。 |
| layout save | 把這個 Tab 目前的版面(鋪底與浮動面板)存成具名使用者版面(視窗版限定)。 |
| layout load | 把具名使用者版面套用到這個 Tab(視窗版限定):整個版面(含浮動面板)一起替換。 |
| layout delete | 刪除具名使用者版面(視窗版限定)。 |
| layout list | 列出已存的使用者版面名稱(視窗版限定)。 |
| layout stack | 把一個面板併入另一個面板所在的分頁組,成為該組的作用中分頁(視窗版限定)。 |
| layout unstack | 把分頁移出所屬的分頁組(視窗版限定)。 |
| layout tab add | 在分頁組裡新增一個指定型別的分頁(視窗版限定)。 |
| layout tab close | 關閉指定的分頁,或焦點組的作用中分頁;不會要求確認(視窗版限定)。 |
| layout tab next | 切到分頁組的下一個分頁,到最後一個會回到第一個(視窗版限定)。 |
| layout tab prev | 切到分頁組的上一個分頁,在第一個時會回到最後一個(視窗版限定)。 |
| layout pin | 把面板釘進側欄:面板從版面裡收起,鋪底區在該邊留出一條空白(視窗版限定)。 |
| layout unpin | 把釘在側欄的面板放回釘上前的位置(視窗版限定)。 |
| layout window | 把面板搬進一個新的獨立視窗:獨立視窗有自己的版面、浮動面板與指令列,釘在目前的 Tab(視窗版限定,最多 8 個)。 |
| layout window close | 關閉目前這個獨立視窗,把它的面板併回主視窗(視窗版限定)。 |
| autoscroll | 開關某個 Log 面板(I2C 記錄或 UART 記錄)的自動捲動(是否永遠跟著最新一筆)。 |
| theme | 查詢或切換色彩主題。 |
| logfont | 只換 Log 面板訊息列的字型與字級,不影響其他面板。 |
layout
查詢或設定這個 Tab 的面板配置:指定某個面板放哪一種內容,或(終端機版)調整兩條分割線的比例。
| layout | 查詢這個 Tab 目前的面板配置。 |
| layout @p<N> <panel> | 把指定面板換成另一種內容(例如 reg_table、i2c_log),可用的名稱見面板總覽。 |
| layout <h_pct> <v_pct> | 終端機版限定:<h_pct> 是左欄寬度、<v_pct> 是上半部高度(十進位百分比,超出範圍會自動夾到 25–75)。視窗版的區域可以任意切分,這個指令不會改任何東西,請按 F9 用版面配置器調整。 |
# 查詢目前的面板配置。 layout # 把面板 1 換成暫存器定義面板。 layout @p1 regdef # (終端機版)左欄寬度佔 60%、上半部高度佔 40%。 layout 60 40
layout [@p<N> <panel>|<h_pct> <v_pct>]layout lock僅視窗版
鎖定版面(視窗版限定):鎖定後拖標題列浮起/移動/停靠面板、拖八個縮放把手、拖分隔線都不會動,避免誤觸把版面弄亂;點擊收合、放大/還原與明確的版面指令照常可用。鎖定是整個視窗的偏好(所有 Tab 一起),重開程式仍然有效,狀態列會顯示 LOCK。
| layout lock | 鎖定版面。 |
# 鎖定版面,狀態列出現 LOCK。
layout lock
layout locklayout unlock僅視窗版
解除版面鎖定(視窗版限定):拖曳、縮放與分隔線拖曳恢復正常。
| layout unlock | 解除版面鎖定。 |
# 解除鎖定,狀態列的 LOCK 消失。
layout unlock
layout unlocklayout float僅視窗版
把鋪底面板浮起成浮動面板(視窗版限定)。不帶 @p<N> 時作用於焦點面板;最後一個鋪底面板不能浮起,已經是浮動的面板會回報「already floating」。只作用於畫面上的 Tab。
| layout float | 浮起焦點面板。 |
| layout float @p<N> | 浮起指定面板。 |
# 把面板 1 浮起。
layout float @p1
layout float [@p<N>]layout dock僅視窗版
把浮動面板停靠回浮起之前的位置(視窗版限定)。不是浮動面板時回報「not floating」。
| layout dock | 停靠焦點面板。 |
| layout dock @p<N> | 停靠指定面板。 |
# 把面板 1 停靠回去。
layout dock @p1
layout dock [@p<N>]layout max僅視窗版
放大面板填滿內容區,再下一次還原(視窗版限定,切換式)。放大是執行期狀態,不會寫進設定。
| layout max | 放大或還原焦點面板。 |
| layout max @p<N> | 放大或還原指定面板。 |
# 放大焦點面板;再打一次還原。
layout max
layout max [@p<N>]layout save僅視窗版
把這個 Tab 目前的版面(鋪底與浮動面板)存成具名使用者版面(視窗版限定)。名稱可含空白(取指令名稱之後的整行、去頭尾空白)、少於 24 個位元組,不得與內建版面同名;同名覆寫。最多 16 組,滿了要先 layout delete。
| layout save <name...> | 儲存目前版面。 |
# 把目前版面存成 bench。
layout save bench
layout save <name...>layout load僅視窗版
把具名使用者版面套用到這個 Tab(視窗版限定):整個版面(含浮動面板)一起替換。浮動面板清單損壞時只套用鋪底版面並提示。
| layout load <name...> | 套用使用者版面。 |
# 套用先前存的 bench 版面。
layout load bench
layout load <name...>layout delete僅視窗版
刪除具名使用者版面(視窗版限定)。
| layout delete <name...> | 刪除使用者版面。 |
# 刪除 bench 版面。
layout delete bench
layout delete <name...>layout list僅視窗版
列出已存的使用者版面名稱(視窗版限定)。
| layout list | 列出使用者版面。 |
# 顯示所有已存版面。
layout list
layout listlayout stack僅視窗版
把一個面板併入另一個面板所在的分頁組,成為該組的作用中分頁(視窗版限定)。
| layout stack @p<N> @p<M> | 把面板 N 併入面板 M 的分頁組;兩個面板都必須指定。 |
# 把面板 3 併入面板 1 的分頁組。
layout stack @p3 @p1
layout stack @p<N> @p<M>layout unstack僅視窗版
把分頁移出所屬的分頁組(視窗版限定)。
| layout unstack [@p<N>] | 把面板 N 移出分頁組;省略時用目前焦點面板。 |
# 把面板 3 移出分頁組。
layout unstack @p3
layout unstack [@p<N>]layout tab add僅視窗版
在分頁組裡新增一個指定型別的分頁(視窗版限定)。
| layout tab add <type> [@p<N>] | 在面板 N 所在的分頁組新增分頁;省略 @p 時用目前焦點面板所在的組。 |
# 在焦點面板所在的組新增一個 I2C Log 分頁。
layout tab add i2c_log
layout tab add <type> [@p<N>]layout tab close僅視窗版
關閉指定的分頁,或焦點組的作用中分頁;不會要求確認(視窗版限定)。
| layout tab close [@p<N>] | 關閉面板 N 這個分頁;省略時關閉目前焦點組的作用中分頁。 |
# 關閉焦點組的作用中分頁。
layout tab close
layout tab close [@p<N>]layout tab next僅視窗版
切到分頁組的下一個分頁,到最後一個會回到第一個(視窗版限定)。
| layout tab next [@p<N>] | 切到面板 N 所在組的下一個分頁;省略時用目前焦點面板所在的組。 |
# 切到焦點組的下一個分頁。
layout tab next
layout tab next [@p<N>]layout tab prev僅視窗版
切到分頁組的上一個分頁,在第一個時會回到最後一個(視窗版限定)。
| layout tab prev [@p<N>] | 切到面板 N 所在組的上一個分頁;省略時用目前焦點面板所在的組。 |
# 切到焦點組的上一個分頁。
layout tab prev
layout tab prev [@p<N>]layout pin僅視窗版
把面板釘進側欄:面板從版面裡收起,鋪底區在該邊留出一條空白(視窗版限定)。
| layout pin [@p<N>] [top|bottom|left|right] | 把面板 N 釘到指定的邊;省略邊時選離面板最近的邊,省略 @p 時用目前焦點面板。 |
# 把面板 3 釘到左邊。
layout pin @p3 left
layout pin [@p<N>] [top|bottom|left|right]layout unpin僅視窗版
把釘在側欄的面板放回釘上前的位置(視窗版限定)。
| layout unpin @p<N> | 把釘在側欄的面板 N 放回原位。要指定 @p:收起的側欄面板不會是焦點面板,省略 @p 時只會回報該面板沒有被釘選。 |
# 把面板 3 放回原位。
layout unpin @p3
layout unpin @p<N>layout window僅視窗版
把面板搬進一個新的獨立視窗:獨立視窗有自己的版面、浮動面板與指令列,釘在目前的 Tab(視窗版限定,最多 8 個)。
| layout window [@p<N>] | 把面板 N(省略 @p 時是焦點面板;分頁組成員代表整組)搬進新視窗。新視窗開在主視窗所在的螢幕、相對主視窗錯開,大小取面板目前的大小。側欄裡的面板要先 layout unpin。 |
# 把面板 3 搬進新的獨立視窗。
layout window @p3
layout window [@p<N>]layout window close僅視窗版
關閉目前這個獨立視窗,把它的面板併回主視窗(視窗版限定)。
| layout window close | 在獨立視窗的指令列下:視窗只剩拖出時的那個面板時回到原位,否則整個版面停靠到主視窗靠近這個視窗的那一邊。在主視窗下會被拒絕。按視窗的關閉鈕或 Alt+F4 效果相同。 |
# 關閉這個獨立視窗並把面板併回主視窗。
layout window close
layout window closeautoscroll
開關某個 Log 面板(I2C 記錄或 UART 記錄)的自動捲動(是否永遠跟著最新一筆)。
| autoscroll @p<N> | 查詢指定面板目前的自動捲動狀態。 |
| autoscroll @p<N> on | 打開指定面板的自動捲動。 |
| autoscroll @p<N> off | 關閉指定面板的自動捲動。 |
# 查詢面板 2 的自動捲動狀態。 autoscroll @p2 # 關閉面板 2 的自動捲動。 autoscroll @p2 off
autoscroll @p<N> [on|off]theme
查詢或切換色彩主題。內建六種:github-dark(預設)、dracula、nord、mono-dark、github-light(唯一的淺色)、nexus-hud。
| theme | 查詢目前使用的色彩主題。 |
| theme <name> | 切換到指定的色彩主題(github-dark、dracula、nord、mono-dark、github-light、nexus-hud 之一;不分大小寫)。打錯名稱時會列出可用清單,主題不變。 |
# 查詢目前的主題。 theme # 切換到 dracula 主題。 theme dracula
theme [<name>]logfont僅視窗版
只換 Log 面板訊息列的字型與字級,不影響其他面板。視窗版限定——終端機版的字型由終端機模擬器決定。
| logfont | 查詢 Log 面板目前的字型與字級。 |
| logfont <face> [<pt>] | 把 Log 面板的字型換成指定名稱,可一併指定字級(十進位,8–16 點);名稱可以含空白(例如 Cascadia Mono 11:最後一個全數字的 token 是字級,其餘都是名稱)。 |
| logfont <pt> | 只改字級(8–16,十進位),字型不變。 |
| logfont default | 把 Log 面板的字型還原成預設值(不能再帶字級)。 |
# 查詢目前的 Log 字型設定。 logfont # 把 Log 面板字型換成 Consolas、11 點。 logfont Consolas 11 # 還原成預設字型。 logfont default
logfont [<face>|default] [<pt>]Log
| 指令 | 做什麼 |
|---|---|
| log | 查詢或設定 Log 的等級過濾,決定哪些等級的訊息要顯示;log bus 則是把某個面板綁到指定的 dongle 匯流排;log export csv 把 Log 匯出成 CSV 檔;log decode 開關寫入指令的欄位解碼。 |
| clear | 清空 I2C 記錄的緩衝區(所有分頁共用)。 |
log
查詢或設定 Log 的等級過濾,決定哪些等級的訊息要顯示;log bus 則是把某個面板綁到指定的 dongle 匯流排;log export csv 把 Log 匯出成 CSV 檔;log decode 開關寫入指令的欄位解碼。
| log show | 顯示目前生效中的等級過濾設定。 |
| log all | 顯示全部等級的訊息。 |
| log none | 隱藏全部等級的訊息。 |
| log default | 還原成預設的等級組合。 |
| log +<level> | 加入某一個等級(info/warn/error/debug/trace/read/write/poll/success/ic 之一)。 |
| log -<level> | 移除某一個等級。 |
| log bus <name> [@p<N>] | 把指定面板(省略即焦點面板)的 Log 只綁定到某一條 dongle 匯流排。 |
| log bus off [@p<N>] | 解除該面板的匯流排綁定,恢復顯示全部匯流排。 |
| log decode [on|off] | 開關寫入 Log 的欄位解碼:開啟後 wr/set/clr 成功寫入時,依已載入的 regdef 多印一行這次改變的欄位(如 PWR_EN=1 MODE=HDMI);不帶參數則顯示目前狀態。全域設定、會記住,批次模式只在該次執行有效。 |
| log export csv [@p<N>] | 把指定面板(省略即焦點面板)目前看得到的 Log 匯出成 logs/log_<時間>.csv;每一次 I2C 讀寫是一列,含位址、offset、長度、值與錯誤碼。批次模式不收 @p<N>,一律匯出全部。 |
# 顯示目前的等級過濾設定。 log show # 加入 debug 等級的訊息。 log +debug # 還原成預設的等級組合。 log default # 把目前焦點面板綁到名為 ui2c 的匯流排。 log bus ui2c # 開啟寫入 Log 的欄位解碼。 log decode on # 把目前焦點面板看得到的 Log 匯出成 CSV 檔。 log export csv
log [show|all|none|default|+<level>|-<level>] | log bus <name>|off [@p<N>] | log export csv [@p<N>] | log decode [on|off]clear
清空 I2C 記錄的緩衝區(所有分頁共用)。UART 記錄請用 uart clear。
| clear | 清空 I2C 記錄的緩衝區,不接受任何參數;清掉的是資料本身,所有分頁共用。 |
# 清空 I2C 記錄緩衝區。
clear
clearUART
| 指令 | 做什麼 |
|---|---|
| uart | 開啟序列埠或查詢目前狀態。 |
| uart scan | 列出系統上可用的序列埠。 |
| uart close | 關閉目前開啟的序列埠。 |
| uart macro | 設定 1~4 號 TX 快捷巨集的內容("" 清空),可加 @p<N> 指定目標面板;按 Macro 按鈕才會真的送出。 |
| uart clear | 清除目前的 UART 記錄面板的收發紀錄。 |
| uart send | 用 UART 記錄面板目前的換行設定,把一段文字從序列埠送出去。 |
| uart export | 把 UART 記錄面板的收發紀錄存成 logs 資料夾下的 uart_<時間>.txt,並回報檔案的完整路徑。 |
| uart set | 只儲存序列埠設定,不開啟序列埠;硬體沒接也存得住,下次啟動時該面板就帶著這組設定。 |
| term | 連線或斷線這個 Tab 的終端機(TERM)面板,或開關它的 session 記錄。 |
uart
開啟序列埠或查詢目前狀態。
| uart | 查詢目前的 UART 記錄面板的狀態。 |
| uart <port> <baud> [databits] [parity] [stopbits] [flow] [@p<N>] | 開啟指定的序列埠(可用 @p<N> 指定 UART 記錄面板):鮑率/資料位元一律十進位;同位可用 none/odd/even/mark/space(或縮寫 n/o/e/m/s);停止位元 1、1.5 或 2;流控 none/rtscts/xonxoff(或縮寫 hw/sw)。省略的參數用 8 資料位元、無同位、1 停止位元、無流控。 |
# 查詢目前的 UART 狀態。 uart # 以 115200 baud 開啟 COM3,其餘用預設值(8 資料位元、無同位、1 停止位元、無流控)。 uart COM3 115200 # 以 9600 baud、8 資料位元、無同位、1 停止位元、無流控開啟 COM3。 uart COM3 9600 8 n 1 none # 在面板 3(UART 記錄面板)開啟 COM3。 uart COM3 115200 @p3
uart <port> <baud> [databits] [parity] [stopbits] [flow] [@p<N>]uart scan
列出系統上可用的序列埠。
| uart scan | 列出系統目前偵測到的序列埠,不接受任何參數。 |
# 列出可用的序列埠。
uart scan
uart scanuart close
關閉目前開啟的序列埠。
| uart close [@p<N>] | 關閉 UART 記錄面板正開啟的序列埠;可用 @p<N> 指定面板,省略就是目前的面板。 |
# 關閉目前的序列埠。 uart close # 關閉面板 3 的序列埠。 uart close @p3
uart close [@p<N>]uart macro
設定 1~4 號 TX 快捷巨集的內容("" 清空),可加 @p<N> 指定目標面板;按 Macro 按鈕才會真的送出。設定後立刻寫進 config.ini。
| uart macro <1-4> "<text>" [@p<N>] | 把 1 到 4 號快捷巨集的內容設成 text(用雙引號包住,取到那一行最後一個雙引號為止);空字串 "" 代表清空該巨集。可用 @p<N> 指定要設定哪個面板的巨集。沒有空白的內容可以不加引號;開頭是 @ 的內容一定要加引號。 |
# 把 1 號巨集內容設成 AT+RST。 uart macro 1 "AT+RST" # 把面板 3(UART 記錄面板)的 2 號巨集設成 AT+GMR;@p<N> 必須指向 UART 記錄面板。 uart macro 2 "AT+GMR" @p3 # 清空 3 號巨集。 uart macro 3 ""
uart macro <1-4> "<text>" [@p<N>]uart clear
清除目前的 UART 記錄面板的收發紀錄。清的是資料本身,不只是把畫面捲走。
| uart clear | 清除目前的 UART 記錄面板的收發紀錄,不接受任何參數。 |
# 清空目前 UART 記錄面板的收發紀錄。
uart clear
uart clearuart send
用 UART 記錄面板目前的換行設定,把一段文字從序列埠送出去。引號與 @p<N> 的寫法跟 uart macro 一模一樣。
| uart send "<text>" [@p<N>] | 送出 text,結尾自動補上該面板 TX 換行下拉選的換行(None 就不補)。text 用雙引號包住,取到那一行最後一個雙引號為止;沒有空白的內容可以不加引號,開頭是 @ 的內容一定要加引號。可用 @p<N> 指定要從哪個面板的序列埠送出。面板的 HEX 模式開著時,text 會被當成成對的十六進位數字解析(跟 Macro 按鈕一樣)。序列埠沒開會回報錯誤;這個指令只代表已排進送出佇列,不保證對方已經收到。 |
# 送出 AT+RST 加上換行。 uart send "AT+RST" # 從面板 3(UART 記錄面板)的序列埠送出 help。 uart send "help" @p3
uart send "<text>" [@p<N>]uart export
把 UART 記錄面板的收發紀錄存成 logs 資料夾下的 uart_<時間>.txt,並回報檔案的完整路徑。大量紀錄用它存檔再 grep,比逐筆複製方便。
| uart export [@p<N>] | 匯出目前(或 @p<N> 指定)的 UART 記錄面板的整個紀錄,結果文字是檔案的完整路徑。跟面板上的匯出按鍵是同一個功能。 |
# 匯出目前 UART 記錄面板的紀錄。 uart export # 匯出面板 3 的 UART 紀錄。 uart export @p3
uart export [@p<N>]uart set
只儲存序列埠設定,不開啟序列埠;硬體沒接也存得住,下次啟動時該面板就帶著這組設定。
| uart set <port> <baud> [databits] [parity] [stopbits] [flow] [@p<N>] | 參數寫法與 uart 開埠相同,差別是只存設定、不開埠。可用 @p<N> 指定 UART 記錄面板。若該埠目前已開啟且設定不同,會提示要重新開埠才生效,而且結束時存下的是執行中的設定。批次模式不會儲存設定,只會回報 (not persisted)。 |
| uart set none [@p<N>] | 清除該面板已存的序列埠設定(埠名、鮑率等),TX 巨集與換行設定不動。若該埠目前仍開著,結束時會再存下執行中的設定。 |
# 把面板 3 的 UART 設成 COM3、115200 baud,只存設定不開埠。
uart set COM3 115200 @p3
uart set <port> <baud> [databits] [parity] [stopbits] [flow] [@p<N>] | uart set none [@p<N>]term
連線或斷線這個 Tab 的終端機(TERM)面板,或開關它的 session 記錄。面板連線時獨佔那個 COM 埠,收到的位元組交給終端機模擬器;每個 Tab 最多一個 TERM 面板,先用 F9 或 layout 放一個。只有終端機版與視窗版有,Batch 沒有。
| term open uart <port> [<baud>] | 以 UART 連線:<port> 是 COM 埠名(COM1~COM255),<baud> 省略時用 115200,資料格式固定 8N1、無流量控制。同一個埠已被別的面板或程式開著時會失敗並說明原因。連線成功時畫面會先清空。這一組埠與鮑率會存進 config.ini,下次啟動預設選好但不會自動連線。 |
| term open ssh <host> | 以 SSH 連線:<host> 可以是主機名稱/IP、user@host、~/.ssh/config 的 Host 別名,或 user@host:port。使用 Windows 內建的 OpenSSH 客戶端(ssh.exe);沒安裝時回找不到並在面板說明安裝方式。以 - 開頭或含空白、引號的目標會被拒絕。host key 確認與密碼在終端機裡直接輸入;ssh 結束後可再按 Connect 重連。這個主機會存進 config.ini,下次啟動預設選好但不會自動連線。 |
| term close | 斷線但保留畫面內容。 |
| term log [on|off] | 開關 session 記錄:on 開始把畫面上捲出去的行(以及關閉時的最後畫面)以純文字寫到 logs\term_<來源>_<時間>.txt(UTF-8,開頭有 BOM),off 結束並關檔,不加參數則回報目前狀態與檔案路徑。內容取自畫面格子,所以顏色等跳脫序列不會出現;全螢幕程式(vim、top)運作期間不記錄。記錄中面板標題會顯示 [REC]。這個開關不會存進 config.ini,重開程式一律是關閉。 |
# 以 SSH 連線到 192.168.50.4(使用者 pgl)。 term open ssh pgl@192.168.50.4 # 連線到 ~/.ssh/config 裡名為 lab 的主機。 term open ssh lab # 以 115200 連線到 COM7。 term open uart COM7 115200 # 以預設的 115200 連線到 COM3。 term open uart COM3 # 斷線。 term close # 開始 session 記錄。 term log on # 結束記錄並關檔。 term log off
term open uart <port> [<baud>] | term open ssh <host> | term close | term log [on|off]設定與系統
| 指令 | 做什麼 |
|---|---|
| run | 執行一份 Lua 腳本。 |
| record | 把你手動敲的暫存器指令錄成一份可以重播的 Lua 腳本。 |
| profile | 把整個工作區(掛載、監看、觸發、面板版面、暫存器定義檔、Dongle)存成具名的設定檔,之後一鍵切換或分享給別人。 |
| report | 一鍵收齊問題回報需要的資料,建立資料夾 logs/report_<日期_時間>[_<name>]/:完整 Log(log.txt,不受畫面搜尋過濾影響)、每個掛載已快取的暫存器 dump(讀不到的格子印 --)、版本與環境資訊(info.txt:ver、dongle、掛載、Plugin 版本)、遮蔽過的 config.ini 副本,以及說明檔 README.txt。 |
| tab | 新增或關閉 Tab。 |
| mcp | 開關讓 AI 助手(MCP client)陪你操作這個畫面的 MCP 伺服器。 |
| update | 顯示最近一次自動檢查的結果;update apply 安裝已偵測到的新版本。 |
| ver | 顯示版本、ABI 版本與建置資訊。 |
| help | 列出指令名稱,或查某一個指令的用法與範例。 |
| quit | 結束程式。 |
run
執行一份 Lua 腳本。執行中可以按 Esc 中止。
| run <script.lua> | 在背景執行指定路徑的 Lua 腳本(路徑不能含空白),執行中可按 Esc 中止。 |
# 執行 scripts/demo.lua 腳本。
run scripts/demo.lua
run <script.lua>record
把你手動敲的暫存器指令錄成一份可以重播的 Lua 腳本。錄到的是實際完成的操作,失敗的會以註解留下。
| record start [<file>] | 開始錄製。省略檔名時存成 logs/record_日期_時間.lua;只給檔名或相對路徑會放進 logs 資料夾,絕對路徑則照寫。檔案已存在時會拒絕,不會覆寫也不會附加。 |
| record stop | 停止錄製並寫完檔案,回報共錄了幾條與檔案路徑。 |
| record status | 顯示目前是否正在錄製、檔案路徑與已錄條數。 |
# 開始錄製,檔名依目前時間自動產生。 record start # 開始錄製,存成 logs/my_setup.lua。 record start my_setup.lua # 停止錄製。 record stop
record start [<file>] | record stop | record statusprofile
把整個工作區(掛載、監看、觸發、面板版面、暫存器定義檔、Dongle)存成具名的設定檔,之後一鍵切換或分享給別人。
| profile save [<name>|<path>] [force] | 存成 profiles 資料夾下的 <name>.ini,或存到指定的 .ini 路徑;省略名稱時存回上一次用的那份。同名已存在時互動介面會先跳出確認覆寫,Batch 與腳本必須加 force。名稱只能用英文字母、數字、底線、句點與減號(最長 32 字元),底線開頭保留給系統。 |
| profile load [<name>|<path>] | 載入設定檔,整個取代目前的掛載、監看與觸發、面板版面(兩個執行檔的版面都會更新)。載入前會自動存一份 _previous,載到不滿意可用 profile load _previous 退回。Lua 腳本、record 或連續觸發執行中會拒絕。TUI 不帶參數時開出選單。檔案問題會整個拒絕、什麼都不套用;dongle 沒插、Plugin 沒裝、regdef 找不到這類問題只印警告,設定照樣保留。 |
| profile list | 列出 profiles 資料夾裡所有設定檔,_previous 排在最前面。 |
| profile delete <name> [force] | 刪除指定名稱的設定檔(只收名稱,不收路徑)。互動介面會先跳出確認,Batch 與腳本必須加 force。 |
# 把目前的工作區存成 board_a。 profile save board_a # 切換到 board_a。 profile load board_a # 退回載入前自動留下的那一份。 profile load _previous # 不經確認直接刪除 board_a(Batch 與腳本的寫法)。 profile delete board_a force
profile save [<name>|<path>] [force] | profile load [<name>|<path>] | profile list | profile delete <name> [force]report
一鍵收齊問題回報需要的資料,建立資料夾 logs/report_<日期_時間>[_<name>]/:完整 Log(log.txt,不受畫面搜尋過濾影響)、每個掛載已快取的暫存器 dump(讀不到的格子印 --)、版本與環境資訊(info.txt:ver、dongle、掛載、Plugin 版本)、遮蔽過的 config.ini 副本,以及說明檔 README.txt。全程只讀快取,不會對匯流排發出任何讀寫。鍵名含 pass、token、secret、key、auth 的設定值一律換成 ***;password*.txt 與 update.ini 永不收集。log.txt 是完整 Log,可能含本次 password 解鎖送出的寫入,外傳前請先檢查。不打 zip,需要時自行壓縮。
| report | 以目前時間建立回報資料夾。 |
| report <name> | 資料夾名稱附上 <name>(只能用英數字、底線與減號)。 |
# 把這次 NACK 問題的資料收成一包,交給 FAE。
report it6622_nack
report [<name>]tab
新增或關閉 Tab。Tab 數是 1 到 16 的可變清單,全部會存進 config.ini;關閉中間的 Tab 時,後面的 Tab 編號會自動遞補。只有終端機版與視窗版有,Batch 沒有。
| tab new | 新增一個 Tab 並切過去(上限 16 個,已滿會拒絕)。新 Tab 沒有掛載任何 IC,位址與版面都是預設值。 |
| tab close [<N>] | 關閉第 N 個 Tab(從 1 算起;省略 N 就是目前的 Tab)。不會再問你確認:Tab 上掛著的 Plugin 會被卸載、UART 與 TERM 連線會被釋放,之後後面的 Tab 往前補位,畫面回到前一個 Tab。最後剩下的一個 Tab 不能關閉。 |
# 新增一個 Tab 並切過去。 tab new # 關閉目前這個 Tab。 tab close # 關閉第 2 個 Tab。 tab close 2
tab new | tab close [<N>]mcp
開關讓 AI 助手(MCP client)陪你操作這個畫面的 MCP 伺服器。預設開啟、不會存進 config.ini,重開程式又回到開啟。只有終端機版與視窗版有,Batch 沒有。
| mcp | 查詢目前是開是關,以及有幾個 AI 助手連著(等同 mcp status)。裸 mcp 只是查詢,不會切換。 |
| mcp status | 查詢目前是開是關,以及有幾個 AI 助手連著。 |
| mcp on | 開啟:AI 助手可以讀取狀態、下指令。 |
| mcp off | 關閉:已連著的 AI 助手不會被斷線,但之後它呼叫的每個工具都會被拒絕;已經在跑的指令照常跑完。 |
# 查詢 MCP 伺服器的狀態與連線數。 mcp # 暫時不讓 AI 助手操作。 mcp off # 重新開放。 mcp on
mcp [on|off|status]update
顯示最近一次自動檢查的結果;update apply 安裝已偵測到的新版本。
| update | 顯示最近一次自動檢查的結果(是否有新版本),不會現查、不連網路。 |
| update apply | 啟動更新程式安裝已偵測到的新版本,本程式會隨即關閉;沒有可用新版本時不做任何事(先用 update 查看)。 |
# 顯示最近一次自動檢查的結果。 update # 安裝已偵測到的新版本,本程式隨即關閉。 update apply
update [apply]ver
顯示版本、ABI 版本與建置資訊。回報問題時請附上它的輸出。
| ver | 顯示版本、ABI 版本與建置資訊,不接受任何參數。 |
# 顯示版本資訊。
ver
verhelp
列出指令名稱,或查某一個指令的用法與範例。
| help | 列出全部指令的名稱(精簡清單)。 |
| help <command> | 查某一個指令:狀態列顯示用法,Log 寫出完整詞條(用法、說明、範例)。有子形式的指令(如 dump)會一併列出。 |
| help all | 列出每個指令的完整詞條(用法、說明、範例)。 |
| help keys | 列出按鍵對照表。 |
| help err <code> | 用白話文解釋一個錯誤碼(十進位如 -42,或名稱如 ERR_I2C_BUS)。 |
# 列出全部指令的名稱。 help # 查 dump 的各種用法與範例。 help dump # 列出每個指令的完整說明。 help all # 列出按鍵對照表。 help keys # 解釋錯誤碼 -42(I2C 匯流排錯誤)。 help err -42
help [keys | all | err <code> | <command>]quit
結束程式。會先把設定寫回 config.ini。
| quit | 結束程式,結束前會先把設定寫回 config.ini。 |
# 結束程式。
quit
quit批次模式
兩個執行檔都可以不開畫面直接跑指令:
nexus_tui.exe --batch --cmd "addr 58" --cmd "rd 0 10"
nexus_tui.exe --batch --run script.lua批次模式的 Exit Code 是第一條失敗指令的錯誤碼絕對值,前面的指令都成功就是
0,失敗的那一條之後的指令不會再執行。Plugin 自訂指令也一樣:Plugin 的處理函式
回傳錯誤碼才算失敗;處理函式若只在輸出裡寫了一行錯誤、卻回傳成功,Exit Code
仍是 0,所以要確認結果時請一併看輸出。指令名稱不存在是 7。--run 跑的是
Lua 自動化腳本,Exit Code 的意義另見Lua 自動化(互動模式沒有 Exit Code
這件事;互動模式下要跑腳本也只能用 run 指令,--cmd "run ..." 在批次模式裡會
被拒絕)。
兩個執行檔也接受 --profile <名稱或路徑>:在 --cmd 與腳本之前先載入工作區設定檔(profile 指令的啟動版,用法見工作區設定檔)。批次模式只套用到記憶體、不寫 config.ini;設定檔本身讀不到、版本過新或執行中工作擋住時中止並回傳非 0,部分失敗只印警告。批次模式下,同時給 --dongle 或 --log-level 時,分別以 --dongle、--log-level 為準。