Skip to Content
指令參考

指令參考

兩個版本共用同一張指令表。同名指令的語法與語意逐字相同,差異只會是「有沒有 這個指令」——標了「僅視窗版」的就是那種。

指令列在畫面最下方。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 定址寫入。
setread-modify-write:把遮罩選中的位元設成指定值,其餘位元原樣保留。
clrread-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 all

trigger

對一筆已在監看的暫存器設定觸發條件(要先 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 list

unmount

卸下指定面板的掛載。

用法
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 who

dongle 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 rescan

dongle 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 update

Plugin

指令做什麼
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 lock

layout unlock僅視窗版

解除版面鎖定(視窗版限定):拖曳、縮放與分隔線拖曳恢復正常。

用法
layout unlock解除版面鎖定。
範例
# 解除鎖定,狀態列的 LOCK 消失。
layout unlock
完整語法:layout unlock

layout 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 list

layout 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 close

autoscroll

開關某個 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
完整語法:clear

UART

指令做什麼
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 scan

uart 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 clear

uart 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 status

profile

把整個工作區(掛載、監看、觸發、面板版面、暫存器定義檔、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
完整語法:ver

help

列出指令名稱,或查某一個指令的用法與範例。

用法
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 為準。