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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了canOpen学习十二之canOpen回调函数的定义与使用相关的知识,希望对你有一定的参考价值。


一、回调函数的定义

首先再用字典编辑器的时候就要勾选有回访:

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应用实现主机自动发送同步帧

CANopen的相关学习

canOpen学习八之canOpen应用实现主从机PDO定时同步数据

电脑可以直接连接canopen设备吗

canopen总线是啥?

CAN与CANOpen