CAN 通信vc实例_第1页
CAN 通信vc实例_第2页
CAN 通信vc实例_第3页
CAN 通信vc实例_第4页
CAN 通信vc实例_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Vc 程序CAN通信/ DemoCANDlg.cpp : implementation file/#include stdafx.h#include DemoCAN.h#include DemoCANDlg.h#include ControlCAN.h#include help.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifUCHARFilter1=5;UCHARTiming00;UCHARTiming11;UCHARMode1=5;DWORDAccCode1=2

2、;DWORDAccMask1=1;/HWND hWnd1=0;char Sanbuf24=11 22 33 44 55 66 77 88;CString sFile;unsigned long nextrow;int StopFlag=0;int StopFlag1=0;unsigned int JustnowItem;CString data1;int value_a=0;int ID_val=0;char zbuf124=00 00 00 00 00 00 00 00;HWND hwnd=0;/ CAboutDlg dialog used for App Aboutclass CAbout

3、Dlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MS

4、G(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg

5、)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDemoCANDlg dialogCDemoCANDlg:CDemoCANDlg(CWnd* pParent /*=NULL*/): CDialog(CDemoCANDlg:IDD, pParent)/AFX_DATA_INIT(CDemoCANDlg)m_nSendFrameFormat = 0;m_nSendFrameType = 0;m_strSendData = _T(Sanbuf);m_strSendID = _T(00 00 00 88);m_radioIDFormat =

6、1;m_bCanRxEn = FALSE;m_nCanIndex = 0;m_nDevType = 0;m_box1=1;m_box2=0;m_box3=2;m_box4=0;m_box11=_T(传感器输出电压1V-3V);m_bCanRxEn1 = FALSE;/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CDemoCANDlg:DoDataExchange(CDat

7、aExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CDemoCANDlg)DDX_Control(pDX, IDC_COMB12, m_COMBOX12);DDX_Control(pDX, IDC_COMBO11, m_box111);DDX_Control(pDX, IDC_LIST1, m_list);DDX_CBIndex(pDX, IDC_COMBO_SENDFRAMEFORMAT, m_nSendFrameFormat);DDX_CBIndex(pDX, IDC_COMBO_SENDFRAMETYPE, m_nSendF

8、rameType);DDX_Text(pDX, IDC_EDIT_SEND_DATA, m_strSendData);DDX_Text(pDX, IDC_EDIT_SEND_ID, m_strSendID);DDX_Radio(pDX, IDC_RADIO_ID_FORMAT, m_radioIDFormat);DDX_Check(pDX, IDC_CHECK_CANRX_EN, m_bCanRxEn);DDX_CBIndex(pDX, IDC_COMBO_CAN_INDEX, m_nCanIndex);DDX_CBIndex(pDX, IDC_COMBO_DEVTYPE, m_nDevTyp

9、e);DDX_CBIndex(pDX, IDC_COMBO1, m_box1);DDX_CBIndex(pDX, IDC_COMBO2, m_box2);DDX_CBIndex(pDX, IDC_COMBO3, m_box3);DDX_CBIndex(pDX, IDC_COMBO4, m_box4);DDX_Text(pDX,IDC_COMBO11,m_box11);DDX_Check(pDX, IDC_CHECK_CANRX_EN2, m_bCanRxEn1);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDemoCANDlg, CDialog)/AFX_MSG_MAP(C

10、DemoCANDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_OPEN_DEVICE, OnButtonOpenDevice)ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)ON_BN_CLICKED(IDC_CHECK_CANRX_EN, OnCheckCanrxEn)ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)ON_BN_CLICKED(IDC_BUTTON_CLOSE_DEVICE, On

11、ButtonCloseDevice)ON_CBN_EDITCHANGE(IDC_COMBO_SENDFRAMEFORMAT, OnEditchangeComboSendframeformat)ON_CBN_EDITCHANGE(IDC_COMBO_DEVTYPE, OnEditchangeComboDevtype)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)ON_BN_CLICKED(IDC_BUTTON5, OnBu

12、tton5)ON_CBN_EDITCHANGE(IDC_COMBO11, OnEditchangeCombo5)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)ON_BN_CLICKED(IDC_CHECK_CANRX_EN2, OnCheckCanrxEn2)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDemoCANDlg message handlersBOOL CDemoCANDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM

13、_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window

14、 is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconm_box111.SetCurSel(0);m_COMBOX12.SetCurSel(1);SetDlgItemText(IDC_EDIT1,未启用);SetDlgItemText(IDC_EDIT2,未启用);SetDlgItemText(IDC_EDIT3,未启用);SetDlgItemText(IDC_EDIT4,未启用);SetDlgItemText(IDC_EDIT5,未启用);SetDlgItemT

