typedef void (*DeviceDataHandleFunc)(LPCSTR lpsDeviceId, LPCSTR lpsParentId, teDeviceType eDeviceType, LPCSTR lpsStatus);
typedef void (*RS232DataHandleFunc)(LPCSTR lpsDeviceId, BYTE* pData, UINT8 u8Len);
VERSAZIGBEEAPIWIN_API void InitAPI();
VERSAZIGBEEAPIWIN_API void FreeAPI();
VERSAZIGBEEAPIWIN_API void EnableLog(BOOL bEnable);
VERSAZIGBEEAPIWIN_API void RegisterDeviceDataHandler(DeviceDataHandleFunc Func);
VERSAZIGBEEAPIWIN_API void RegisterRS232DataHandler(RS232DataHandleFunc Func);
VERSAZIGBEEAPIWIN_API BOOL OpenCom(LPCSTR lpsCom, DWORD dwBaudRate);
VERSAZIGBEEAPIWIN_API void CloseCom();
VERSAZIGBEEAPIWIN_API void SetTxPower(LPCSTR lpsDeviceId, teTxPowerLevel eTxPowerLevel);
VERSAZIGBEEAPIWIN_API void SetParentID(LPCSTR lpsDeviceId, LPCSTR lpsParentId);
VERSAZIGBEEAPIWIN_API void SetSleepTime(LPCSTR lpsDeviceId, DWORD dwSeconds);
VERSAZIGBEEAPIWIN_API BSTR ScanAndGetCoordinatorMacId();
VERSAZIGBEEAPIWIN_API void SetWorkTime(LPCSTR lpsDeviceId, DWORD dwWorkTime);
VERSAZIGBEEAPIWIN_API void SetRS232Data(LPCSTR lpsDeviceId, BYTE* pData, UINT nSize);
VERSAZIGBEEAPIWIN_API void SetUartBaudRate(LPCSTR lpsDeviceId, teUartBaudRate eUartBaudRate);
这些都是我DLL里面的函数原型,在用DLL构造子函数VI时,我遇到以下问题 :
DLL中的RegisterDeviceDataHandler(DeviceDataHandleFunc Func);函数中的函数指针应该怎样定义在VI参数原型里面呢,这个函数的功能是注册一个回调函数,然后在底层有数据上来的时候自动调用 这个函数 ,比如我定义一个 RegisterDeviceDataHandler(DeviceDataHandleFunc Func1);函数 ,然后就会在底层自动调用Func1(*RS232DataHandleFunc)(LPCSTR lpsDeviceId, BYTE* pData, UINT8 u8Len);这个函数。如上功能有没有很好的实现方法呢 。