controlcan.h 4.0 KB

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