123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include "stdafx.h"
- #include "ZLG.h"
- CZLG::CZLG()
- {
- m_dwDevType = 20; //设备类型USBCAN2
- init_config.Filter = 1; //单滤波
- init_config.Mode = 0; //正常模式
- init_config.Reserved = 0;
- }
- CZLG::~CZLG()
- {
- // FreeLibrary(hDLL);
- }
- BOOL CZLG::LoadDLL()
- {
- if (m_wrapper.Init("C:\\DFOC\\Library\\Hardware\\ControlCAN.dll"))//尝试一下 完整路径。看看效果如何。
- return TRUE;
- else
- return FALSE;
- }
- BOOL CZLG::OpenDevice(DWORD devInd)
- {
- if (m_wrapper.VCI_OpenDevice(m_dwDevType, devInd, 0) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- void CZLG::CloseDevice(DWORD devInd)
- {
- m_wrapper.VCI_CloseDevice(m_dwDevType, devInd);
- }
- BOOL CZLG::InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig)
- {
- //note
- DWORD regALCapture = 0x160023;//100kps
- m_wrapper.VCI_SetReference(m_dwDevType, devInd, CANInd, 0, ®ALCapture);
-
- init_config.AccCode = pInitConfig->AccCode;
- init_config.AccMask = pInitConfig->AccMask;
- init_config.Timing0 = pInitConfig->Timing0;
- init_config.Timing1 = pInitConfig->Timing1;
- if (m_wrapper.VCI_InitCAN(m_dwDevType, devInd, CANInd, &init_config) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- BOOL CZLG::StartCAN(DWORD devInd, DWORD CANInd)
- {
- if (m_wrapper.VCI_StartCAN(m_dwDevType, devInd, CANInd) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- BOOL CZLG::ResetCAN(DWORD devInd, DWORD CANInd)
- {
- if (m_wrapper.VCI_ResetCAN(m_dwDevType, devInd, CANInd) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- BOOL CZLG::ClearBuffer(DWORD devInd, DWORD CANInd)
- {
- if (m_wrapper.VCI_ClearBuffer(m_dwDevType, devInd, CANInd) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- void CZLG::ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo)
- {
- m_wrapper.VCI_ReadErrInfo(m_dwDevType, devInd, CANInd, pErrInfo);
- return;
- }
- BOOL CZLG::ReadCANStatus(DWORD devInd, DWORD CANInd,PVCI_CAN_STATUS pCANStatus)
- {
- if (m_wrapper.VCI_ReadCANStatus(m_dwDevType, devInd, CANInd, pCANStatus) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- ULONG CZLG::GetReceiveNum(DWORD devInd, DWORD CANInd)
- {
- ULONG len = m_wrapper.VCI_GetReceiveNum(m_dwDevType, devInd, CANInd);
- return len;
- }
- ULONG CZLG::Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len)
- {
- ULONG len;
- VCI_CAN_OBJ_ZLG frameinfo;
- frameinfo.ID = pSend->ID;
- frameinfo.DataLen = pSend->DataLen;
- frameinfo.ExternFlag = pSend->ExternFlag;
- frameinfo.RemoteFlag = pSend->RemoteFlag;
- frameinfo.SendType = 0;
- frameinfo.TimeFlag = pSend->TimeFlag;
- frameinfo.TimeStamp = pSend->TimeStamp;
- memcpy(frameinfo.Data, pSend->Data, 8);
- memcpy(frameinfo.Reserved, pSend->Reserved, 3);
-
- len = m_wrapper.VCI_Transmit(m_dwDevType, devInd, CANInd, &frameinfo, Len);
- return len;
- }
- ULONG CZLG::Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime/* =-1 */)
- {
- ULONG len;
- VCI_CAN_OBJ_ZLG frameinfo[10];
- len = m_wrapper.VCI_Receive(m_dwDevType, devInd, CANInd, frameinfo, Len, WaitTime);
- if (len > 0)
- {
- for (int i=0;i<len;i++)
- {
- pReceive[i].ID = frameinfo[i].ID;
- pReceive[i].DataLen = frameinfo[i].DataLen;
- pReceive[i].ExternFlag = frameinfo[i].ExternFlag;
- pReceive[i].RemoteFlag = frameinfo[i].RemoteFlag;
- pReceive[i].SendType = frameinfo[i].SendType;
- pReceive[i].TimeFlag = frameinfo[i].TimeFlag;
- pReceive[i].TimeStamp = frameinfo[i].TimeStamp;
- memcpy(pReceive[i].Data, frameinfo[i].Data, 8);
- memcpy(pReceive[i].Reserved, frameinfo[i].Reserved, 3);
- }
- }
- return len;
- }
|