controlcan.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #ifndef CONTROLCAN_H
  2. #define CONTROLCAN_H
  3. //接口卡类型定义
  4. #define VCI_PCI5121 1
  5. #define VCI_PCI9810 2
  6. #define VCI_USBCAN1 3
  7. #define VCI_USBCAN2 4
  8. #define VCI_PCI9820 5
  9. #define VCI_CAN232 6
  10. #define VCI_PCI5110 7
  11. #define VCI_CANLite 8
  12. #define VCI_ISA9620 9
  13. #define VCI_ISA5420 10
  14. //CAN错误码
  15. #define ERR_CAN_OVERFLOW 0x0001 //CAN控制器内部FIFO溢出
  16. #define ERR_CAN_ERRALARM 0x0002 //CAN控制器错误报警
  17. #define ERR_CAN_PASSIVE 0x0004 //CAN控制器消极错误
  18. #define ERR_CAN_LOSE 0x0008 //CAN控制器仲裁丢失
  19. #define ERR_CAN_BUSERR 0x0010 //CAN控制器总线错误
  20. //通用错误码
  21. #define ERR_DEVICEOPENED 0x0100 //设备已经打开
  22. #define ERR_DEVICEOPEN 0x0200 //打开设备错误
  23. #define ERR_DEVICENOTOPEN 0x0400 //设备没有打开
  24. #define ERR_BUFFEROVERFLOW 0x0800 //缓冲区溢出
  25. #define ERR_DEVICENOTEXIST 0x1000 //此设备不存在
  26. #define ERR_LOADKERNELDLL 0x2000 //装载动态库失败
  27. #define ERR_CMDFAILED 0x4000 //执行命令失败错误码
  28. #define ERR_BUFFERCREATE 0x8000 //内存不足
  29. //函数调用返回状态值
  30. #define STATUS_OK 1
  31. #define STATUS_ERR 0
  32. #define USHORT unsigned short int
  33. #define BYTE unsigned char
  34. #define CHAR char
  35. #define UCHAR unsigned char
  36. #define UINT unsigned int
  37. #define DWORD unsigned int
  38. #define PVOID void*
  39. #define ULONG unsigned int
  40. #define INT int
  41. #define UINT32 UINT
  42. #define LPVOID void*
  43. #define BOOL BYTE
  44. #define TRUE 1
  45. #define FALSE 0
  46. //1.ZLGCAN系列接口卡信息的数据类型。
  47. typedef struct _VCI_BOARD_INFO{
  48. USHORT hw_Version;
  49. USHORT fw_Version;
  50. USHORT dr_Version;
  51. USHORT in_Version;
  52. USHORT irq_Num;
  53. BYTE can_Num;
  54. CHAR str_Serial_Num[20];
  55. CHAR str_hw_Type[40];
  56. USHORT Reserved[4];
  57. } VCI_BOARD_INFO,*PVCI_BOARD_INFO;
  58. //2.定义CAN信息帧的数据类型。
  59. typedef struct _VCI_CAN_OBJ{
  60. UINT ID;
  61. UINT TimeStamp;
  62. BYTE TimeFlag;
  63. BYTE SendType;
  64. BYTE RemoteFlag;//是否是远程帧
  65. BYTE ExternFlag;//是否是扩展帧
  66. BYTE DataLen;
  67. BYTE Data[8];
  68. BYTE Reserved[3];
  69. }VCI_CAN_OBJ,*PVCI_CAN_OBJ;
  70. //3.定义CAN控制器状态的数据类型。
  71. typedef struct _VCI_CAN_STATUS{
  72. UCHAR ErrInterrupt;
  73. UCHAR regMode;
  74. UCHAR regStatus;
  75. UCHAR regALCapture;
  76. UCHAR regECCapture;
  77. UCHAR regEWLimit;
  78. UCHAR regRECounter;
  79. UCHAR regTECounter;
  80. DWORD Reserved;
  81. }VCI_CAN_STATUS,*PVCI_CAN_STATUS;
  82. //4.定义错误信息的数据类型。
  83. typedef struct _ERR_INFO{
  84. UINT ErrCode;
  85. BYTE Passive_ErrData[3];
  86. BYTE ArLost_ErrData;
  87. } VCI_ERR_INFO,*PVCI_ERR_INFO;
  88. //5.定义初始化CAN的数据类型
  89. typedef struct _INIT_CONFIG{
  90. DWORD AccCode;
  91. DWORD AccMask;
  92. DWORD Reserved;
  93. UCHAR Filter;
  94. UCHAR Timing0;
  95. UCHAR Timing1;
  96. UCHAR Mode;
  97. }VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;
  98. #ifdef __cplusplus
  99. #define EXTERN_C extern "C"
  100. #else
  101. #define EXTERN_C
  102. #endif
  103. EXTERN_C DWORD VCI_OpenDevice(DWORD DeviceType,DWORD DeviceInd,DWORD Reserved);
  104. EXTERN_C DWORD VCI_CloseDevice(DWORD DeviceType,DWORD DeviceInd);
  105. EXTERN_C DWORD VCI_InitCAN(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig);
  106. EXTERN_C DWORD VCI_ReadBoardInfo(DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO pInfo);
  107. EXTERN_C DWORD VCI_ReadErrInfo(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_ERR_INFO pErrInfo);
  108. EXTERN_C DWORD VCI_ReadCANStatus(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_STATUS pCANStatus);
  109. EXTERN_C DWORD VCI_GetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
  110. EXTERN_C DWORD VCI_SetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
  111. EXTERN_C ULONG VCI_GetReceiveNum(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  112. EXTERN_C DWORD VCI_ClearBuffer(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  113. EXTERN_C DWORD VCI_StartCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  114. EXTERN_C DWORD VCI_ResetCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  115. EXTERN_C ULONG VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,UINT Len);
  116. EXTERN_C ULONG VCI_Receive(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pReceive,UINT Len,INT WaitTime);
  117. #endif