CS機器人上位機修改全局變量方法
1. 簡介
本文介紹CS機器人通過上位機修改全局變量的方法。
2. 操作流程
1 建立全局變量
如圖1-1所示新建一個全局變量A為例。

圖1-1
2 獲取全局變量值
不論機器人程序處于停止或運行(包括通過示教器啟動程序或者運行,外部通過30001發來的腳本):上位機均可通過29999端口的以下指令獲取該全局變量,如圖2-1所示通過29999端口連接機器人向機器人發送variable -get A\n,需注意的是 dashboard shell 命令默認需以“\n”作為結束輸入標識符,因此在發送命令時要以“\n”結 尾,否則將被認為未完成輸入,不會被響應。
variable -get A

圖2-1
3 獲取機器人當前程序狀態
因為當我們想修改全局變量時機器人處于非運行狀態時需要用到29999端口對全局變量進行修改,機器人處于運行狀態時需要用到30001端口對全局變量修改,所以建議在修改全局變量前判斷機器人是否為運行狀態,可以通過29999端口,發送status\n獲取機器人當前程序狀態,需注意的是 dashboard shell 命令默認需以“\n”作為結束輸入標識符,因此在發送命令時要以“\n”結 尾,否則將被認為未完成輸入,不會被響應。
RunningStatus狀態來判斷程序是否運行,如圖3-1,圖3-2所示。
10:08:19 發送數據:status
[1次]
10:08:19 收到數據:Target Speed Fraction: 89
RobotMode: RUNNING
SafetyMode: NORMAL
RunningStatus: STOP #RUNNING為運行狀態,STOP為停止狀態

圖3-1

圖3-2
4 修改全局變量值
a 機器人程序未運行時:
當機器人程序未運時可以通過29999端口可以修改,如圖4-1所示通過29999端口連接機器人向機器人發送variable -set A 1\n,需注意的是 dashboard shell 命令默認需以“\n”作為結束輸入標識符,因此在發送命令時要以“\n”結 尾,否則將被認為未完成輸入,不會被響應。
variable -set A 1

圖4-1
b 機器人程序運行時:
當機器人程序運行時(包括通過示教器啟動程序或者運行外部通過30001發來的腳本)可以通過30001發送sec修改(sec不會打斷正在執行的程序,def會打斷正在執行的程序),如圖4-2所示。
sec s2():
global A #建立一個與機器人端名稱一模一樣的全局變量
A = 100
end

圖4-2
3. 常見問題解答
1. 程序未運行時只能通過29999端口修改全局變量,程序運行時只能通過30001端口修改全局變量。
2. 使用30001端口修改全局變量時,需要定先義一個與機器人端名稱一模一樣的全局變量。
3. 使用29999端口發送dashboard shell 命令時需以“\n”作為結束輸入標識符,因此在發送命令時要以“\n”結 尾,否則將被認為未完成輸入不會被響應。
4. 使用30001端口發送sec腳本時需以"sec script():\n" 開頭,以"\nend"為結尾,其中,"script"為 腳本名稱,'\n' 為轉義字符,這將定義一個可執行腳本,腳本內部的內容需滿足 python 的編程規則,如圖4-2所示。
5. 建議上位機通過29999端口,發送status獲取機器人當前程序狀態:RunningStatus狀態來判斷程序是否運行,再根據實際選擇通過30001端口或通過29999端口發送新的全局變量值。
6. 端口連接不上時,檢查一下網絡是不是沒有連接上,可以在示教器網絡設置頁面查看,或者使用電腦ping一下看看能否ping通,網口是否正常連接的FB1口,機器人否是遠程模式。