CAN.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #pragma once
  2. #include "DLLModule.h"
  3. //#include "..\\StringExt.h"
  4. //函数调用返回状态值
  5. #define STATUS_OK 1
  6. #define STATUS_ERR1 0//操作失败
  7. #define STATUS_ERR2 -1 //设备未打开
  8. //定义全局的帧数据类型
  9. typedef struct _VCI_CAN_OBJ{
  10. UINT ID;
  11. UINT TimeStamp;
  12. BYTE TimeFlag;
  13. BYTE SendType;
  14. BYTE RemoteFlag;//是否是远程帧
  15. BYTE ExternFlag;//是否是扩展帧
  16. BYTE DataLen;
  17. BYTE Data[8];
  18. BYTE Reserved[3];
  19. BYTE IDArray[4];
  20. }VCI_CAN_OBJ,*PVCI_CAN_OBJ;
  21. //定义全局的错误数据类型
  22. typedef struct _VCI_ERR_INFO{
  23. UINT ErrCode;
  24. BYTE Passive_ErrData[3];
  25. BYTE ArLost_ErrData;
  26. } VCI_ERR_INFO,*PVCI_ERR_INFO;
  27. //定义全局的初始化数据类型
  28. typedef struct _VCI_INIT_CONFIG{
  29. DWORD AccCode;
  30. DWORD AccMask;
  31. DWORD Reserved;
  32. UCHAR Filter;
  33. UCHAR Timing0;
  34. UCHAR Timing1;
  35. UCHAR Mode;
  36. UCHAR CanRx_IER;
  37. UCHAR kCanBaud;
  38. }VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;
  39. //定义全局CAN控制器状态的数据类型
  40. typedef struct _VCI_CAN_STATUS{
  41. UCHAR ErrInterrupt;
  42. UCHAR regMode;
  43. UCHAR regStatus;
  44. UCHAR regALCapture;
  45. UCHAR regECCapture;
  46. UCHAR regEWLimit;
  47. UCHAR regRECounter;
  48. UCHAR regTECounter;
  49. DWORD Reserved;
  50. }VCI_CAN_STATUS,*PVCI_CAN_STATUS;
  51. class CCAN
  52. {
  53. public:
  54. CCAN();
  55. virtual ~CCAN();
  56. // *GetCAN();
  57. public:
  58. virtual BOOL OpenDevice(DWORD devInd) = 0;
  59. virtual void CloseDevice(DWORD devInd) = 0;
  60. virtual BOOL InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig) = 0;
  61. virtual BOOL StartCAN(DWORD devInd, DWORD CANInd) = 0;
  62. virtual BOOL ResetCAN(DWORD devInd, DWORD CANInd) = 0;
  63. virtual void ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo) = 0;
  64. virtual BOOL ClearBuffer(DWORD devInd, DWORD CANInd) = 0;
  65. virtual ULONG GetReceiveNum(DWORD devInd, DWORD CANInd) = 0;
  66. virtual ULONG Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len) = 0;
  67. virtual ULONG Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime=-1) = 0;
  68. virtual BOOL LoadDLL() = 0;
  69. protected:
  70. private:
  71. };