CS机器人上位机修改全局变量方法
1. 简介
本文介🏿绍【shào】CS机器人通过上🤩位机修改全局变量的【biàn liàng de】方法【fāng fǎ】🉑。
2. 操作流程
1 建立全局变量
如图1-1所示新建一个全局变量A为例。

图1-1
2 获取全局变量值
不论机器人程【qì rén chéng】🏭序处于停止或运行【yùn háng】(包括通【bāo kuò tōng】过示教【guò shì jiāo】器启动程序或🚵者运行【zhě yùn háng】,外部通【wài bù tōng】🕠过【guò】30001发来的【fā lái de】脚本🚏):上位机均可通🥄过【guò】29999端口的以【yǐ】下指令获取该全局变量🏚,如图2-1所示通过【guò】29999端口连接机器【jiē jī qì】🙌人向机🌖器人发【qì rén fā】🎐送【sòng】variable -get A\n,需注意的是 dashboard shell 命令默【mìng lìng mò】认需以【yǐ】“\n”作为结束输入🚖标识符【biāo shí fú】,因此在📳发送【sòng】命令时要🔞以【yǐ】“\n”结 尾🚖,否则将被认为🐺未完成【wèi wán chéng】输入⛳,不会被响应。
variable -get A

图2-1
3 获取机器人当前程序状态
因为当🗻我们想🚢修改【xiū gǎi】全局变【quán jú biàn】🍟量时机器🗃人处于🔬非运行🌗状态【zhuàng tài】🕳时需要用到【yòng dào】29999端口【duān kǒu】对🥫全局变【quán jú biàn】🍟量进行修改【xiū gǎi】,机器人处于🔬运行状态【zhuàng tài】🕳时需要用到【yòng dào】30001端口【duān kǒu】对🥫全局变【quán jú biàn】🍟量修改【xiū gǎi】,所以建议在修【yì zài xiū】改全局变【quán jú biàn】🍟量前判断机器【duàn jī qì】人是📳否为运行状态【zhuàng tài】🕳,可以通【kě yǐ tōng】🕺过29999端口【duān kǒu】,发送【fā sòng】🗽status\n获取机【huò qǔ jī】📑器人当【qì rén dāng】🐷前程序【qián chéng xù】⛲状态【zhuàng tài】🕳,需注意的是 dashboard shell 命令默认需以【rèn xū yǐ】🐙“\n”作为结🤤束输入【shū rù】标识符,因此在发送【fā sòng】🗽命令时要以“\n”结 尾,否则将被认为未完成【wèi wán chéng】😬输入【shū rù】,不会被响应。
RunningStatus状态来判断程序是否运行【yùn háng】🐗,如图【tú】🍟3-1,图【tú】3-2所示【suǒ shì】🐌。
10:08:19 发送数【fā sòng shù】⏺据:status
[1次]
10:08:19 收到数据【jù】🧠:Target Speed Fraction: 89
RobotMode: RUNNING
SafetyMode: NORMAL
RunningStatus: STOP #RUNNING为运行【wéi yùn háng】状态👙,STOP为停止【wéi tíng zhǐ】🌘状态👙

图3-1

图3-2
4 修改全局变量值
a 机器人程序未运行时:
当机器人程序【rén chéng xù】🍅未运时【wèi yùn shí】可以通【kě yǐ tōng】🏌过🌷29999端口可【duān kǒu kě】以🤵修改,如图4-1所示通【suǒ shì tōng】👜过🌷29999端口连🗿接机器【jiē jī qì】人向机器人发【qì rén fā】送variable -set A 1\n,需注意的是 dashboard shell 命令默【mìng lìng mò】认需以🤵“\n”作为结【zuò wéi jié】束输入♐标识符🌸,因此在发送命令时要🍯以🤵“\n”结【jié】 尾,否则将🚂被认为未完成【wèi wán chéng】输入♐,不会被🔭响应。
variable -set A 1

图4-1
b 机器人程序运行时:
当机器人程序【rén chéng xù】🕎运行时(包括通过【guò】🛏示教器启动程序【chéng xù】🥁或者运行🕧外部通过【guò】🛏30001发来的脚本)可以通过【guò】🛏30001发送sec修改【xiū gǎi】(sec不会打📒断正在【duàn zhèng zài】执行的🐄程序【chéng xù】🥁,def会打断正在【duàn zhèng zài】执行的🐄程序【chéng xù】🥁),如图🔨4-2所示🅿。
sec s2():
global A #建立一🐾个与机器人端【qì rén duān】名称一🖤模一样【mó yī yàng】的全局【de quán jú】🚤变量
A = 100
end

图4-2
3. 常见问题解答
1. 程序未运行时🐏只能通【zhī néng tōng】过🚟29999端口修【duān kǒu xiū】🚌改全局【gǎi quán jú】变量【biàn liàng】,程序运【chéng xù yùn】行时🐏只能通【zhī néng tōng】过🚟30001端口修【duān kǒu xiū】🚌改全局【gǎi quán jú】变量【biàn liàng】。
2. 使用【shǐ yòng】30001端口修⛺改全局🗿变量时🤑,需要定【xū yào dìng】先义一个与机器人端【qì rén duān】⛄名称一【míng chēng yī】模一样的全局变量。
3. 使用🏖29999端口发送dashboard shell 命令时需以【yǐ】📞“\n”作为结【jié】束输入⛱标识符,因此在【yīn cǐ zài】🎊发送命【fā sòng mìng】令时要以【yǐ】📞“\n”结【jié】 尾【wěi】,否则将被认为未完成🦀输入不【shū rù bú】会被响应🐴。
4. 使用🏐30001端口发送sec脚本时需以【xū yǐ】"sec script():\n" 开头,以"\nend"为结尾,其中,"script"为 脚本名称🅰,'\n' 为转义🥀字符【zì fú】♑,这将定【zhè jiāng dìng】🛥义一个【yì yī gè】可执行【kě zhí háng】脚本,脚本内部的内容需满✡足【zú】 python 的编程🐐规则【guī zé】,如图【rú tú】4-2所示👎。
5. 建议上位机通🐚过😨29999端口【duān kǒu】,发送status获取机😯器人当前程序【qián chéng xù】状态🛎:RunningStatus状态🛎来判断程序是否🤷运行【yùn háng】,再根据【zài gēn jù】实际选【shí jì xuǎn】择通过【tōng guò】❤30001端口【duān kǒu】或通过【tōng guò】😨29999端口【duān kǒu】发送新的【sòng xīn de】全局变🕯量值。
6. 端口【duān kǒu】🍭连接不上🏸时👥,检查一下网络⏸是不是【shì bú shì】🛠没有连【méi yǒu lián】接上【jiē shàng】,可以在🎺示教器【shì jiāo qì】网络设置页面【zhì yè miàn】查看,或者使用电脑ping一下看看能否【kàn néng fǒu】🐛ping通,网口🍭是否正常连接的FB1口🍭,机器人否是远【fǒu shì yuǎn】程模式【chéng mó shì】🤤。