--- tags: TPW1 --- # TPW1 PC Server Protocol [TOC] ## 通訊方式 以ZeroMQ函式庫進行通訊 https://zeromq.org/languages/python/ 使用Sub模式接收ROS訊息,位址預設為tcp://PC ip:17777 使用Push模式發送訊息給ROS,位址預設為tcp://PC ip:17778 #### PC Server 位址廣播 Port: 58788 編碼為以冒號分隔資料與check sum ex: data:checksum checksum的資料為data的字元值相加 ## 通訊格式 使用byte array進行通訊 前9個byte為命令的Header,為命令的內容位於 (9 + 錯誤來源字串長度 + 錯吳訊息字串長度)。 | 位元 | 長度 | 用途描述 | | --- | -------- | -------- | | 0 | 1 | 命令編號(ID) | | 1 | 1 | 傳送序號,PC Server收到命令後,會以該序號進行回傳,用以區別回應哪一個命令 | | 2 | 1 | 錯誤碼 | | 3 | 1 | 錯誤來源字串長度,以UTF-8編碼 | | 4 | 1 | 錯誤訊息字串長度,以UTF-8編碼 | | 5-8 | 4 | 命令所附帶資料的長度,以little endian編碼的int | ### Sequence Diagram #### 一般命令 ```mermaid sequenceDiagram UI->>PC Server: Command with sn:(ex:1) PC Server->>UI: Ack with sn:(ex:1) ``` ## 命令種類 因payload啟始位元為變動值, 下列命令的位元皆為payload起始位置的相對位置, 命令內容如遇需要位元轉數值的部份, 皆以little endian編碼 ### (ID: 2 ) Change Password Req - Request command: <br><br> | 位元 | 長度 | 用途描述 | |:------------ |:---------- |:-------------------- | | 0 | 2 | 姓名長度: short | | 2 | 2 | 密碼長度: short | | 3 | 2 | 新密碼長度: short | | 5 | 姓名長度 | 姓名: UTF-8 String | | 5 + 姓名長度 | 密碼長度 | 密碼: UTF-8 String | | 5 + 姓名長度 + 密碼長度 | 新密碼長度 | 新密碼: UTF-8 String | - Response command: (ID: 3) ### (ID: 3 ) Change Password Resp - Response command: no data ### 錯誤碼清單 | 代號 | 描述 | | ---- | ---- | | 通訊錯誤 || | 10 | 產生錯誤物件失敗 | | 11 | 通訊實體層初始失敗 | | 12 | 通訊實體層傳送失敗 | | 14 | 遠端離線 | | 15 | 連線中斷 | | 16 | 超時錯誤 | | 18 | ZMQ連線異常 | | 19 | 重覆開啟錯誤 | | 20 | 缺少參數錯誤 | | 22 | 離線錯誤 | | JSON檔案錯誤 | | | 23 | Buffer writer寫出失敗 | | 24 | 檔案不存在 | | 25 | JSON檔案讀取失敗 | | 26 | JSON檔案寫出失敗 | | 27 | Output stream writer關閉失敗 | | 28 | 無JSON內容錯誤 | | 29 | JSON對應錯誤 | | 錯誤 | | | 101 | 找不到該任務錯誤 | | 102 | 無執行者錯誤 | | 103 | 系統忙碌錯誤 | | 104 | 拒絕停止錯誤 | | 105 | 無任務可供提止錯誤 | | 106 | 使用者取消 | | 107 | Query Http failed error | | 108 | 執行條件狀態錯誤 | | 109 | 任務執行例外錯誤 | | 130 | 熱像儀監控點數過多錯誤 | | 131 | 熱像儀監控方框過多錯誤 | | 140 | 啟動錄音失敗 | | 141 | 錄音檔儲存失敗 | | 150 | 無進行中巡邏 | | 151 | 影像檔案儲存失敗 | | 160 | 登入失敗 | | 161 | 密碼變更失敗 | | ROS端錯誤 | | | 170 | NAVERR_NOT_INIT 導航尚未啟動 | | 171 | NAVERR_TARGET_PENDING 導航目標移動暫停 | | 172 | NAVERR_TARGET_FAIL 導航目標移動失敗 | | 173 | NAVERR_PROC_RECALLED 導航程序重複啟動 | | 174 | NAVERR_PROC_REJECTED 導航程序被拒絕 | | 175 | NAVERR_PROC_PREEMPTED 導航程序被中斷 | | 176 | NAVERR_PROC_LOST 導航程序失敗 | | 177 | NAVERR_PROC_ABORTED 導航程序停止 | | 178 | ROS_NOT_READY ROS尚未啟動 | | 179 | PATH_RECORD_REJECTED 移動路徑紀錄啟動失敗 | | 180 | MOVEBASE_LINK_FAIL MOVEBASE連線失敗 | | 255 | 未編碼錯誤 |