15、ext(IDC_EDIT6,未启用);SetDlgItemText(IDC_EDIT7,未启用);SetDlgItemText(IDC_EDIT8,未启用);SetDlgItemText(IDC_EDIT9,未启用);SetDlgItemText(IDC_EDIT10,未启用);SetDlgItemText(IDC_EDIT11,未启用);SetDlgItemText(IDC_EDIT12,未启用);SetDlgItemText(IDC_EDIT13,未启用); /信息显示列表初始化m_list.InsertColumn(0,序号);m_list.SetColumnWidth(0,50);m_

16、list.InsertColumn(1,系统时间);m_list.SetColumnWidth(1,95);m_list.InsertColumn(2,CANIndex);m_list.SetColumnWidth(2,70);m_list.InsertColumn(3,Tx-Rx);m_list.SetColumnWidth(3,70);m_list.InsertColumn(4, 设备ID );m_list.SetColumnWidth(4,70);m_list.InsertColumn(5,结构);m_list.SetColumnWidth(5,60);m_list.InsertColu

17、mn(6,类型);m_list.SetColumnWidth(6,70);m_list.InsertColumn(7,DLC);m_list.SetColumnWidth(7,40);m_list.InsertColumn(8,数据);m_list.SetColumnWidth(8,170);m_list.InsertColumn(9,设置状态);m_list.SetColumnWidth(9,70);/信息显示列表初始化完毕m_strSendID = 12 34 56 78;/SetDlgItemText(IDC_COMBO1,1);/ TODO: Add extra initializat

18、ion hereUpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to a controlvoid CDemoCANDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog,

19、you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CDemoCANDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0

20、);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The

21、system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CDemoCANDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;/一位十六进制转换为十进制int HexChar(char c)if(c=0) & (c=A) & (c=a) & (cTiming0=Timing00;InitInfo-Timing1=Timing11;InitInfo-Filter=Filter1;InitInfo-AccCode=A

22、ccCode1;InitInfo-AccMask=AccMask1;InitInfo-Mode=Mode1; /初始化通道0if(VCI_InitCAN(m_DevType,m_DevIndex, 0,InitInfo)!=1)/can-0MessageBox(Init-CAN failed!);return;Sleep(100); /初始化通道0if(VCI_StartCAN(m_DevType,m_DevIndex, 0)!=1)/can-0MessageBox(Start-CAN failed!);return; /初始化通道1if(m_nDevType = 1)if(VCI_InitC

23、AN(m_DevType,m_DevIndex, 1,InitInfo)!=1)/can-1MessageBox(Init-CAN failed!);return;Sleep(100); /初始化通道1if(VCI_StartCAN(m_DevType,m_DevIndex, 1)!=1)/can-0MessageBox(Start-CAN failed!);return;MessageBox(Open successfule!n Start CAN OK!);/关闭设备void CDemoCANDlg:OnButtonCloseDevice() if(VCI_CloseDevice(m_De

24、vType,m_DevIndex)!=1)MessageBox(关闭失败!);return;MessageBox(关闭成功!);int intcstring(CString stext)char stext316=0;sprintf(stext3,%s,stext);int len=strlen(stext3)+1;int num=0;int jol=0;for(len;len2;len-)if(stext3len-1=A|stext3len-1=B|stext3len-1=C|stext3len-1=D|stext3len-1=E|stext3len-1=F)int aa=0,pow=1;a

25、a=stext3len-1-A+10;for(pow;powjol;pow+)aa=aa*16;num=num+aa;if(stext3len-1=a|stext3len-1=b|stext3len-1=c|stext3len-1=d|stext3len-1=e|stext3len-1=f)int aa1=0,pow=1;aa1=stext3len-1-a+10;for(pow;powjol;pow+)aa1=aa1*16;num=num+aa1;if(0=stext3len-1&stext3len-1=9)int aa2=0,pow=1;aa2=stext3len-1-0;for(pow;p

26、owjol;pow+)aa2=aa2*16;num=num+aa2;jol+;if(stext3len-1= )jol-;return num;/发送信息void CDemoCANDlg:OnButtonSend() /从界面获取发送信息VCI_CAN_OBJ sendbuf1;UpdateData(TRUE);CString str532;BYTE buf50;BYTE SendID10;CString strtemp,strtemp1;CString str1;int len,datanum=0,IDnum=0,newflag=1,i;value_a=1;len=m_strSendID.G

27、etLength();/from dialogfor(i=0; i=4)break;newflag=1;len=m_strSendData.GetLength();for(i=0; i=8)break;sendbuf-ExternFlag=m_nSendFrameType;sendbuf-DataLen=datanum;sendbuf-RemoteFlag=m_nSendFrameFormat;if(m_nSendFrameFormat=1)/if remote frame, data area is invalidfor(i=0;iExternFlag)=1)/sendbuf-ID = in

