PC.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "stdafx.h"
  2. #include "PC.h"
  3. CPC::CPC()
  4. {
  5. init_config.Filter = 0; //µ¥Â˲¨
  6. init_config.Mode = 0; //Õý³£Ä£Ê½
  7. init_config.Reserved = 0;
  8. }
  9. CPC::~CPC()
  10. {
  11. }
  12. BOOL CPC::LoadDLL()
  13. {
  14. if (m_wrapper.Init("CAN_TO_USB.dll"))
  15. return TRUE;
  16. else
  17. return FALSE;
  18. }
  19. BOOL CPC::OpenDevice(DWORD devInd)
  20. {
  21. if (m_wrapper.VCI_OpenDevice(devInd) != STATUS_OK)
  22. return FALSE;
  23. return TRUE;
  24. }
  25. void CPC::CloseDevice(DWORD devInd)
  26. {
  27. m_wrapper.VCI_CloseDevice(devInd);
  28. }
  29. BOOL CPC::InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig)
  30. {
  31. init_config.AccCode = pInitConfig->AccCode;
  32. init_config.AccMask = pInitConfig->AccMask;
  33. init_config.Timing0 = pInitConfig->Timing0;
  34. init_config.Timing1 = pInitConfig->Timing1;
  35. if (m_wrapper.VCI_InitCan(devInd, CANInd, &init_config) != STATUS_OK)
  36. return FALSE;
  37. return TRUE;
  38. }
  39. BOOL CPC::StartCAN(DWORD devInd, DWORD CANInd)
  40. {
  41. return TRUE;
  42. }
  43. BOOL CPC::ResetCAN(DWORD devInd, DWORD CANInd)
  44. {
  45. if (m_wrapper.VCI_ResetCan(devInd, CANInd) != STATUS_OK)
  46. return FALSE;
  47. return TRUE;
  48. }
  49. BOOL CPC::ClearBuffer(DWORD devInd, DWORD CANInd)
  50. {
  51. if (m_wrapper.VCI_ClearBuffer(devInd, CANInd) != STATUS_OK)
  52. return FALSE;
  53. return TRUE;
  54. }
  55. void CPC::ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo)
  56. {
  57. }
  58. ULONG CPC::GetReceiveNum(DWORD devInd, DWORD CANInd)
  59. {
  60. ULONG len = m_wrapper.VCI_GetReceiveNum(devInd, CANInd);
  61. return len;
  62. }
  63. ULONG CPC::Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len)
  64. {
  65. ULONG len;
  66. VCI_CAN_OBJ_PC frameinfo;
  67. frameinfo.ID = pSend->ID;
  68. frameinfo.DataLen = pSend->DataLen;
  69. frameinfo.SendType = 0;
  70. frameinfo.ExternFlag = pSend->ExternFlag;
  71. frameinfo.RemoteFlag = pSend->RemoteFlag;
  72. memcpy(frameinfo.Data, pSend->Data, 8);
  73. len = m_wrapper.VCI_Transmit(devInd, CANInd, &frameinfo);
  74. return len;
  75. }
  76. ULONG CPC::Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime/* =1 */)
  77. {
  78. ULONG len;
  79. VCI_CAN_OBJ_PC frameinfo[100];
  80. len = m_wrapper.VCI_Receive(devInd, CANInd, frameinfo, Len, 1);
  81. if (len > 0)
  82. {
  83. for (int i=0;i<len;i++)
  84. {
  85. pReceive[i].ID = frameinfo[i].ID;
  86. pReceive[i].DataLen = frameinfo[i].DataLen;
  87. pReceive[i].SendType = frameinfo[i].SendType;
  88. memcpy(pReceive[i].Data, frameinfo[i].Data, 8);
  89. }
  90. }
  91. return len;
  92. }