ByteScope

Serial Monitor & Plotter

用 USB 序列埠和開發板對話 —— 終端機、HEX dump、即時繪圖,全都在瀏覽器裡。

Talks to your device locally over Web Serial — nothing is uploaded.

Checking browser support…

關於這個工具

這個序列埠監控透過 Web Serial API 直接連上開發板 —— 用的就是 Chrome 與 Edge 對任何想存取 USB 或藍牙序列裝置的網站所採用的同一套權限模型。選好鮑率(也可以自己輸入數值),再指定資料位元、停止位元、同位檢查與流量控制,幾次點擊就能開啟連接埠。不必安裝任何東西,也沒有背景服務常駐;關掉分頁,連線就跟著結束。

終端機是雙向的:輸入一行按 Enter(或點「送出」)就會寫回開發板,行尾字元可選換行、歸位、兩者皆有或都不加,還有可開關的本機回顯,就算開發板自己不回送,你也看得到剛才打了什麼。追時序問題時可以開啟每行時間戳記;顯示模式則能在純文字、HEX dump(版面與 /hex-editor 逐位元組一致),以及二進位協定與可讀日誌交錯時的混合檢視之間切換。

繪圖器看得懂哪些格式

把數值持續送出,繪圖器會自動判斷格式:純 CSV(12,34,56)、Arduino Serial Plotter 風格的標籤配對(temp:25.3 hum:60),或只用空白分隔的數字。每個辨識到的通道都有自己的顏色、即時的最小值/最大值/平均值讀數,以及一鍵隱藏或改名的開關 —— 而且不像 IDE 內建的繪圖器,這裡整段視窗內的資料集都能匯出成 CSV 檔,圖表本身也能存成 PNG。

傳送巨集、工作階段記錄與搜尋

常用的指令可以存成具名的巨集按鈕 —— 一組 AT 指令、一份除錯選單、一段重置流程 —— 它們會留在這個瀏覽器裡,下次直接按。每一次工作階段都能記錄並下載成 .txt.log 檔,終端機的搜尋/過濾欄位既接受單純的子字串,也接受完整的正規表示式,再長的紀錄事後也好梳理。

瀏覽器支援度

Web Serial 是 Chromium 專屬的 API:桌面版的 Chrome、Edge、Opera,以及 Android 版 Chrome 148 以後的版本。Safari 與 Firefox 沒有實作,也沒有公布任何計畫,所以本工具在那些瀏覽器上不會給你一顆按了沒反應的按鈕,而是清楚說明原因 —— 上方的支援表列出的,就是你現在這個瀏覽器實際偵測到的結果。

常見問題

哪些瀏覽器可以開啟序列埠?

桌面版的 Chrome、Edge、Opera,以及 Android 版 Chrome 148 以上。Safari 與 Firefox 並未實作 Web Serial API,也沒有公布任何支援時程,所以這個頁面不會在那些瀏覽器上放一顆按了沒用的連線按鈕,而是誠實列出支援狀況表,並用白話說明原因。

我的序列埠資料會被上傳到哪裡嗎?

不會。連線完全走瀏覽器的 Web Serial API,位元組是在頁面與裝置之間直接流動。你傳送或接收的內容都不會送到伺服器;網站自己的分析只會記錄你使用過這個工具,絕不記錄資料本身。

非數值的行,繪圖器會怎麼處理?

它不會拿去繪圖,但那些行照樣顯示在終端機裡 —— 開發板把除錯文字和感測器讀數混在同一條序列線上輸出,也不需要切換特別的模式。只有能解析成 CSV、標籤配對或空白分隔數字的行,才會變成繪圖的取樣點。

可以不用每次重新挑選,就重新連上同一塊開發板嗎?

可以。一旦網站取得某個連接埠的授權,瀏覽器就會記住它;這個頁面會透過 Web Serial API 的 `getPorts()` 列出你先前授權過的裝置,一鍵重新連線。除非你想換一台裝置,否則不會再跳出選擇對話框。

DTR 與 RTS 這兩個開關是做什麼的?

它們是多數 USB 轉序列晶片都會提供的兩條硬體控制線。許多 Arduino 相容開發板把 DTR 接到 reset 腳位,所以把它拉低再拉高,就會像 Arduino IDE 上傳前那樣把板子重置進 bootloader —— 想在不碰 USB 線的情況下觀察板子重開機時很好用。

可以從這裡把檔案送到裝置嗎?

可以 —— 工具內建 XMODEM 與 YMODEM 傳送端,供那些年代較早、預期在純序列連線上使用這類協定的開發板與 bootloader 使用。選好協定、挑一個檔案,傳輸進度(已送出的區塊數、重試次數)就會即時顯示在面板上。

它能解碼特定協定,而不只是顯示原始位元組嗎?

可以 —— 除了預設的原始行檢視之外,還內建 NMEA 0183 解碼器(GPS/GNSS 語句),以及一個由你自己命名每個欄位的分隔符範本,把 `/hex-editor` 的標頭範本概念套用到文字行、而不是二進位標頭上。