CS机器人30020端口使用

2025-07-02

1.  简介

● def脚本【jiǎo běn】为👩主程【chéng】序🥘脚本【jiǎo běn】🛣,一次仅⛏支持一😠个【gè】def脚本【jiǎo běn】🛣运行【yùn háng】,如果在第一个【gè】def脚本【jiǎo běn】🛣运行【yùn háng】过程【chéng】🥟中,下【xià】 发第二个【gè】def脚本【jiǎo běn】🛣,则会强🏩制停止🏊第一个【gè】运行【yùn háng】中的【de】def脚本【jiǎo běn】🛣,去执行【qù zhí háng】新收到【xīn shōu dào】的【de】def脚本【jiǎo běn】🛣。

● sec脚本可以与🛩def脚本同【jiǎo běn tóng】时运行【shí yùn háng】,不会导🍇致def脚本停止🚍,但【dàn】sec脚本不🍲支持运🗄动指令🥤,并且不【bìng qiě bú】 允许运【yǔn xǔ yùn】行耗时指令(如【rú】sleep、串口👵、socket的超时操作等),有一定【yǒu yī dìng】的限制。

● 由于【yóu yú】def脚本🏟与sec脚本的⛏定义🥖,导致目前的python运行过【yùn háng guò】程中【chéng zhōng】,无法实【wú fǎ shí】现一些动态的⏯脚本🏟插队【chā duì】➰ 运行,比如用户在自己的上位机程序【xù】♉,实时计💵算出一【suàn chū yī】🎙些运行点位脚本🏟,用户无【yòng hù wú】法在程【fǎ zài chéng】序【xù】♉运行 的过程🍀中,将一些➖实时计💵算的脚本🏟插队【chā duì】➰到当前【dào dāng qián】运行的任务当【rèn wù dāng】🧟中。存在一【cún zài yī】定的使【dìng de shǐ】✌用限制。

● 针对上🥠述需求🕋,CS控制软【kòng zhì ruǎn】件开发【jiàn kāi fā】了Interpreter Mode(解释器【jiě shì qì】模式💈)功能【gōng néng】💃,也就是30020接口🍯,用于在一定的条件下,实现用🐑户脚本的插队【de chā duì】运行【yùn háng】。

● 解释器【jiě shì qì】🐔模式的【mó shì de】使用🚼,需要更新至2.11及以上的版本【de bǎn běn】💊。

2.  操作流程

● 解释器模式脚本命令

1.  解释器功能

系统进入解释【rù jiě shì】🏁器模式【qì mó shì】后【hòu】🌃,允许编程人员在任务运行时发送并插队运【chā duì yùn】行脚本💈语句,只需要【zhī xū yào】脚本语【jiǎo běn yǔ】👫 句为有【jù wéi yǒu】效的python语句即【yǔ jù jí】可⏰,用户可🗺以将脚【yǐ jiāng jiǎo】本语【běn yǔ】👫句通过30020端口,发送到🔏控制器【kòng zhì qì】🖖,控制器【kòng zhì qì】🖖解 收之后【shōu zhī hòu】🌃,会根据当前的【dāng qián de】🏪状态🚦,对语句进行编【jìn háng biān】译运行【yì yùn háng】。发送到🔏30020端口的脚本语【jiǎo běn yǔ】👫句,会已队🗞列 的方式存储在控制软🐉件内部,并按顺⛳序执行,脚本语【jiǎo běn yǔ】👫句必须为单行语句,并以\n作为结【zuò wéi jié】🍘束符, 如📿 set_tcp([0,0,0,0,0,0])\n

脚本语句参考CS脚本手册

2.  interpreter_mode(clearQueueOnEnter = True, clearOnEnd = True)

clearQueueOnEnter:为💱 True 时【shí】,会在进🎾入解释📆器模式时【shí】,清除所有进入之前收【zhī qián shōu】到的脚 本【běn】👸 队列。

clearOnEnd:为【wéi】 True 时🏨,会在退【huì zài tuì】出解释♉器模式【qì mó shì】时🏨,清除所🧟有还未执行的【zhí háng de】脚本队列中的脚 本内容。

该函数用于是任务进入解释【rù jiě shì】🚟器模式🕖,其为阻【qí wéi zǔ】✈塞函数【sāi hán shù】

30020端口的🦗解释器模式【mó shì】,是通过🕸30001端口发【duān kǒu fā】送解释器脚本【qì jiǎo běn】🆎命令触发。

30001端口详情🏡,请参考💂CS用户手【yòng hù shǒu】册【cè】。

例【lì】🍲:30001 端口调用【yòng】,需使用【yòng】 def 脚本🐚,采用【yòng】💼 python 格式【gé shì】🎆,要注意格式【gé shì】🎆(缩进,大小写【dà xiǎo xiě】 等)

def a():

interpreter_mode(clearQueueOnEnter = True, clearOnEnd = True)

end

3.  end_interpreter()

