一、回調函數的定義
首先再用字典編輯器的時候就要勾選有回訪:
然後定義自己的回調函數:回調函數的函數指針爲
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選其一。
參考代碼