欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

canOpen学习十二之canOpen回调函数的定义与使用

程序员文章站 2022-07-14 09:05:20
...

一、回调函数的定义
首先再用字典编辑器的时候就要勾选有回访:
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选其一。
参考代码