ControlCAN.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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_USBCAN2A 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. #define VCI_PC104CAN 11
  16. #define VCI_CANETUDP 12
  17. #define VCI_CANETE 12
  18. #define VCI_DNP9810 13
  19. #define VCI_PCI9840 14
  20. #define VCI_PC104CAN2 15
  21. #define VCI_PCI9820I 16
  22. #define VCI_CANETTCP 17
  23. #define VCI_PEC9920 18
  24. #define VCI_PCI5010U 19
  25. #define VCI_USBCAN_E_U 20
  26. #define VCI_USBCAN_2E_U 21
  27. #define VCI_PCI5020U 22
  28. #define VCI_EG2OT_CAN 23
  29. //CAN错误码
  30. #define ERR_CAN_OVERFLOW 0x0001 //CAN控制器内部FIFO溢出
  31. #define ERR_CAN_ERRALARM 0x0002 //CAN控制器错误报警
  32. #define ERR_CAN_PASSIVE 0x0004 //CAN控制器消极错误
  33. #define ERR_CAN_LOSE 0x0008 //CAN控制器仲裁丢失
  34. #define ERR_CAN_BUSERR 0x0010 //CAN控制器总线错误
  35. #define ERR_CAN_BUSOFF 0x0020 //总线关闭错误
  36. //通用错误码
  37. #define ERR_DEVICEOPENED 0x0100 //设备已经打开
  38. #define ERR_DEVICEOPEN 0x0200 //打开设备错误
  39. #define ERR_DEVICENOTOPEN 0x0400 //设备没有打开
  40. #define ERR_BUFFEROVERFLOW 0x0800 //缓冲区溢出
  41. #define ERR_DEVICENOTEXIST 0x1000 //此设备不存在
  42. #define ERR_LOADKERNELDLL 0x2000 //装载动态库失败
  43. #define ERR_CMDFAILED 0x4000 //执行命令失败错误码
  44. #define ERR_BUFFERCREATE 0x8000 //内存不足
  45. //函数调用返回状态值
  46. #define STATUS_OK 1
  47. #define STATUS_ERR 0
  48. #define CMD_DESIP 0
  49. #define CMD_DESPORT 1
  50. #define CMD_CHGDESIPANDPORT 2
  51. #define CMD_SRCPORT 2
  52. #define CMD_TCP_TYPE 4 //tcp 工作方式,服务器:1 或是客户端:0
  53. #define TCP_CLIENT 0
  54. #define TCP_SERVER 1
  55. //服务器方式下有效
  56. #define CMD_CLIENT_COUNT 5 //连接上的客户端计数
  57. #define CMD_CLIENTS 6 //连接上的客户端
  58. #define CMD_DISCONN_CLINET 7 //断开一个连接
  59. typedef struct tagRemoteClient{
  60. int iIndex;
  61. DWORD port;
  62. HANDLE hClient;
  63. char szip[32];
  64. }REMOTE_CLIENT;
  65. //1.ZLGCAN系列接口卡信息的数据类型。
  66. typedef struct _VCI_BOARD_INFO{
  67. USHORT hw_Version;
  68. USHORT fw_Version;
  69. USHORT dr_Version;
  70. USHORT in_Version;
  71. USHORT irq_Num;
  72. BYTE can_Num;
  73. CHAR str_Serial_Num[20];
  74. CHAR str_hw_Type[40];
  75. USHORT Reserved[4];
  76. } VCI_BOARD_INFO,*PVCI_BOARD_INFO;
  77. //2.定义CAN信息帧的数据类型。
  78. typedef struct _VCI_CAN_OBJ{
  79. UINT ID;
  80. UINT TimeStamp;
  81. BYTE TimeFlag;
  82. BYTE SendType;
  83. BYTE RemoteFlag;//是否是远程帧
  84. BYTE ExternFlag;//是否是扩展帧
  85. BYTE DataLen;
  86. BYTE Data[8];
  87. BYTE Reserved[3];
  88. }VCI_CAN_OBJ,*PVCI_CAN_OBJ;
  89. //3.定义CAN控制器状态的数据类型。
  90. typedef struct _VCI_CAN_STATUS{
  91. UCHAR ErrInterrupt;
  92. UCHAR regMode;
  93. UCHAR regStatus;
  94. UCHAR regALCapture;
  95. UCHAR regECCapture;
  96. UCHAR regEWLimit;
  97. UCHAR regRECounter;
  98. UCHAR regTECounter;
  99. DWORD Reserved;
  100. }VCI_CAN_STATUS,*PVCI_CAN_STATUS;
  101. //4.定义错误信息的数据类型。
  102. typedef struct _VCI_ERR_INFO{
  103. UINT ErrCode;
  104. BYTE Passive_ErrData[3];
  105. BYTE ArLost_ErrData;
  106. } VCI_ERR_INFO,*PVCI_ERR_INFO;
  107. //5.定义初始化CAN的数据类型
  108. typedef struct _VCI_INIT_CONFIG{
  109. DWORD AccCode;
  110. DWORD AccMask;
  111. DWORD Reserved;
  112. UCHAR Filter;
  113. UCHAR Timing0;
  114. UCHAR Timing1;
  115. UCHAR Mode;
  116. }VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;
  117. typedef struct _tagChgDesIPAndPort
  118. {
  119. char szpwd[10];
  120. char szdesip[20];
  121. int desport;
  122. BYTE blistenonly;
  123. }CHGDESIPANDPORT;
  124. ///////// new add struct for filter /////////
  125. typedef struct _VCI_FILTER_RECORD{
  126. DWORD ExtFrame; //是否为扩展帧
  127. DWORD Start;
  128. DWORD End;
  129. }VCI_FILTER_RECORD,*PVCI_FILTER_RECORD;
  130. #define EXTERNC extern "C"
  131. EXTERNC DWORD __stdcall VCI_OpenDevice(DWORD DeviceType,DWORD DeviceInd,DWORD Reserved);
  132. EXTERNC DWORD __stdcall VCI_CloseDevice(DWORD DeviceType,DWORD DeviceInd);
  133. EXTERNC DWORD __stdcall VCI_InitCAN(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig);
  134. EXTERNC DWORD __stdcall VCI_ReadBoardInfo(DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO pInfo);
  135. EXTERNC DWORD __stdcall VCI_ReadErrInfo(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_ERR_INFO pErrInfo);
  136. EXTERNC DWORD __stdcall VCI_ReadCANStatus(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_STATUS pCANStatus);
  137. EXTERNC DWORD __stdcall VCI_GetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
  138. EXTERNC DWORD __stdcall VCI_SetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
  139. EXTERNC ULONG __stdcall VCI_GetReceiveNum(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  140. EXTERNC DWORD __stdcall VCI_ClearBuffer(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  141. EXTERNC DWORD __stdcall VCI_StartCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  142. EXTERNC DWORD __stdcall VCI_ResetCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  143. EXTERNC ULONG __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,ULONG Len);
  144. EXTERNC ULONG __stdcall VCI_Receive(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pReceive,ULONG Len,INT WaitTime=-1);
  145. #endif