Dongle 專屬功能
有些裝置(例如 STM32 Dongle)自己提供廠商操作、INT 輸入、匯流排恢復和精確脈衝。
腳本可以直接使用它們,全部只作用在這支腳本自己的匯流排。這些功能需要裝置支援;
模擬後端只有一個回聲操作 echo。
廠商操作:dongle.op
local r = dongle.op("wave", {scl_hz = 100000, sda_hz = 100000})
check(r.tick_hz > 0, "wave started")參數表用字串鍵寫具名參數,或用 1、2… 依宣告順序寫位置參數。程式會依裝置宣告的
目錄檢查型別與範圍、組出位元組,結果欄位再轉成表:
- 數字型別 → 數字;
bool→ 布林; enum→ 標籤字串(不在目錄裡的值是數字);hex→ 小寫十六進位字串。
打錯操作名稱或參數會丟出清楚的錯誤訊息,腳本以失敗結束。
INT:int.config/int.status/int.events/int.clear
int.config("falling", "up")
delay_ms(100)
local ev, dropped = int.events()
log("info", "edges: " .. #ev .. ", dropped: " .. dropped)腳本結束時(不論結果)會自動釋放這支腳本的 INT 設定。int.events() 不會等待,
有就回傳、沒有回傳空陣列;它用腳本自己的游標,不會把事件從畫面或 Plugin 手上拿走。
匯流排恢復與脈衝:i2c.recover/gpio.pulse
local pins = i2c.recover()
check(pins == 3, "bus released") -- 3:兩條線都已放開
gpio.write(1, 0)
local w = gpio.pulse(1, 1, 2000) -- 2000 微秒高電位脈衝i2c.recover() 做完不代表線已放開,請檢查回傳值。gpio.pulse() 的腳位要先設成輸出。
範例:以 echo 驗證參數編碼
-- 用模擬後端的回聲操作驗證 dongle.op 的參數編碼:送出什麼就收回什麼。
local r = dongle.op("echo", {data = "0a0B"})
check(r.data == "0a0b", "named argument comes back as lowercase hex")
local r2 = dongle.op("echo", {"deadbeef"})
check(r2.data == "deadbeef", "positional argument works too")
log("info", "dongle_echo done")預期輸出
CHECK OK: named argument comes back as lowercase hex
CHECK OK: positional argument works too
dongle_echo done範例:設定方波(需要真實裝置)
-- 需要支援 "wave" 操作的真實裝置(例如 STM32 Dongle);模擬後端沒有這個操作。
local r = dongle.op("wave", {scl_hz = 100000, sda_hz = 100000})
check(r.tick_hz > 0, "wave started")
log("info", "tick_hz = " .. r.tick_hz)⚠ 這支範例需要實體硬體才能真的執行,模擬後端(mock)沒有對應的裝置可以回應。
完整函式列表見 API 參考。