CS机器人预约功能实现

例如希望,通过do0预约程序1,do1预约程序2,包括机器人在执行程序1的时候,也可以预约程序2(即做完程序再做程序2),如何实现。

CS机器人默认提供的事件函数,非上升沿或者下降沿触发。对于预约程序,通常需要边沿触发信号,并将该触发记录到某变量。在程序调用时,再将该变量清零。

机器人程序树如下图,对应线程Event10.script函数实现见下文:

程序树通过全局变量stn1和stn2判断,

线程中一直监控do0,若发生了上升沿,则将stn1置True。主循环判断stn1==True,执行移动到路点_1

线程中一直监控do1,若发生了上升沿,则将stn2置True。主循环判断stn2==True,执行移动到路点_2


def trap1():
  global stn1
  stn1 = True
  # 将全局变量stn1置True

def trap2():
  global stn2
  stn2 = True
  # 将全局变量stn2置True

pre_sig = get_standard_digital_out(0)
pre_sig2 = get_standard_digital_out(1)

while True:
  sig = get_standard_digital_out(0)
  # 获取当前do0信号的值
  sig2 = get_standard_digital_out(1)
  # 获取当前do1信号的值

  if pre_sig==False and sig==True:
    # 判断do0信号上升沿时,进入trap1
    trap1()
  if pre_sig2==False and sig2==True:
    trap2()
    # 判断do1信号上升沿时,进入trap2
  
  pre_sig= sig
  # 将当前do0的值作为下一循环的do0的上一次值
  pre_sig2 = sig2
  # 将当前do1的值作为下一循环的do1的上一次值
  sleep(0.1)
点击显示全文
赞同0
发表评论
分享

手机扫码分享
0
452
收藏
举报
收起
登录
  • 密码登录
  • 验证码登录
还没有账号,立即注册
还没有账号,立即注册
注册
已有账号,立即登录
选择发帖板块
举报
请选择举报理由
举报
举报说明