新聞中心
全新的 fr_comm 函式庫讓 Python 3.10 以上版本可在 Windows、Linux 與 ARM Linux 上完整控制 FlashRunner 2.0,中間不再需要 C/C++ 或 C# 轉接層。
現代產線與自動化測試環境對 Python 的依賴日益加深。它可原生執行於嵌入式 Linux 板卡、能直接整合進 CI/CD 流程,也支撐著無數廠內工具的自動化層。然而在此之前,若要將這些環境連接到 FlashRunner 2.0,必須透過 C/C++ 或 C# 的整合層來銜接 — 而這層額外的相依性,並非每個團隊都有餘力長期維護。
fr_comm Python 函式庫解除了這項限制。它以標準的 pip 安裝套件(wheel)形式提供,讓您在 Windows、Linux 與 ARM Linux 上,直接以 Python 3.10 以上版本使用完整的 FlashRunner 通訊介面,包含設備指令、檔案傳輸、專案執行、資料加密與即時記錄。
安裝 wheel 套件:
python -m pip install fr_comm_python-1.0.0.0-py3-none-any.whl確認安裝結果:
python -c "import fr_comm; print('import ok')"
python -c "from fr_comm import FR_GetDllVersion; print(FR_GetDllVersion())"設定到此就已完成。以下這個最精簡的範例會建立一個區域網路連線工作階段、查詢設備狀態並處理錯誤,可直接延伸成完整的量產腳本:
from fr_comm import FlashRunner, FR_Comm_Exception
try:
with FlashRunner("LAN", "192.168.1.100:1234") as fr:
fr.FR_SendCommand("#GETENGSTATUS")
print(fr.FR_GetAnswer(1500))
except FR_Comm_Exception as exc:
print(exc)客戶端應用程式只需透過六個公開符號即可操作。這樣刻意精簡的介面,能讓整合工作保持單純,日後升級的路徑也更為清楚:
FlashRunner 物件在建立的當下就會立即開啟連線。建議採用 with 區塊的寫法:即使操作過程中發生例外,連線工作階段也會被自動且正確地關閉。
FlashRunner("LAN", "192.168.1.100:1234") # 區域網路,最常見的量產配置
FlashRunner("COM3", "115200") # Windows 上的 USB/序列埠
FlashRunner("/dev/ttyUSB0", "115200") # Linux 上的 USB/序列埠系統同時支援 115200 與 3000000 兩種鮑率。FlashRunner 啟動時預設為 115200;若要切換到 3 Mbaud,請先在 115200 的狀態下送出 #55*SETSERIALBAUDRATE HIGH,再將主機端的鮑率調整為相同設定後繼續作業。如此一來,即使是直接的 USB 連線也能實現高吞吐量的傳輸。
指令的執行採用單純的送出/接收模式。FR_SendCommand() 可送出任何 FlashRunner 指令字串,FR_GetAnswer() 則以可設定的逾時時間收取設備的回應:
fr.FR_SendCommand("#GETENGSTATUS")
answer = fr.FR_GetAnswer(1500) # 逾時時間,單位為毫秒在多通道的情境下,FR_SendCommand_Ex() 可指定明確的通道清單,並自動組出通道標頭,省去在呼叫端手動組字串的麻煩:
fr.FR_SendCommand_Ex([1, 2], "RUN Project.prj")
answer = fr.FR_GetAnswer(1500)檔案傳輸支援雙向操作。選用的 ProgressHandler 會回報百分比進度,在傳輸時間較長時,可用於主控台訊息或介面上的進度條:
fr.FR_SendFile(r"C:\FlashRunner\app.frb", FR_FileType.FRB)
fr.FR_GetFile("app.frb", r"C:\FlashRunner\dest", FR_FileType.FRB)專案的執行只需一次呼叫。FR_RunProject() 會持續等待,直到所有通道完成或逾時為止。搭配選用的逐通道回呼函式,即可將結果直接送入 MES 或測試報告系統:
def on_done(channel: int, result: bool) -> None:
print(f"channel {channel}: {'OK' if result else 'FAIL'}")
fr.FR_RunProject("demo.prj", [1, 2, 3], 120000, on_done)若應用程式需要將受保護的內容寫入 FlashRunner 的動態記憶體,可完全在 Python 內完成 RSA/AES 加密,無須額外工具。FR_GetPublicKey() 會取得並儲存設備的公開金鑰;接著可依作業型態選擇兩種加密模式:
fr_comm 函式庫毫無妥協地將 FlashRunner 2.0 延伸到以 Python 為基礎的生產與測試環境。凡是 C/C++ 與 C# 函式庫所能執行的操作 — 指令、檔案傳輸、專案執行、加密與即時記錄 — 都能透過這個單一的 pip 安裝套件取得,適用於任何可執行 Python 3.10 的平台。
對於正在圍繞 FlashRunner 建構自動化的團隊而言,這意味著更短的整合週期、更少的工具鏈相依性,以及從一段 Python 腳本直達完整受控燒錄站台的捷徑 — 無論該站台位於開發用工作站,或是嵌入在產線之中。