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選其一。
參考代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章