zoukankan      html  css  js  c++  java
  • Scripted device

    Adding Scripts to the Scripting Engine

    1. Create an entry in the database.dat • Set the responsibleDHS to ’self’. • Set the externalName parameter to the name of your new device file without the .tcl extension.

    Alternatively you can set the externalName to standardVirtualDevice. This would make the device a motor that simply holds a position. If you select the standardVirtualDevice, then this is the only step that you need to perform, and you can restart DCSS.

    2. Create the new device file in the dcss devices directory: dcss/scripts/devices The file name should be the name of the new device (as listed in the database.dat file) with a .tcl extension.

    3. Within the new scripted device file define 5 TCL procedures, where deviceName is replaced by the name of the new scripted device.

    • proc deviceName initialize {} This procedure is executed when DCSS starts up. This procedure may be empty, or it may be used to initialize variables associated with the scripted device. This is also the correct place to call the set_children, set_siblings, and set_observers functions as discussed in Section 6.2.

    • proc deviceName set { newPosition} This is the procedure that is called when a motor configuration is initiated by the set command. The value being applied to the scripted device motor is passed in the newPosition. This procedure does not necessarily have to accept the new position, but can use the value to set other motors.

    • proc deviceName move {newPosition} This is the procedure that is executed when an attempt is made to move the scripted device. The script is free to do whatever it wants, including moving other motors or calling scripted operations. If the script moves other motors, it is likely that these motors should be listed as children using the set_children command. However, this is not a requirement to moving other motors.

    • proc deviceName update This procedure is called whenever the scripting engine has reason to believe that the scripted device’s current position is out of date. This happens under the following conditions: – The scripting engine receives an update an a child motor of the scripted device. – The scripting engine receives an move complete on a child motor of the scripted device. – The scripting engine receives a configuration on a child motor of the scripted device.

    • proc deviceName calculate {[child1 [child2 [child3]]]} This procedure is called by the scripting engine when determining if a child motor is allowed to move to a certain position without violating the parent’s software limits. The arguments of this function are listed in the order that this function listed its children in the set_children command.

    This function must accept theoretical children positions and recalculate a new position. It is common for the deviceName update command to use this procedure to update its current position using current children motor positions.

    4. Restart DCSS.

  • 相关阅读:
    设计模式-工厂设计模式
    Spring Batch BATCH_JOB_SEQ 出现死锁问题
    windows 安装 jenkins 自动化构建部署至linux服务器上
    Git安装
    MAVEN(一) 安装和环境变量配置
    Jenkins 安装
    jenkins操作
    linux firewalld 防火墙操作命令
    【Azure Redis 缓存】Azure Redis读写比较慢/卡的问题排查
    【Azure 服务总线】向服务总线发送消息时,返回错误代码Error code : 50009
  • 原文地址:https://www.cnblogs.com/greencolor/p/2301421.html
Copyright © 2011-2022 走看看