canOpen学习十二之canOpen回调函数的定义与使用
程序员文章站
2022-07-14 09:05:20
...
一、回调函数的定义
首先再用字典编辑器的时候就要勾选有回访:
然后定义自己的回调函数:回调函数的函数指针为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选其一。
参考代码