CS机器人上位机修改全局变量方法
1. 简介
本文介绍CS机器人【jī qì rén】❕通过上位机修【wèi jī xiū】改全局变量的【biàn liàng de】🚊方法🌚。
2. 操作流程
1 建立全局变量
如图1-1所示新建一个全局变量A为例。

图1-1
2 获取全局变量值
不论机器人程序处于【xù chù yú】停止或【tíng zhǐ huò】运行🥝(包括通过示教🈂器启动【qì qǐ dòng】🚽程序或【chéng xù huò】者运行【zhě yùn háng】🚌,外部通过👭30001发来的脚本):上位机【shàng wèi jī】均可通🏩过👭29999端口的以🐡下指令获取💻该全局【gāi quán jú】变量【biàn liàng】,如图🌸2-1所示通【suǒ shì tōng】过👭29999端口连接机器【jiē jī qì】人向机器人发送🔅variable -get A\n,需注意的是【de shì】 dashboard shell 命令默认需以【rèn xū yǐ】🐡“\n”作为结【zuò wéi jié】🈺束输入📭标识符,因此在发送🔅命令时要以【yào yǐ】🐡“\n”结🈺 尾📀,否则将被认为未完成🥫输入📭,不会被【bú huì bèi】响应🐸。
variable -get A

图2-1
3 获取机器人当前程序状态
因为当我们想💣修改【xiū gǎi】全局变【quán jú biàn】🅰量时机器【qì】🌧人处于非运行🧙状态【zhuàng tài】时🍐需要用到【dào】🍍29999端口对【duān kǒu duì】全局变【quán jú biàn】🅰量进行修改【xiū gǎi】,机器【qì】人处于运行状态【zhuàng tài】❣时需要用到【dào】🍍30001端口对【duān kǒu duì】全局变【quán jú biàn】🅰量修改【xiū gǎi】,所以建【suǒ yǐ jiàn】🥇议在修改【xiū gǎi】全局变【quán jú biàn】🅰量前判断机器【qì】人是否为运行【wéi yùn háng】状态【zhuàng tài】❣,可以【kě yǐ】🀄通过🏄29999端口【duān kǒu】,发送✊status\n获取机【huò qǔ jī】器人当【qì rén dāng】👕前程序状态【zhuàng tài】,需注意🔈的是 dashboard shell 命令默认需以🀄“\n”作为结【jié】🏥束输入标识符【biāo shí fú】,因此在【yīn cǐ zài】发送✊命令时要以🀄“\n”结【jié】🏥 尾,否则将被认为未完成💝输入,不会被【bú huì bèi】响应🎈。
RunningStatus状态来【zhuàng tài lái】🛫判断程【pàn duàn chéng】🏳序是否【xù shì fǒu】运行📍,如图3-1,图3-2所示。
10:08:19 发送数据【jù】⏩:status
[1次]
10:08:19 收到数【shōu dào shù】📇据:Target Speed Fraction: 89
RobotMode: RUNNING
SafetyMode: NORMAL
RunningStatus: STOP #RUNNING为运行状态【zhuàng tài】✋,STOP为停止【wéi tíng zhǐ】状态【zhuàng tài】✋

图3-1

图3-2
4 修改全局变量值
a 机器人程序未运行时:
当机器【dāng jī qì】📆人程序【rén chéng xù】未运时可以通🐭过🔸29999端口可🎯以修改【yǐ xiū gǎi】,如图⏺4-1所示通【suǒ shì tōng】过🔸29999端口连【duān kǒu lián】📃接机器【jiē jī qì】人向机🕶器人发【qì rén fā】送variable -set A 1\n,需注意的是 dashboard shell 命令默认需以“\n”作为结【zuò wéi jié】🥜束输入🚑标识符,因此在发送命令时要以“\n”结 尾【wěi】,否则将被认为【bèi rèn wéi】未完成🏎输入,不会被🔐响应【xiǎng yīng】。
variable -set A 1

图4-1
b 机器人程序运行时:
当机器人程序【xù】运行时(包括通【bāo kuò tōng】过示教【guò shì jiāo】📌器启动🧖程序或【chéng xù huò】者运行🔎外部通【wài bù tōng】🏜过【guò】30001发来的脚本)可以通【kě yǐ tōng】过【guò】30001发送sec修改😾(sec不会打断💢正在执【zhèng zài zhí】行的程序【xù】,def会打断💢正在执【zhèng zài zhí】行的程序【xù】),如图🌜4-2所示➿。
sec s2():
global A #建立一【jiàn lì yī】🕤个与机器人端【qì rén duān】👟名称一模一样【mó yī yàng】🍘的全局变量
A = 100
end

图4-2
3. 常见问题解答
1. 程序未🐽运行时只【zhī】📵能通过【néng tōng guò】😑29999端口修改全局【gǎi quán jú】变量【biàn liàng】,程序运行时只【zhī】📵能通过【néng tōng guò】😑30001端口修改全局【gǎi quán jú】变量【biàn liàng】。
2. 使用30001端口修【duān kǒu xiū】改全局【gǎi quán jú】变量时,需要定【xū yào dìng】先义一【xiān yì yī】🌝个与机器人端🚾名称一模一样✨的全局💅变量。
3. 使用29999端口发送📊dashboard shell 命令时需以🍟“\n”作为结【jié】🖲束输入🏟标识符,因此在【yīn cǐ zài】发送命📯令时要以🍟“\n”结【jié】🖲 尾【wěi】🥚,否则将被认为未完成【wèi wán chéng】输入不【shū rù bú】会被响应【yīng】。
4. 使用【shǐ yòng】30001端口发送🌤sec脚本时🕢需以【yǐ】🕣"sec script():\n" 开头【kāi tóu】,以【yǐ】"\nend"为结尾,其中【qí zhōng】🔋,"script"为 脚本名称,'\n' 为转义字符,这将定义一个【yì yī gè】可执行脚本,脚本内🥙部的内【bù de nèi】容需满🎐足 python 的编程【de biān chéng】🐵规则,如图【rú tú】🐔4-2所示。
5. 建议上【jiàn yì shàng】位机通过🥡29999端口,发送status获取机Ⓜ器人当前程序状态📷:RunningStatus状态来🦓判断程【pàn duàn chéng】序是否运行【yùn háng】😄,再根据实际选择通过【zé tōng guò】🥡30001端口或【duān kǒu huò】通过🥡29999端口发【duān kǒu fā】🦋送新的【sòng xīn de】全局变🤹量值。
6. 端口连接不上时,检查一【jiǎn chá yī】🎩下网络是不是没有连🎾接上【jiē shàng】,可以在【kě yǐ zài】示教器【shì jiāo qì】🚄网络设🛐置页面查看🎳,或者使用电脑ping一下看看能否🚮ping通【tōng】,网口是否正常【fǒu zhèng cháng】连接的📉FB1口,机器人🌑否是远【fǒu shì yuǎn】程模式【chéng mó shì】。