创新can调试器Linux版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.4 KiB

4 years ago
  1. #ifndef CONTROLCAN_H
  2. #define CONTROLCAN_H
  3. //UTF-8
  4. //文件版本:v2.01 20190410
  5. //#include <cvidef.h> //使用CVI平台开发,请使用该语句。
  6. //接口卡类型定义
  7. #define VCI_USBCAN1 3
  8. #define VCI_USBCAN2 4
  9. #define VCI_USBCAN2A 4
  10. #define VCI_USBCAN_E_U 20
  11. #define VCI_USBCAN_2E_U 21
  12. //函数调用返回状态值
  13. #define STATUS_OK 1
  14. #define STATUS_ERR 0
  15. //类型定义,如果显示重复定义,注释即可。
  16. //QT中需要定义
  17. /*
  18. typedef unsigned char BYTE;
  19. typedef char CHAR;
  20. typedef unsigned char UCHAR;
  21. typedef int INT;
  22. typedef unsigned int UINT;
  23. typedef unsigned short USHORT;
  24. typedef unsigned long ULONG;
  25. typedef unsigned long DWORD;
  26. */
  27. /*------------------------------------------------兼容ZLG的函数及数据类型------------------------------------------------*/
  28. //1.ZLGCAN系列接口卡信息的数据类型。
  29. typedef struct _VCI_BOARD_INFO{
  30. USHORT hw_Version;
  31. USHORT fw_Version;
  32. USHORT dr_Version;
  33. USHORT in_Version;
  34. USHORT irq_Num;
  35. BYTE can_Num;
  36. CHAR str_Serial_Num[20];
  37. CHAR str_hw_Type[40];
  38. USHORT Reserved[4];
  39. } VCI_BOARD_INFO,*PVCI_BOARD_INFO;
  40. //2.定义CAN信息帧的数据类型。
  41. typedef struct _VCI_CAN_OBJ{
  42. UINT ID;
  43. UINT TimeStamp;
  44. BYTE TimeFlag;
  45. BYTE SendType;
  46. BYTE RemoteFlag;//是否是远程帧
  47. BYTE ExternFlag;//是否是扩展帧
  48. BYTE DataLen;
  49. BYTE Data[8];
  50. BYTE Reserved[3];
  51. }VCI_CAN_OBJ,*PVCI_CAN_OBJ;
  52. //3.定义初始化CAN的数据类型
  53. typedef struct _VCI_INIT_CONFIG{
  54. DWORD AccCode;
  55. DWORD AccMask;
  56. DWORD Reserved;
  57. UCHAR Filter;
  58. UCHAR Timing0;
  59. UCHAR Timing1;
  60. UCHAR Mode;
  61. }VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;
  62. ///////// new add struct for filter /////////
  63. typedef struct _VCI_FILTER_RECORD{
  64. DWORD ExtFrame; //是否为扩展帧
  65. DWORD Start;
  66. DWORD End;
  67. }VCI_FILTER_RECORD,*PVCI_FILTER_RECORD;
  68. #define EXTERNC extern "C"
  69. EXTERNC DWORD __stdcall VCI_OpenDevice(DWORD DeviceType,DWORD DeviceInd,DWORD Reserved);
  70. EXTERNC DWORD __stdcall VCI_CloseDevice(DWORD DeviceType,DWORD DeviceInd);
  71. EXTERNC DWORD __stdcall VCI_InitCAN(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig);
  72. EXTERNC DWORD __stdcall VCI_ReadBoardInfo(DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO pInfo);
  73. EXTERNC DWORD __stdcall VCI_SetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
  74. //QT中请定义:
  75. //EXTERNC DWORD __stdcall VCI_SetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,void *pData);
  76. EXTERNC ULONG __stdcall VCI_GetReceiveNum(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  77. EXTERNC DWORD __stdcall VCI_ClearBuffer(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  78. EXTERNC DWORD __stdcall VCI_StartCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  79. EXTERNC DWORD __stdcall VCI_ResetCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
  80. EXTERNC ULONG __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,ULONG Len);
  81. EXTERNC ULONG __stdcall VCI_Receive(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pReceive,ULONG Len,INT WaitTime);
  82. /*------------------------------------------------其他补充函数及数据结构描述------------------------------------------------*/
  83. #define EXTERNC extern "C"
  84. EXTERNC DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved);
  85. EXTERNC DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
  86. #endif