어떻게 VC 에서 USB - CAN II 인터페이스 카드 를 사용 하여 CAN 통신 을 조작 합 니까
1 USB - CAN II 장치 연결
예제 코드 는 다음 과 같다.
void Ctbox_CarSimulatorDlg::OnBnClickedBtConnect()
{
// TODO: Add your control notification handler code here
if(m_connect ==true){ //
m_connect =false;
Sleep(500);
GetDlgItem(IDC_BT_CONNECT)->SetWindowText(" ");
VCI_CloseDevice(VCI_USBCAN2,0);
return;
}
//
UpdateData(true);
VCI_INIT_CONFIG init_config;
memset(&init_config,0,sizeof(VCI_INIT_CONFIG));
init_config.AccCode=0; //
init_config.AccMask=0xffffffff; //
init_config.Filter=1; //
init_config.Mode=0; //
init_config.Timing0=0; // 0
init_config.Timing1=0x1c; // 1
//
if(VCI_OpenDevice(VCI_USBCAN2,0,0)!=STATUS_OK)
{
MessageBox(" !"," ",MB_OK|MB_ICONQUESTION);
return;
}
// CAN
if(VCI_InitCAN(VCI_USBCAN2,0,m_channel_sel,&init_config)!=STATUS_OK)
{
MessageBox(" CAN !"," ",MB_OK|MB_ICONQUESTION);
VCI_CloseDevice(0,0);
return;
}
// CAN
if(VCI_StartCAN(VCI_USBCAN2,0,m_channel_sel)!=1)
{
MessageBox(" CAN !"," ",MB_OK|MB_ICONQUESTION);
VCI_CloseDevice(0,0);
return;
}
m_connect=1;
GetDlgItem(IDC_BT_CONNECT)->SetWindowText(" ");
}
주: 여기, 타이머 0 은 0 이 어야 합 니 다. 타 이 머 는 0 x1c 로 장 치 를 해 야 PC 에서 정상적으로 작 동 할 수 있 습 니 다. 그렇지 않 으 면 전송 인 터 페 이 스 를 호출 할 때 항상 오 류 를 되 돌려 줍 니 다.2. CAN 메시지 보 내기
VCI_CAN_OBJ frameinfo;
frameinfo.DataLen =8;
frameinfo.RemoteFlag =0;
frameinfo.ExternFlag =0;
frameinfo.SendType =0;
frameinfo.ID =CAN_ID_LOCK;
frameinfo.Data[1] =lock;
VCI_Transmit(VCI_USBCAN2,0,dlg->m_channel_sel,&frameinfo,1);
3. CAN 소식 수신CAN 메 시 지 를 받 는 것 은 일반적으로 하나의 스 레 드 를 통 해 이 루어 집 니 다. 다음 과 같 습 니 다.
UINT Ctbox_CarSimulatorDlg::ReceiveThread(void * param)
{
Ctbox_CarSimulatorDlg *dlg =(Ctbox_CarSimulatorDlg *)param;
VCI_CAN_OBJ frameinfo[50];
VCI_ERR_INFO errinfo;
int len=1;
int i=0;
while(1){
Sleep(100);
if(!dlg->m_connect){
continue;
}
len=VCI_Receive(VCI_USBCAN2,0,dlg->m_channel_sel,frameinfo,50,200);
if(len<=0){
// : ,
// ( )
VCI_ReadErrInfo(VCI_USBCAN2,0,dlg->m_channel_sel,&errinfo);
}
else{
//
for(i=0;im_remote_control_page.SetStatus(frameinfo[i].ID,8,frameinfo[i].Data);
break;
default:
break;
}
}
}
}
return 0;
}
대화 상자 의 초기 화 함수 에서 이 수신 스 레 드 를 시작 합 니 다:AfxBeginThread(ReceiveThread,this);
4 리 셋 CANvoid Ctbox_CarSimulatorDlg::OnBnClickedBtReset()
{
// TODO: Add your control notification handler code here
if(m_connect==0){
AfxMessageBox(" !",0);
return;
}
// CAN
if(VCI_ResetCAN(VCI_USBCAN2,0,m_channel_sel)!=1)
{
AfxMessageBox(" ",0);
}
// CAN
if(VCI_StartCAN(VCI_USBCAN2,0,m_channel_sel)!=1)
{
MessageBox(" CAN !"," ",MB_OK|MB_ICONQUESTION);
VCI_CloseDevice(0,0);
return;
}
AfxMessageBox(" ",0);
}
5 기타프로젝트 에는 SDK 에서 lib 파일 과 두문 을 제공 해 야 합 니 다.
VS 2010 프로젝트 속성 페이지 의 Linker - > Input - > Addtional Dependencies 란 에 다음 과 같이 설정 할 수 있 습 니 다. / controlCAN. lib;%(AdditionalDependencies)
그리고. cpp 파일 에 두문 을 포함 합 니 다:
#include "ControlCAN.h"
마지막 으로 USB - CAN II SDK 에서 제공 하 는 ControlCAN. dll 및 kerneldls 폴 더 를 프로젝트 디 렉 터 리 에 복사 해 야 프로그램 이 정상적으로 실 행 될 수 있 습 니 다.위의 예시 코드 와 같이 USB - CAN II 장 치 를 조작 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.