onPreProcess和onPostProcess
更多相关信息,参见机器人“软件”说明书中的 同步 一节。
注意: |
这些回调很危险,请小心使用,并且只有当您熟悉实时、多线程和精确定时的时候才使用。 |
---|
DCM提供一个很简单的方法来实现实时线程同步。
可以定义一个由DCM调用的回调函数,在DCM等待之后(PreProcess,预处理)或将要回到等待之前(PostProcess,后处理)进行调用。
“onPreProcess”在开始计算发送至胸部电路板(USB)的命令之前被调用。 在这一级发送命令,命令的延迟时间最短。
“onPostProcess”在所有ALMemory里的值更新之后被调用。这样,得到的就是所有传感器的最新值。
这两个回调不能发送或接收信息。需要通过DCM的API来发送命令,并通过 ALMemory来获得传感器的值。
实时与定时方面的考虑:
被DCM的线程调用也就意味着您使用的函数现在是实时的。为了保证实时的效率,避免DCM循环上的延迟,必须做到以下几点:
- 避免任何形式的内存分配
- 避免任何文件访问以及printf,cout……
- 避免所有可能会用时很长的系统调用
- 在很短的一段时间(最多几毫秒)从回调返回。
- 您使用的函数必须在每个循环保持基本固定的定时时间。 如果您的回调先持续1ms,然后是10ms,然后又是1ms,以此类推,那么就会使关节控制回路的结果不佳。
注释: |
在SDK中的文件夹“fastgetsetexample”里,您可以找到一个回调范例。 |
---|