SwisTrack/SwisTrack 介面
SwisTrack 充當 TCP 伺服器(預設埠:3000),因此可以輕鬆連線到其他程式以進一步處理結果。文字格式的 NMEA 0183 協議(可選校驗和)用於對資料進行編碼。
如果你在系統上安裝了 netcat,請鍵入
nc HOSTNAME 3000
開啟與 SwisTrack 的 TCP 連線。Netcat 將在你的終端上列印來自 SwisTrack 的訊息,並將你鍵入的所有內容傳送回 SwisTrack。(你也可以使用 telnet,儘管 telnet 不僅開啟 TCP 連線。)
如果你使用的是最新版本的 bash,你也可以在 bash shell 上鍵入
cat < /dev/tcp/HOSTNAME/3000
讀取來自 SwisTrack 的所有訊息。請注意,這隻會將來自 SwisTrack 的訊息列印到你的終端,但不會發送你鍵入的內容。
要連線到 SwisTrack,請啟動 HyperTerminal 並在“連線到”對話方塊中選擇“TCP / IP Winsock”。將主機地址設定為“localhost”,或 SwisTrack 執行的計算機的主機名/IP 地址,並將埠號設定為 3000。當你單擊“確定”時,HyperTerminal 將建立與 SwisTrack 的連線。(請注意,SwisTrack 目前不會顯示連線是否開啟。)
如果你從另一臺計算機連線,你可能需要配置 SwisTrack 執行的計算機上的防火牆以允許埠 3000 上的傳入連線。
如果你現在在 SwisTrack 中執行一個步驟,並且至少有一個輸出元件(例如 Output Particles 元件)處於活動狀態,你將在 HyperTerminal 視窗中看到幾行出現。
SwisTrack 使用 NMEA 0183 訊息與其他程式交換資料。(請注意,NMEA 0183 不僅是訊息格式,但 SwisTrack 不使用協議的其他部分。)此類訊息如下所示
$MESSAGE_TYPE,FIELD1,FIELD2,...FIELDn*XX
其中 XX 表示校驗和,透過對 $ 和 * 之間的每個位元組進行異或運算並以兩位十六進位制數形式寫出結果來獲得。SwisTrack 始終將校驗和新增到傳出訊息,但不要求傳入訊息上的校驗和。沒有校驗和或校驗和正確的訊息將被接受,而校驗和不正確的訊息將被丟棄。
所有訊息都以 $ 符號開頭,並以 <CR><LF>(字元 13 或 0xD,後跟字元 10 或 0xA)結束。資料欄位以逗號分隔,小數用點表示。訊息型別是不區分大小寫且長度任意的字串(與標準不同,標準將其限制為 5 個字元)。
在 SwisTrack SVN 樹的 Examples/OutputProcessing 資料夾中提供了用於以各種程式語言解析 NMEA 訊息的示例程式碼。
輸出元件可以自由定義自己的訊息型別。這些型別的文件可在相應的 輸出元件描述 中獲得。
此外,SwisTrack 還提供一些內建訊息型別
- SUBSCRIBE
- 告訴 SwisTrack 僅傳送特定型別的訊息,而不是所有訊息。例如,要僅接收 STEP_START 和 STEP_STOP 訊息,請向 SwisTrack 傳送以下訊息
$SUBSCRIBE,STEP_START,STEP_STOP
- 要再次接收所有訊息,請傳送
$SUBSCRIBE
- STEP
- 執行一個步驟,就像你在工具欄中單擊了 步驟 按鈕一樣。示例
$STEP
- RUN
- 設定執行模式。示例
$RUN,true or $RUN,false
- START
- 在測試或生產模式下啟動管道。示例
$START or $START,production
- STOP
- 停止管道。示例
$STOP
- RELOADCONFIGURATION
- 重新載入配置。示例
$RELOADCONFIGURATION
- BROADCAST
- 將訊息廣播到所有 SwisTrack 客戶端。第一個引數將成為廣播訊息的訊息型別。如果你想插入來自另一個程式的資訊(例如狀態資訊),這將很有用。例如,你的主要實驗控制程式可能會使用以下內容廣播實驗的開始
$BROADCAST,EXPERIMENT_START,some_parameters
記錄或處理來自 SwisTrack 的資料的最簡單方法是將輸出管道到 Perl 或 Python 指令碼(或你喜歡的任何其他指令碼語言)。如果你的 bash 版本支援 /dev/tcp,那麼你可以編寫
./my-filter-script.pl < /dev/tcp/HOSTNAME/3000
你也可以使用 netcat
nc HOSTNAME 3000 | ./my-filter-script.pl
有時,將所有資料同時寫入日誌檔案非常有用。為此,你可以使用 tee
nc HOSTNAME 3000 | tee mylogfile.txt | ./my-filter-script.pl
如果你還需要向 SwisTrack 傳送命令,那麼你必須從你的指令碼開啟你自己的 TCP 連線。
示例指令碼可在 SwisTrack SVN 樹的 Examples/OutputProcessing 資料夾中找到。
在 Windows 上,你必須編寫一個專用程式來開啟與 SwisTrack 的 TCP 連線。解析 NMEA 訊息的示例程式碼可在 SwisTrack SVN 樹的 Examples/OutputProcessing 資料夾中找到。

