canOpen学习十二之canOpen回调函数的定义与使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canOpen学习十二之canOpen回调函数的定义与使用相关的知识,希望对你有一定的参考价值。
一、回调函数的定义
首先再用字典编辑器的时候就要勾选有回访:
然后定义自己的回调函数:回调函数的函数指针为
typedef UNS32 (*ODCallback_t)(CO_Data* d, const indextable *, UNS8 bSubindex);
定义自己的回调函数:
UNS32 index2000_callback(CO_Data* d, const indextable *table, UNS8 bSubindex)
printf("value=%x\\r\\n",*(uint8_t*)table->pSubindex[bSubindex].pObject);
return OD_SUCCESSFUL;
二、回调函数的赋值
要让我们定义的回调函数执行就必须吧回调函数赋值给我们的系统,把回调函数赋值给系统有两种方法:
第一种是直接在字典中赋值:
/* index 0x2000 : Mapped variable value */
subindex slave_objdict_Index2000[] =
RW, uint8, sizeof (UNS8), (void*)&value, index2000_callback
;
第二种是调用UNS32 RegisterSetODentryCallBack(CO_Data* d, UNS16 wIndex, UNS8 bSubindex, ODCallback_t Callback)
这个函数:
RegisterSetODentryCallBack(&slave_objdict_Data,0x1017, 0, index2000_callback);
这两种2选其一。
参考代码
以上是关于canOpen学习十二之canOpen回调函数的定义与使用的主要内容,如果未能解决你的问题,请参考以下文章
canOpen学习九之canOpen应用实现主机自动发送同步帧