




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/接口卡類型定義 #define VCI_PCI5121 1 #define VCI_PCI9810 2 #define VCI_USBCAN1 3 #define VCI_USBCAN2 4 #define VCI_PCI9820 5 #define VCI_CAN232 6 /CAN錯(cuò)誤碼 #define ERR_CAN_OVERFLOW 0x0001 /CAN控制器內(nèi)部FIFO溢出 #define ERR_CAN_ERRALARM 0x0002 /CAN控制器錯(cuò)誤報(bào)警 #define ERR_CAN_PASSIVE 0x0004 /CAN控制器消極錯(cuò)誤 #define ERR_CAN_LOSE 0x0008 /CAN控制器仲裁丟失 #define ERR_CAN_BUSERR 0x0010 /CAN控制器總線錯(cuò)誤 /通用錯(cuò)誤碼 #define ERR_DEVICEOPENED 0x0100 /設(shè)備已經(jīng)打開 #define ERR_DEVICEOPEN 0x0200 /打開設(shè)備錯(cuò)誤 #define ERR_DEVICENOTOPEN 0x0400 /設(shè)備沒有打開 #define ERR_BUFFEROVERFLOW 0x0800 /緩沖區(qū)溢出 #define ERR_DEVICENOTEXIST 0x1000 /此設(shè)備不存在 #define ERR_LOADKERNELDLL 0x2000 /裝載動(dòng)態(tài)庫失敗 #define ERR_CMDFAILED 0x4000 /執(zhí)行命令失敗錯(cuò)誤碼 #define ERR_BUFFERCREATE 0x8000 /內(nèi)存不足 /函數(shù)調(diào)用返回狀態(tài)值 #define STATUS_OK 1 #define STATUS_ERR 0 /1.ZLGCAN系列接口卡信息的數(shù)據(jù)類型。 typedef struct _VCI_BOARD_INFO USHORT hw_Version; USHORT fw_Version; USHORT dr_Version; USHORT in_Version; USHORT irq_Num; BYTE can_Num; CHAR str_Serial_Num20; CHAR str_hw_Type40; USHORT Reserved4; VCI_BOARD_INFO,*PVCI_BOARD_INFO; /2.定義CAN信息幀的數(shù)據(jù)類型。 typedef struct _VCI_CAN_OBJ UINT ID; UINT TimeStamp; BYTE TimeFlag; BYTE SendType; BYTE RemoteFlag;/是否是遠(yuǎn)程幀 BYTE ExternFlag;/是否是擴(kuò)展幀 BYTE DataLen; BYTE Data8; BYTE Reserved3; VCI_CAN_OBJ,*PVCI_CAN_OBJ; /3.定義CAN控制器狀態(tài)的數(shù)據(jù)類型。 typedef struct _VCI_CAN_STATUS UCHAR ErrInterrupt; UCHAR regMode; UCHAR regStatus; UCHAR regALCapture; UCHAR regECCapture; UCHAR regEWLimit; UCHAR regRECounter; UCHAR regTECounter; DWORD Reserved; VCI_CAN_STATUS,*PVCI_CAN_STATUS; /4.定義錯(cuò)誤信息的數(shù)據(jù)類型。 typedef struct _ERR_INFO UINT ErrCode; BYTE Passive_ErrData3; BYTE ArLost_ErrData; VCI_ERR_INFO,*PVCI_ERR_INFO; /5.定義初始化CAN的數(shù)據(jù)類型 typedef struct _INIT_CONFIG DWORD AccCode; DWORD AccMask; DWORD Reserved; UCHAR Filter; UCHAR Timing0; UCHAR Timing1; UCHAR Mode; VCI_INIT_CONFIG,*PVCI_INIT_CONFIG; DWORD _stdcall VCI_OpenDevice(DWORD DeviceType,DWORD DeviceInd,DWORD Reserved); DWORD _stdcall VCI_CloseDevice(DWORD DeviceType,DWORD DeviceInd); DWORD _stdcall VCI_InitCAN(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig); DWORD _stdcall VCI_ReadBoardInfo(DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO pInfo); DWORD _stdcall VCI_ReadErrInfo(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_ERR_INFO pErrInfo); DWORD _stdcall VCI_ReadCANStatus(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_STATUS pCANStatus); DWORD _stdcall VCI_GetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData); DWORD _stdcall VCI_SetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData); ULONG _stdcall VCI_GetReceiveNum(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd); DWORD _stdcall VCI_ClearBuffer(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd); DWORD _stdcall VCI_StartCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd); DWORD _stdcall VCI_ResetCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd); ULONG _stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,ULONG Len); ULONG _stdcall VCI_Receive(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pReceive,ULONG Len,INT WaitTime=-1) 以上為頭文件 然后你必須把對(duì)方的LIB文件導(dǎo)入庫引入工程 以下是對(duì)話框 其中實(shí)現(xiàn)收發(fā)void CTestDlg:OnButtonStartcan() / TODO: Add your control notification handler code here if(m_connect=0) return; if(VCI_StartCAN(m_devtype,m_devind,m_cannum)=1) ShowInfo( 啟動(dòng)成功 ,0); else CString str; str= 啟動(dòng)失敗 ; ShowInfo(str,2); theApp.TimerID=timeSetEvent(3,0,fnTimerProc,NULL,TIME_PERIODIC);/設(shè)置多媒體定時(shí)器。 SetTimer(1,55,NULL); void CTestDlg:OnButtonConnect() / TODO: Add your control notification handler code here if(m_connect=1) m_connect=0; Sleep(500); GetDlgItem(IDC_BUTTON_CONNECT)- SetWindowText( 連接 ); VCI_CloseDevice(m_devtype,m_devind); return; VCI_INIT_CONFIG init_config; int index,filtertype,mode,cannum; CString strcode,strmask,strtiming0,strtiming1,strtmp; char szcode20,szmask20,sztiming020,sztiming120; unsigned char sztmp4; DWORD code,mask,timing0,timing1; UpdateData(true); index=0;/設(shè)備索引好,0為PCI5121,m_ComboIndex.GetCurSel(); filtertype=filter_type;/濾波的方式,0為單濾波,1為雙濾波。m_ComboFilterType.GetCurSel(); mode=0;/m_ComboMode.GetCurSel();/0 正常模式 1,只聽模式。 cannum=can_number;/CAN 的路數(shù),0或1;m_ComboCANInd.GetCurSel(); strcode=Acode;/m_EditCode;代碼 strmask=Amask;/m_EditMask;驗(yàn)收屏蔽碼; if(braut=0)strtiming0= c0 ;strtiming1= 14 ; if(braut=1)strtiming0= c0 ;strtiming1= 1c ; if(braut=2)strtiming0= c1 ;strtiming1= 1c ; if(braut=3)strtiming0= c3 ;strtiming1= 1c ; if(braut=4)strtiming0= c4 ;strtiming1= 1c ; if(braut=5)strtiming0= c9 ;strtiming1= 1c ; if(braut=6)strtiming0= 18 ;strtiming1= 1c ; if(braut=7)strtiming0= 31 ;strtiming1= 1c ; UpdateData(false); strtmp=strcode; strcode.Format( %08s ,strtmp); strtmp=strmask; strmask.Format( %08s ,strtmp); strtmp=strtiming0; strtiming0.Format( %02s ,strtmp); strtmp=strtiming1; strtiming1.Format( %02s ,strtmp); strcpy(szcode,(LPCTSTR)strcode); strcpy(szmask,(LPCTSTR)strmask); strcpy(sztiming0,(LPCTSTR)strtiming0); strcpy(sztiming1,(LPCTSTR)strtiming1); if(strtodata(unsigned char*)szcode,sztmp,4,0)!=0) MessageBox( 驗(yàn)收碼數(shù)據(jù)格式不對(duì)! , 警告 ,MB_OK|MB_ICONQUESTION); return; code=(DWORD)sztmp0) 24)+(DWORD)sztmp1) 16)+(DWORD)sztmp2) 8)+ (DWORD)sztmp3); if(strtodata(unsigned char*)szmask,sztmp,4,0)!=0) MessageBox( 屏蔽碼數(shù)據(jù)格式不對(duì)! , 警告 ,MB_OK|MB_ICONQUESTION); return; mask=(DWORD)sztmp0) 24)+(DWORD)sztmp1) 16)+(DWORD)sztmp2) SetWindowText( 斷開 ); / AfxBeginThread(ReceiveThread,this);/開始線程; void CALLBACK fnTimerProc(UINT uID,UINT uMsg,DWORD dwUser,DWORD dw1,DWORD dw2)/多媒體定時(shí)器回掉函數(shù) CTestDlg * dlg; dlg=(CTestDlg *)(theApp.m_pMainWnd); dlg- receive();/調(diào)用接受函數(shù)。 sjtime+; if(sjtime%1=0) dlg- send(); int CTestDlg:receive() /接受函數(shù)。 CTestDlg * dlg; dlg=(CTestDlg *)(theApp.m_pMainWnd); CListBox *box=(CListBox *)dlg- GetDlgItem(IDC_LIST_INFO); VCI_CAN_OBJ frameinfo50; VCI_ERR_INFO errinfo; int len=1; int i=0; CString str,tmpstr; / Sleep(1); if(dlg- m_connect=0) return(0); len=VCI_Receive(dlg- m_devtype,dlg- m_devind,dlg- m_cannum,frameinfo,5,0); if(len m_devtype,dlg- m_devind,dlg- m_cannum,&errinfo); else for(i=0;i fp, %d ,dlg- receivetime); str= 接收到數(shù)據(jù)幀: ; if(frameinfoi.TimeFlag=0) tmpstr= 時(shí)間標(biāo)識(shí):無 ; else tmpstr.Format( 時(shí)間標(biāo)識(shí):%08x ,frameinfoi.TimeStamp); str+=tmpstr; tmpstr.Format( 幀ID:%08x ,frameinfoi.ID); str+=tmpstr; str+= 幀格式: ; if(frameinfoi.RemoteFlag=0) tmpstr= 數(shù)據(jù)幀 ; else tmpstr= 遠(yuǎn)程幀 ; str+=tmpstr; str+= 幀類型: ; if(frameinfoi.ExternFlag=0) tmpstr= 標(biāo)準(zhǔn)幀 ; else tmpstr= 擴(kuò)展幀 ; str+=tmpstr; / box- InsertString(box- GetCount(),str);/不顯示否則來不及 fprintf(dlg- fp, %s ,str); if(frameinfoi.RemoteFlag=0)/若是數(shù)據(jù)就接受數(shù)據(jù) str= 數(shù)據(jù): ; if(frameinfoi.DataLen 8) frameinfoi.DataLen=8; for(int j=0;j m_Section); /LeaveCriticalSection(&(dlg- m_Section); / box- InsertString(box- GetCount(),str);/不顯示否則來不及 fprintf(dlg- fp, %sn ,str);/將收到的數(shù)據(jù)放到文件中。 if(frameinfoi.RemoteFlag!=0) str= 遠(yuǎn)程幀 ; fprintf(dlg- fp, %sn ,str); dlg- receivetime+;/receive 次數(shù)。 box- SetCurSel(box- GetCount()-1); return(1); void CTestDlg:send() if(m_connect=0) return; VCI_CAN_OBJ frameinfo; char szFrameID9; unsigned char FrameID4=0,0,0,0; memset(szFrameID, 0 ,9); unsigned char Data8; / char szData25; BYTE datalen=0;/ int i=0; memcpy(&szFrameID0,(LPCTSTR)sendid,8);/注意這種將CString 類型轉(zhuǎn)化位char的方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 尊重的心理課件圖片
- 27 必修2 第四單元 第23講 人類遺傳病及遺傳系譜分析
- 尊重兒童課件下載
- 課文囚歌教學(xué)課件
- 車輛轉(zhuǎn)讓與二手車交易稅費(fèi)減免合作協(xié)議
- 車輛借用與租賃押金合同范本
- 完美離婚協(xié)議書范本及子女撫養(yǎng)財(cái)產(chǎn)分割方案
- 數(shù)學(xué)文化七巧板教學(xué)課件
- 模塊化建筑設(shè)計(jì)考核試卷
- 家電行業(yè)客戶服務(wù)滿意度提升的顧客旅程優(yōu)化考核試卷
- 思政課說課稿課件
- 殯葬技能人才隊(duì)伍職業(yè)化建設(shè)實(shí)施狀況與發(fā)展規(guī)劃
- 直流回路的問題查找及直流回路接地的查找方法 直流電源車的使用及其維護(hù)
- LY/T 2450-2015無花果栽培技術(shù)規(guī)程
- JJF 1105-2018觸針式表面粗糙度測(cè)量儀校準(zhǔn)規(guī)范
- GB/T 7723-2002固定式電子秤
- GB/T 19844-2005鋼板彈簧
- GB/T 14486-2008塑料模塑件尺寸公差
- 特種設(shè)備管理臺(tái)帳(5個(gè)臺(tái)賬)
- 地裂縫、地面塌陷地質(zhì)災(zāi)害危險(xiǎn)性評(píng)估課件
- 魚丸生產(chǎn)加工項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論