123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include "stdafx.h"
- #include "JY.h"
- CJY::CJY()
- {
- m_dwDevType = 2; //设备类型USBCAN
- init_config.Filter = 1; //单滤波
- init_config.Mode = 0; //正常状态
- init_config.kCanBaud = 7; //波特率100K,不与timing0、timing1设置冲突
- init_config.Reserved = 0;
- init_config.CanRx_IER = 1; //不知道是什么...
- }
- CJY::~CJY()
- {
- // FreeLibrary(hDLL);
- }
- BOOL CJY::LoadDLL()
- {
- if (m_wrapper.Init("VCI_CAN.DLL"))
- return TRUE;
- else
- return FALSE;
- }
- BOOL CJY::OpenDevice(DWORD devInd)
- {
- if (m_wrapper.VCI_OpenDevice(m_dwDevType, devInd, 0) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- void CJY::CloseDevice(DWORD devInd)
- {
- m_wrapper.VCI_CloseDevice(m_dwDevType, devInd);
- }
- BOOL CJY::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(m_dwDevType, devInd, CANInd, &init_config) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- BOOL CJY::StartCAN(DWORD devInd, DWORD CANInd)
- {
- if (m_wrapper.VCI_StartCAN(m_dwDevType, devInd, CANInd) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- BOOL CJY::ResetCAN(DWORD devInd, DWORD CANInd)
- {
- if (m_wrapper.VCI_ResetCAN(m_dwDevType, devInd, CANInd) != STATUS_OK)
- return FALSE;
- return TRUE;
- }
- BOOL CJY::ClearBuffer(DWORD devInd, DWORD CANInd)
- {
- // if (VCI_ClearBuffer(m_dwDevType, devInd, CANInd) != STATUS_OK)
- // return FALSE;
- return TRUE;
- }
- void CJY::ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo)
- {
- // m_wrapper.VCI_ReadErrInfo(m_dwDevType, devInd, CANInd, pErrInfo);
- return;
- }
- BOOL CJY::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 CJY::GetReceiveNum(DWORD devInd, DWORD CANInd)
- {
- ULONG len = m_wrapper.VCI_GetReceiveNum(m_dwDevType, devInd, CANInd);
- return len;
- }
- ULONG CJY::Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len)
- {
- ULONG len;
- VCI_CAN_OBJ_JY frameinfo;
- // frameinfo.ID = pSend->ID;
- // pSend->IDArray[2] &= 0x07;
- frameinfo.ID[0] = ((pSend->IDArray[2])<<5)|(pSend->IDArray[3]>>3);
- frameinfo.ID[1] = (pSend->IDArray[3]<<5);
- frameinfo.DataLen = pSend->DataLen;
- frameinfo.ExternFlag = pSend->ExternFlag;
- frameinfo.RemoteFlag = pSend->RemoteFlag;
- memcpy(frameinfo.Data, pSend->Data, 8);
- memcpy(frameinfo.Reserved, pSend->Reserved, 3);
- // TRACE("%x:%x:%x:%x---%x:%x:%x:%x:%x:%x:%x:%x\n",frameinfo.ID[0],frameinfo.ID[1],frameinfo.ID[2],frameinfo.ID[3],frameinfo.Data[0],frameinfo.Data[1],frameinfo.Data[2],frameinfo.Data[3],frameinfo.Data[4],frameinfo.Data[5],frameinfo.Data[6],frameinfo.Data[7]);
- len = m_wrapper.VCI_Transmit(m_dwDevType, devInd, CANInd, &frameinfo);
- return len;
- }
- ULONG CJY::Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime/* =-1 */)
- {
- ULONG len;
- VCI_CAN_OBJ_JY frameinfo[100];
- len = m_wrapper.VCI_Receive(m_dwDevType, devInd, CANInd, frameinfo);
- // pReceive->ID = frameinfo.ID;
- if (len > 0)
- {
- for (int i=0;i<len;i++)
- {
- frameinfo[i].ID[1]=(frameinfo[i].ID[1]>>5)|(frameinfo[i].ID[0]<<3);
- frameinfo[i].ID[0]=frameinfo[i].ID[0]>>5;
- pReceive[i].ID = (frameinfo[i].ID[0]<<8) + frameinfo[i].ID[1];
- pReceive[i].DataLen = frameinfo[i].DataLen;
- pReceive[i].ExternFlag = frameinfo[i].ExternFlag;
- pReceive[i].RemoteFlag = frameinfo[i].RemoteFlag;
- memcpy(pReceive[i].Data, frameinfo[i].Data, 8);
- memcpy(pReceive[i].Reserved, frameinfo[i].Reserved, 3);
- }
- }
- return len;
- }
|