#include "stdafx.h" #include "PC.h" CPC::CPC() { init_config.Filter = 0; //单滤波 init_config.Mode = 0; //正常模式 init_config.Reserved = 0; } CPC::~CPC() { } BOOL CPC::LoadDLL() { if (m_wrapper.Init("CAN_TO_USB.dll")) return TRUE; else return FALSE; } BOOL CPC::OpenDevice(DWORD devInd) { if (m_wrapper.VCI_OpenDevice(devInd) != STATUS_OK) return FALSE; return TRUE; } void CPC::CloseDevice(DWORD devInd) { m_wrapper.VCI_CloseDevice(devInd); } BOOL CPC::InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig) { 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(devInd, CANInd, &init_config) != STATUS_OK) return FALSE; return TRUE; } BOOL CPC::StartCAN(DWORD devInd, DWORD CANInd) { return TRUE; } BOOL CPC::ResetCAN(DWORD devInd, DWORD CANInd) { if (m_wrapper.VCI_ResetCan(devInd, CANInd) != STATUS_OK) return FALSE; return TRUE; } BOOL CPC::ClearBuffer(DWORD devInd, DWORD CANInd) { if (m_wrapper.VCI_ClearBuffer(devInd, CANInd) != STATUS_OK) return FALSE; return TRUE; } void CPC::ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo) { } ULONG CPC::GetReceiveNum(DWORD devInd, DWORD CANInd) { ULONG len = m_wrapper.VCI_GetReceiveNum(devInd, CANInd); return len; } ULONG CPC::Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len) { ULONG len; VCI_CAN_OBJ_PC frameinfo; frameinfo.ID = pSend->ID; frameinfo.DataLen = pSend->DataLen; frameinfo.SendType = 0; frameinfo.ExternFlag = pSend->ExternFlag; frameinfo.RemoteFlag = pSend->RemoteFlag; memcpy(frameinfo.Data, pSend->Data, 8); len = m_wrapper.VCI_Transmit(devInd, CANInd, &frameinfo); return len; } ULONG CPC::Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime/* =1 */) { ULONG len; VCI_CAN_OBJ_PC frameinfo[100]; len = m_wrapper.VCI_Receive(devInd, CANInd, frameinfo, Len, 1); if (len > 0) { for (int i=0;i