28、tcstring(m_strSendID);else/basic frame IDif(m_radioIDFormat)/sendbuf-ID = intcstring(m_strSendID);elsesendbuf-ID = intcstring(m_strSendID);for(i=0;iDatai=bufi;/*/*从界面获取发送信息完毕*/*/int flag;if(m_nCanIndex=1)&(m_DevType!= VCI_USBCAN2)MessageBox(the device only support CAN index 0);m_nCanIndex=0; /调用动态链接

29、库发送函数flag=VCI_Transmit(m_DevType,m_DevIndex,m_nCanIndex,sendbuf,1);/CAN message sendif(flagRemoteFlag)=1)m_list.SetItemText(JustnowItem,5,Remote);elsem_list.SetItemText(JustnowItem,5,数据);if(sendbuf-ExternFlag)=1)for(i=0;i4;i+)data=SendIDi;str1.Format(%02X,data);str+=str1;m_list.SetItemText(JustnowIt

30、em,4,str);m_list.SetItemText(JustnowItem,6,Extended);elsefor(i=0;iDataLen);m_list.SetItemText(JustnowItem,7,str);str=;for(i=0;iDataLen;i+)data=sendbuf-Datai;str1.Format(%02X,data);str+=str1+ ;data1=str;m_list.SetItemText(JustnowItem,8,str);m_list.Scroll(size); /发送信息列表显示完毕UINT CDemoCANDlg:ReceiveThre

31、ad(LPVOID v)CDemoCANDlg *dlg=(CDemoCANDlg*) AfxGetApp()-GetMainWnd();int k=0;while(1)int NumValue;int i;VCI_CAN_OBJ pCanObj200;CString strbuf200,str1;int num=0;int reID=0;CSize size;unsigned int JustnowItem;DWORD ReceivedID;size.cx=0;size.cy=50;CString str;int Len=0;char ad16=0;for(int kCanIndex=0;k

32、CanIndexm_DevType,dlg-m_DevIndex,kCanIndex,pCanObj,200,0);/接收信息列表显示k+;CString strTime;SYSTEMTIME systime; GetLocalTime(&systime); strTime.Format(%02d:%02d:%02d:%03d, systime.wHour,systime.wMinute,systime.wSecond,systime.wMilliseconds); for(num=0;numm_list.DeleteAllItems();nextrow=0;ReceivedID=pCanOb

33、jnum.ID;/str.Format(%d,kCanIndex);str.Format(%08X,ReceivedID);reID=intcstring(str);/*sprintf(ad,%d,reID);AfxMessageBox(ad);sprintf(ad,%d,ID_val);AfxMessageBox(ad);*/if(ID_val=0|reID=ID_val)str.Format(%d,nextrow);JustnowItem=dlg-m_list.InsertItem(nextrow,str);str=;for(i=0;im_list.ItemColorFlagnextrow

34、=2;elsedlg-m_list.ItemColorFlagnextrow=0;nextrow+;dlg-m_list.SetItemText(JustnowItem,1,strTime);str.Format(%d,kCanIndex);dlg-m_list.SetItemText(JustnowItem,2,str);dlg-m_list.SetItemText(JustnowItem,3,接收);str=;if(pCanObjnum.RemoteFlag)=1)dlg-m_list.SetItemText(JustnowItem,5,Remote);elsedlg-m_list.Set

35、ItemText(JustnowItem,5,数据);if(pCanObjnum.ExternFlag)=1)ReceivedID=pCanObjnum.ID;str1.Format(%08X,ReceivedID);dlg-m_list.SetItemText(JustnowItem,4,str1);/ID信息dlg-m_list.SetItemText(JustnowItem,6,Extended);/else/标准帧ReceivedID=pCanObjnum.ID;str1.Format(%08X,ReceivedID);dlg-m_list.SetItemText(JustnowIte

36、m,4,str1);/ID信息dlg-m_list.SetItemText(JustnowItem,6,Standard);str.Format(%d,pCanObjnum.DataLen);/长度信息dlg-m_list.SetItemText(JustnowItem,7,str);str=;for(i=0;im_list.SetItemText(JustnowItem,8,str);if(StopFlag1=1&value_a!=1)/strcpy(zbuf1,str);sprintf(zbuf1,%s,str);if(value_a=1)if(strcmp(str,data1)=0)/dlg-m_list.ItemColorFlagnextrow=2;/str.Format(%d,nextrow);/JustnowItem=dlg-m_list.InsertItem(nextrow,str);dlg-m_list.SetItemText(JustnowItem,9,设置成功);AfxMessageBox(设置成功!);value_a=0;dlg-m_list.Scroll(size); /接收信息列表显示完毕Sleep(10);if(StopFlag=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论