JY.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #ifndef _JY_H
  2. #define _JY_H
  3. #include "CAN.h"
  4. //定义CAN接口卡信息的数据类型。
  5. typedef struct _VCI_BOARD_INFO_JY{
  6. USHORT hw_Version;
  7. USHORT fw_Version;
  8. USHORT dr_Version;
  9. USHORT in_Version;
  10. USHORT irq_Num;
  11. BYTE can_Num;
  12. CHAR str_Serial_Num[8];
  13. CHAR str_hw_Type[16];
  14. char str_GYUsb_Serial[4][4];
  15. } VCI_BOARD_INFO_JY,*PVCI_BOARD_INFO_JY; //共63个字节
  16. //定义CAN信息帧的数据类型。
  17. typedef struct _VCI_CAN_OBJ_JY{
  18. BYTE ID[4];
  19. UINT TimeStamp;
  20. BYTE TimeFlag;
  21. BYTE SendType;//保留不用 yyd
  22. BYTE RemoteFlag;//是否是远程帧
  23. BYTE ExternFlag;//是否是扩展帧
  24. BYTE DataLen;
  25. BYTE Data[8];
  26. BYTE Reserved[3];
  27. }VCI_CAN_OBJ_JY,*PVCI_CAN_OBJ_JY;
  28. //定义初始化CAN的数据类型
  29. typedef struct _VCI_INIT_CONFIG_JY{
  30. DWORD AccCode;
  31. DWORD AccMask;
  32. DWORD Reserved;
  33. UCHAR Filter;
  34. UCHAR kCanBaud;
  35. UCHAR Timing0;
  36. UCHAR Timing1;
  37. UCHAR Mode;
  38. UCHAR CanRx_IER;//added by yyd
  39. }VCI_INIT_CONFIG_JY,*PVCI_INIT_CONFIG_JY;
  40. class CJYWrapper : public CDLLModule
  41. {
  42. public:
  43. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_OpenDevice, (DWORD DeviceType,DWORD DeviceInd,DWORD Reserved))
  44. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_CloseDevice, (DWORD DeviceType,DWORD DeviceInd))
  45. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_InitCAN, (DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_INIT_CONFIG_JY pInitConfig))
  46. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_StartCAN, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd))
  47. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ResetCAN, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd))
  48. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ReadErrInfo, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_ERR_INFO pErrInfo))
  49. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ReadCANStatus, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_STATUS pCANStatus))
  50. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_WriteBoardInfo, (DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO_JY pInfo))
  51. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ReadBoardInfo, (DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO_JY pInfo))
  52. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_GetReference, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData))
  53. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_SetReference, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData))
  54. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_GetReceiveNum, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd))
  55. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ClearBuffer, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd))
  56. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_Transmit, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ_JY pSend))
  57. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_Receive, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ_JY pReceive))
  58. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_ResumeConfig, (DWORD DeviceType,DWORD DeviceInd,DWORD CANInd))
  59. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_FindGyUsbDevice, (PVCI_BOARD_INFO_JY pInfo))
  60. DECLARE_DLL_FUNCTION_3(DWORD, WINAPI, VCI_UsbDeviceReset, (DWORD DeviceType,DWORD DeviceInd,DWORD Reserved))
  61. BEGIN_DLL_INIT()
  62. INIT_DLL_FUNCTION_3(VCI_OpenDevice)
  63. INIT_DLL_FUNCTION_3(VCI_CloseDevice)
  64. INIT_DLL_FUNCTION_3(VCI_InitCAN)
  65. INIT_DLL_FUNCTION_3(VCI_StartCAN)
  66. INIT_DLL_FUNCTION_3(VCI_ResetCAN)
  67. INIT_DLL_FUNCTION_3(VCI_ReadErrInfo)
  68. INIT_DLL_FUNCTION_3(VCI_ReadCANStatus)
  69. INIT_DLL_FUNCTION_3(VCI_WriteBoardInfo)
  70. INIT_DLL_FUNCTION_3(VCI_ReadBoardInfo)
  71. INIT_DLL_FUNCTION_3(VCI_GetReference)
  72. INIT_DLL_FUNCTION_3(VCI_SetReference)
  73. INIT_DLL_FUNCTION_3(VCI_GetReference)
  74. INIT_DLL_FUNCTION_3(VCI_ClearBuffer)
  75. INIT_DLL_FUNCTION_3(VCI_Transmit)
  76. INIT_DLL_FUNCTION_3(VCI_Receive)
  77. INIT_DLL_FUNCTION_3(VCI_ResumeConfig)
  78. INIT_DLL_FUNCTION_3(VCI_FindGyUsbDevice)
  79. INIT_DLL_FUNCTION_3(VCI_UsbDeviceReset)
  80. END_DLL_INIT()
  81. bool Init(LPCTSTR szPath, UINT nCnt, ...){return false;}// 具体化
  82. };
  83. class CJY : public CCAN
  84. {
  85. public:
  86. CJY();
  87. virtual ~CJY();
  88. BOOL OpenDevice(DWORD devInd);
  89. void CloseDevice(DWORD devInd);
  90. BOOL InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig);
  91. BOOL StartCAN(DWORD devInd, DWORD CANInd);
  92. BOOL ResetCAN(DWORD devInd, DWORD CANInd);
  93. void ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo);
  94. BOOL ReadCANStatus(DWORD devInd, DWORD CANInd, PVCI_CAN_STATUS pCANStatus);
  95. BOOL WriteBoardInfo(DWORD devInd, DWORD CANInd, PVCI_BOARD_INFO_JY pInfo);
  96. BOOL ReadBoardInfo(DWORD devInd, DWORD CANInd, PVCI_BOARD_INFO_JY pInfo);
  97. BOOL GetReference(DWORD devInd, DWORD CANInd, DWORD RefType, PVOID pData);
  98. BOOL SetReference(DWORD devInd, DWORD CANInd, DWORD RefType, PVOID pData);
  99. BOOL ClearBuffer(DWORD devInd, DWORD CANInd);
  100. ULONG GetReceiveNum(DWORD devInd, DWORD CANInd);
  101. ULONG Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len);
  102. ULONG Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime=-1);
  103. void ResumeConfig(DWORD devInd, DWORD CANInd);
  104. DWORD FindGyUsbDevice(PVCI_BOARD_INFO_JY pInfo);
  105. DWORD UsbDeviceReset(DWORD DeviceType,DWORD DeviceInd,DWORD Reserved);
  106. BOOL LoadDLL();
  107. protected:
  108. VCI_INIT_CONFIG_JY init_config;
  109. DWORD m_dwDevType; // 设备类型
  110. DWORD m_dwDevInd; // 设备索引
  111. DWORD m_dwCANInd; // CAN通道索引
  112. CJYWrapper m_wrapper;
  113. };
  114. #endif