




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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錯誤碼 #define ERR_CAN_OVERFLOW 0x0001 /CAN控制器內(nèi)部FIFO溢出 #define ERR_CAN_ERRALARM 0x0002 /CAN控制器錯誤報警 #define ERR_CAN_PASSIVE 0x0004 /CAN控制器消極錯誤 #define ERR_CAN_LOSE 0x0008 /CAN控制器仲裁丟失 #define ERR_CAN_BUSERR 0x0010 /CAN控制器總線錯誤 /通用錯誤碼 #define ERR_DEVICEOPENED 0x0100 /設(shè)備已經(jīng)打開 #define ERR_DEVICEOPEN 0x0200 /打開設(shè)備錯誤 #define ERR_DEVICENOTOPEN 0x0400 /設(shè)備沒有打開 #define ERR_BUFFEROVERFLOW 0x0800 /緩沖區(qū)溢出 #define ERR_DEVICENOTEXIST 0x1000 /此設(shè)備不存在 #define ERR_LOADKERNELDLL 0x2000 /裝載動態(tài)庫失敗 #define ERR_CMDFAILED 0x4000 /執(zhí)行命令失敗錯誤碼 #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;/是否是遠程幀 BYTE ExternFlag;/是否是擴展幀 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.定義錯誤信息的數(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) 以上為頭文件 然后你必須把對方的LIB文件導(dǎo)入庫引入工程 以下是對話框 其中實現(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( 啟動成功 ,0); else CString str; str= 啟動失敗 ; ShowInfo(str,2); theApp.TimerID=timeSetEvent(3,0,fnTimerProc,NULL,TIME_PERIODIC);/設(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;驗收屏蔽碼; 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( 驗收碼數(shù)據(jù)格式不對! , 警告 ,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ù)格式不對! , 警告 ,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ù) 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= 時間標識:無 ; else tmpstr.Format( 時間標識:%08x ,frameinfoi.TimeStamp); str+=tmpstr; tmpstr.Format( 幀ID:%08x ,frameinfoi.ID); str+=tmpstr; str+= 幀格式: ; if(frameinfoi.RemoteFlag=0) tmpstr= 數(shù)據(jù)幀 ; else tmpstr= 遠程幀 ; str+=tmpstr; str+= 幀類型: ; if(frameinfoi.ExternFlag=0) tmpstr= 標準幀 ; else tmpstr= 擴展幀 ; 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= 遠程幀 ; 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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新疆客運資格證實操試題
- 2025年創(chuàng)新創(chuàng)業(yè)管理專業(yè)研究生入學考試試題及答案
- 未來的生活想象想象并描寫細節(jié)類作文(6篇)
- 小品(賣藥之八仙過海)劇本
- 某超市講解服務(wù)制度
- 2025年柔性制造單元(FMC)項目提案報告
- 運動場館設(shè)計與運營合作協(xié)議
- 2025年壓縮天然氣項目申請報告
- 2025年電梯司機(中級)電梯設(shè)備維護保養(yǎng)與故障排除測評試題
- 2025年物流師(初級)職業(yè)技能鑒定試卷物流企業(yè)人力資源戰(zhàn)略規(guī)劃
- 地裂縫、地面塌陷地質(zhì)災(zāi)害危險性評估課件
- 電力拖動自動控制系統(tǒng)-運動控制系統(tǒng)(第5版)習題答案
- 禾川x3系列伺服說明書
- 細胞生物學(全套1047張課件)
- 魚丸生產(chǎn)加工項目可行性研究報告
- 架空乘人裝置專項設(shè)計(一采區(qū)運輸下山)
- 六年級下冊“快樂讀書吧”練習題試題及答案
- ★教導(dǎo)型組織-行動管理模式(三)
- 朗文英語2B英語復(fù)習資料
- 固定資產(chǎn)報廢情況說明
- 精裝修驗房流程及標準(課堂PPT)
評論
0/150
提交評論