该函数【gāi hán shù】📨用于关闭任务【bì rèn wù】🚔的解释器⛳模式,此时阻🍻塞的 interpreter_mode 函数会🏂退出【tuì chū】,该函数【gāi hán shù】📨可 以在 30001 端口调【duān kǒu diào】用(sec 和 def 脚本效【jiǎo běn xiào】果相同),程序立即停止【jí tíng zhǐ】🆓并退出【bìng tuì chū】解释器⛳模式。

也可以【yě kě yǐ】🥌在 30020 中使用,发送到【fā sòng dào】🛷解释器【jiě shì qì】模式👱中,在脚本❓队列中等待调【děng dài diào】用,队列运行到该【háng dào gāi】命 令后退【lìng hòu tuì】🦖出解释器【jiě shì qì】模式👱。

4.  clear_interpreter()

该函数🚰用🤛于清除解释器【jiě shì qì】脚【jiǎo】本队列😖,可以在【kě yǐ zài】 30001 端口使用🤛(sec 脚【jiǎo】本),不建议🐷用🤛 def 脚【jiǎo】 本,def 脚本执【jiǎo běn zhí】🆙行程序会立即【huì lì jí】停止并【tíng zhǐ bìng】退出解释器【jiě shì qì】模式【shì】🔤。

也可以🤴在😯 30020 中使用【zhōng shǐ yòng】🔽,发送到【fā sòng dào】解释器模式中, 在脚本🎌队列中【duì liè zhōng】等待调用【yòng】🔽,调用【yòng】🔽后【hòu】,会将🏷 该函数执行前接收【jiē shōu】到的脚本队列清除🔋,在😯其之后【hòu】接收【jiē shōu】🌵到的脚本则不【běn zé bú】受影响【shòu yǐng xiǎng】。

● 解释器模式回复

1.  解释器模式接😖收到可执行的👸脚本语🔵句后【jù hòu】,将会通过返回以下格式信息【shì xìn xī】,告知客【gào zhī kè】户端【hù duān】📬。

ack::

id为接受的语句【de yǔ jù】被分配【bèi fèn pèi】的唯一【de wéi yī】id,后续的【hòu xù de】🕣一些状态命令字返回🥥值,会以该🕥id信息返🤝回🥥。

2.  如果任【rú guǒ rèn】🤚务未处【wù wèi chù】于运行【yú yùn háng】状态,或脚本【huò jiǎo běn】语句发🛵生编译错误或👬脚本队列达到上限等等各种异常原【yì cháng yuán】📫因导致🤪接受的脚本没有被正【yǒu bèi zhèng】常的压【cháng de yā】入解释🕗器队列,解释器🏈会返回命令抛弃信息♊以及抛【yǐ jí pāo】弃原因,格式如下【xià】🔫。

discard::

3.  编译错误:

触发原💫因:一般为【yī bān wéi】脚本格式错误【shì cuò wù】🔪,需要检查确保下发的【xià fā de】脚本格式是否【shì shì fǒu】正常的🌎python格式的♌ 代码段

返回报【fǎn huí bào】文信息🚳:discard: Compile error::

4.  任务状态错误:

触发原因:当前任务未处于运行状态

返回报文信息【wén xìn xī】👊:discard: Task is in an invalid state:

5.  脚本队列的长度超限:

触发原【chù fā yuán】因:当前脚本队列Ⓜ长度超过最大🎙值【zhí】(目前最【mù qián zuì】🌊大值【zhí】为2000)

返回报【fǎn huí bào】💨文信息:discard: Too many interpreted messages:

6.  执行解【zhí háng jiě】释器前🐖队列清除【chú】🚰:

触发原【chù fā yuán】因🧝:由于clearQueueOnEnter参数设👠置为True,再打开📇解释器【jiě shì qì】模式之前发送🎌到解释【dào jiě shì】器队列的脚本【de jiǎo běn】💼,会在打开时【kāi shí】(即调用interpreter_mode脚本【jiǎo běn】)进行🔺discard。

返回报【fǎn huí bào】文信息🍵:discard: Cleaned up before interpretation:

7.  执行解【zhí háng jiě】📲释器后🎅队列清除【chú】:

触发原【chù fā yuán】🌈因:由于clearOnEnd参数设【cān shù shè】置为True,再结束🚹解释器【jiě shì qì】模式后,解释器【jiě shì qì】队列中🐸已有的【yǐ yǒu de】脚本会【jiǎo běn huì】🥏在结束时【shí】(即调用💵end_interpreter脚本)进行🥤discard。

返回报文信息【wén xìn xī】☔:discard: Cleaned up after end:

8.  执行队列清除操作:

触发原🍹因【yīn】:由于执行clear_interpreter脚本👑discard掉的脚【diào de jiǎo】本👑队列中的脚【de jiǎo】💡本。

返回报【fǎn huí bào】😴文信息:discard: Cleaned up:

● 解释器模式关键字命令

