12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #ifndef _PC_H
- #define _PC_H
- #include "CAN.h"
- //定义初始化CAN的数据类型
- typedef struct _VCI_INIT_CONFIG_PC
- {
- DWORD AccCode; //对应SJA1000中的四个寄存器ACR0,ACR1,ACR2,ACR3
- DWORD AccMask; //对应SJA1000中的四个寄存器AMR0,AMR1,AMR2,AMR3
- DWORD Reserved;
- UCHAR Filter;
- UCHAR Timing0; //定时器0
- UCHAR Timing1; //定时器1
- UCHAR Mode; //模式
- }VCI_INIT_CONFIG_PC,*P_VCI_INIT_CONFIG_PC;;
- //定义CAN信息帧的数据类型
- typedef struct _VCI_CAN_OBJ_PC
- {
- DWORD ID;
- UCHAR SendType; //0:正常发送,1:自发自收
- UCHAR ExternFlag; //0:标准帧, 1:扩展帧
- UCHAR RemoteFlag; //0:数据帧, 1:远程帧
- UCHAR DataLen;
- UCHAR Data[8];
- }VCI_CAN_OBJ_PC,*P_VCI_CAN_OBJ_PC;
- class CPCWrapper : public CDLLModule
- {
- public:
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_OpenDevice, (DWORD DeviceInd))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_CloseDevice, (DWORD DeviceInd))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_InitCan, (DWORD DeviceInd, DWORD CANInd, P_VCI_INIT_CONFIG_PC pInitConfig))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ResetCan, (DWORD DeviceInd,DWORD CANInd))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_GetReceiveNum, (DWORD DeviceInd,DWORD CANInd))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ClearBuffer, (DWORD DeviceInd,DWORD CANInd))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_Transmit, (DWORD DeviceInd,DWORD CANInd,P_VCI_CAN_OBJ_PC pSend))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_Receive, (DWORD DeviceInd,DWORD CANInd,P_VCI_CAN_OBJ_PC pReceive,ULONG Len,INT WaitTime))
- DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ReadDevSn, (DWORD DevIndex, PCHAR DevSn))
- BEGIN_DLL_INIT()
- INIT_DLL_FUNCTION_3(VCI_OpenDevice)
- INIT_DLL_FUNCTION_3(VCI_CloseDevice)
- INIT_DLL_FUNCTION_3(VCI_InitCan)
- INIT_DLL_FUNCTION_3(VCI_ResetCan)
- INIT_DLL_FUNCTION_3(VCI_GetReceiveNum)
- INIT_DLL_FUNCTION_3(VCI_ClearBuffer)
- INIT_DLL_FUNCTION_3(VCI_Transmit)
- INIT_DLL_FUNCTION_3(VCI_Receive)
- INIT_DLL_FUNCTION_3(VCI_ReadDevSn)
- END_DLL_INIT()
- bool Init(LPCTSTR szPath, UINT nCnt, ...){return false;}// 具体化
- };
- class CPC : public CCAN
- {
- public:
- CPC();
- virtual ~CPC();
- BOOL OpenDevice(DWORD devInd);
- void CloseDevice(DWORD devInd);
- BOOL InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig);
- BOOL StartCAN(DWORD devInd, DWORD CANInd);
- BOOL ResetCAN(DWORD devInd, DWORD CANInd);
- void ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo);
- BOOL ClearBuffer(DWORD devInd, DWORD CANInd);
- ULONG GetReceiveNum(DWORD devInd, DWORD CANInd);
- ULONG Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len);
- ULONG Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime=1);
- BOOL LoadDLL();
- protected:
- VCI_INIT_CONFIG_PC init_config;
- DWORD m_dwDevInd;
- DWORD m_dwCANInd;
- CPCWrapper m_wrapper;
- };
- #endif
|