ZLG.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "stdafx.h"
  2. #include "ZLG.h"
  3. CZLG::CZLG()
  4. {
  5. m_dwDevType = 20; //设备类型USBCAN2
  6. init_config.Filter = 1; //单滤波
  7. init_config.Mode = 0; //正常模式
  8. init_config.Reserved = 0;
  9. }
  10. CZLG::~CZLG()
  11. {
  12. // FreeLibrary(hDLL);
  13. }
  14. BOOL CZLG::LoadDLL()
  15. {
  16. if (m_wrapper.Init("C:\\DFOC\\Library\\Hardware\\ControlCAN.dll"))//尝试一下 完整路径。看看效果如何。
  17. return TRUE;
  18. else
  19. return FALSE;
  20. }
  21. BOOL CZLG::OpenDevice(DWORD devInd)
  22. {
  23. if (m_wrapper.VCI_OpenDevice(m_dwDevType, devInd, 0) != STATUS_OK)
  24. return FALSE;
  25. return TRUE;
  26. }
  27. void CZLG::CloseDevice(DWORD devInd)
  28. {
  29. m_wrapper.VCI_CloseDevice(m_dwDevType, devInd);
  30. }
  31. BOOL CZLG::InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig)
  32. {
  33. //note
  34. DWORD regALCapture = 0x160023;//100kps
  35. m_wrapper.VCI_SetReference(m_dwDevType, devInd, CANInd, 0, &regALCapture);
  36. init_config.AccCode = pInitConfig->AccCode;
  37. init_config.AccMask = pInitConfig->AccMask;
  38. init_config.Timing0 = pInitConfig->Timing0;
  39. init_config.Timing1 = pInitConfig->Timing1;
  40. if (m_wrapper.VCI_InitCAN(m_dwDevType, devInd, CANInd, &init_config) != STATUS_OK)
  41. return FALSE;
  42. return TRUE;
  43. }
  44. BOOL CZLG::StartCAN(DWORD devInd, DWORD CANInd)
  45. {
  46. if (m_wrapper.VCI_StartCAN(m_dwDevType, devInd, CANInd) != STATUS_OK)
  47. return FALSE;
  48. return TRUE;
  49. }
  50. BOOL CZLG::ResetCAN(DWORD devInd, DWORD CANInd)
  51. {
  52. if (m_wrapper.VCI_ResetCAN(m_dwDevType, devInd, CANInd) != STATUS_OK)
  53. return FALSE;
  54. return TRUE;
  55. }
  56. BOOL CZLG::ClearBuffer(DWORD devInd, DWORD CANInd)
  57. {
  58. if (m_wrapper.VCI_ClearBuffer(m_dwDevType, devInd, CANInd) != STATUS_OK)
  59. return FALSE;
  60. return TRUE;
  61. }
  62. void CZLG::ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo)
  63. {
  64. m_wrapper.VCI_ReadErrInfo(m_dwDevType, devInd, CANInd, pErrInfo);
  65. return;
  66. }
  67. BOOL CZLG::ReadCANStatus(DWORD devInd, DWORD CANInd,PVCI_CAN_STATUS pCANStatus)
  68. {
  69. if (m_wrapper.VCI_ReadCANStatus(m_dwDevType, devInd, CANInd, pCANStatus) != STATUS_OK)
  70. return FALSE;
  71. return TRUE;
  72. }
  73. ULONG CZLG::GetReceiveNum(DWORD devInd, DWORD CANInd)
  74. {
  75. ULONG len = m_wrapper.VCI_GetReceiveNum(m_dwDevType, devInd, CANInd);
  76. return len;
  77. }
  78. ULONG CZLG::Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len)
  79. {
  80. ULONG len;
  81. VCI_CAN_OBJ_ZLG frameinfo;
  82. frameinfo.ID = pSend->ID;
  83. frameinfo.DataLen = pSend->DataLen;
  84. frameinfo.ExternFlag = pSend->ExternFlag;
  85. frameinfo.RemoteFlag = pSend->RemoteFlag;
  86. frameinfo.SendType = 0;
  87. frameinfo.TimeFlag = pSend->TimeFlag;
  88. frameinfo.TimeStamp = pSend->TimeStamp;
  89. memcpy(frameinfo.Data, pSend->Data, 8);
  90. memcpy(frameinfo.Reserved, pSend->Reserved, 3);
  91. len = m_wrapper.VCI_Transmit(m_dwDevType, devInd, CANInd, &frameinfo, Len);
  92. return len;
  93. }
  94. ULONG CZLG::Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime/* =-1 */)
  95. {
  96. ULONG len;
  97. VCI_CAN_OBJ_ZLG frameinfo[10];
  98. len = m_wrapper.VCI_Receive(m_dwDevType, devInd, CANInd, frameinfo, Len, WaitTime);
  99. if (len > 0)
  100. {
  101. for (int i=0;i<len;i++)
  102. {
  103. pReceive[i].ID = frameinfo[i].ID;
  104. pReceive[i].DataLen = frameinfo[i].DataLen;
  105. pReceive[i].ExternFlag = frameinfo[i].ExternFlag;
  106. pReceive[i].RemoteFlag = frameinfo[i].RemoteFlag;
  107. pReceive[i].SendType = frameinfo[i].SendType;
  108. pReceive[i].TimeFlag = frameinfo[i].TimeFlag;
  109. pReceive[i].TimeStamp = frameinfo[i].TimeStamp;
  110. memcpy(pReceive[i].Data, frameinfo[i].Data, 8);
  111. memcpy(pReceive[i].Reserved, frameinfo[i].Reserved, 3);
  112. }
  113. }
  114. return len;
  115. }