解释器模式的关键字命令,为非【wéi fēi】😞python脚本函数【shù】🛴,此类命令会在【lìng huì zài】💕接收到【jiē shōu dào】💐后【hòu】,马上被😇执行,不会进🖕入脚本【rù jiǎo běn】队列等待执行。

skipbuffer该命令可以让脚本队【jiǎo běn duì】列跳过🌶已经接收到【shōu dào】🕖,但还未执行的😲所有脚【suǒ yǒu jiǎo】本命令(正在执行的😲命令不【mìng lìng bú】会结束,会继续【huì jì xù】📟正常运行到命🛏令结束【lìng jié shù】)。

● 解释器模式状态命令

1.  statelastexecuted 命令【mìng lìng】🚽

该命令【gāi mìng lìng】🐗会返回🕚最后执【zuì hòu zhí】行🙃过(或正在执行🙃)的命令id,返回格式如下【shì rú xià】:

state:: statelastexecuted

2.  statelastinterpreted 命令【mìng lìng】🛥

该命令【lìng】会返回🥂最新解收的已📛经解析完成的【wán chéng de】🌚脚本命令【lìng】id,返回格【fǎn huí gé】式如下:

state:: statelastinterpreted

3.  statelastcleared 命令【mìng lìng】🤸

该命令会返回🔳最后的【zuì hòu de】💋被清除(调用clear_interpreter或解释【huò jiě shì】器模式退出【tuì chū】)的命令🤟id,返回格式如下【shì rú xià】🥓:

state:: statelastcleared

4.  stateunexecuted 命令【mìng lìng】🆕

该命令💪会返回当前队【dāng qián duì】列中还未执行的脚本命令(已♌skipbuffer的命令♎不会计数在内【shù zài nèi】),返回格【fǎn huí gé】式如下【shì rú xià】😵:

state: <#unexecuted>: stateunexecuted

5.  state 命令

该命令会返回🤠当前是否处于【fǒu chù yú】🐪解释器【jiě shì qì】模式,返回格🎑式如下【shì rú xià】:

state: 0: running: state

state: 0: stopped: state

● 示例

1.将机器人打到远程模式


2.  用通讯助手创【zhù shǒu chuàng】建一个 30001端口的🐦客户端📀,连接机😆器人并发送脚【fā sòng jiǎo】本使机器人进🐌入解释【rù jiě shì】器模式【qì mó shì】 


3.机器人【jī qì rén】进入解🕶释器模【shì qì mó】式,示教器显示运🗒行中【háng zhōng】,如下图🖖


4.  用通讯【yòng tōng xùn】🦓助手创👬建一个30020端口的【duān kǒu de】客户端

5.通过 30020 端口发送脚本【sòng jiǎo běn】🏿使得机🏆器人按先后顺序依次执行发【zhí háng fā】送的脚【sòng de jiǎo】🏺本🏿


6.  发送成功后,收到来🔕自机器【zì jī qì】人的反【rén de fǎn】馈🎖

7.参考【cān kǎo】⏺CS脚本手【jiǎo běn shǒu】册【cè】🍀,依次发送指令给机器☔人,机器人将按顺🚓序依次执行【zhí háng】


3.  常见问题解答

1.  解释器【jiě shì qì】模式中💇创建的🍃线程【xiàn chéng】💪,不会再解释器【jiě shì qì】模式推出后【chū hòu】,自动关闭【bì】,使用时【shǐ yòng shí】📩,请自主管理好线程【xiàn chéng】💪状态🔠。

2.  运行【háng】耗时脚本【shí jiǎo běn】(如移动🕝指令🛎),会完整🕝的运动结束后【jié shù hòu】,才可以🔨自动退出😎,中途即使调用了【le】end_interpreter()命令【mìng lìng】,也不会🚷强制停止耗时【zhǐ hào shí】脚本运【jiǎo běn yùn】行【háng】,除非使🎺用30001以def函数的形式发送【sòng】🚗。

3.  解释器🥤脚本🚤队列数量上限目前为2000条,脚本🚤队列数量超过该🍒数量时【shù liàng shí】🕤,再次添【zài cì tiān】加新的解释器🥤脚本🚤,会返回【huì fǎn huí】🍖discard信息,并抛弃【bìng pāo qì】💲新添加【xīn tiān jiā】的脚本【de jiǎo běn】🚤


download-669.svg comicon14.svg

电话咨询

download-397.svg comicon15.svg

免费试用

Vector.svg Frame.svg

微信小程序

img1.jpg

微信小程序

准备好突破增长瓶颈,开启智能制造了吗?
了解我们的机器人如何帮助您的业务增长
欢迎下载漫蛙机器人资料

我已阅读并同意漫蛙《隐私政策》《法律声明》

我已知【wǒ yǐ zhī】晓并同👗意漫蛙👖通过电【tōng guò diàn】子邮件【zǐ yóu jiàn】🐦发送相关资料

提交