版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第4章 ican主站函數(shù)庫及其使用4.1 主站卡類型可作為 ican 網(wǎng)絡(luò)主站卡的 zlgcan系列接口卡類型如下:設(shè)備名稱設(shè)備類型號pci51211pci98102usbcan13usbcan24pci98205pci51107canlite(canmini)8isa96209isa542010pc104-can11dnp981013pci984014pc104-can2154.2函數(shù)調(diào)用錯誤碼名稱值描述icanok0x00000000操作正確icanerr_funcnotexist0x00000001功能碼不存在icanerr_srcnotexist0x00000002資源不存在icane
2、rr_cmdnotsupport0x00000003命令不支持icanerr_cmdillegal0x0000004參數(shù)非法icanerr_connectnotexist0x00000005連接不存在icanerr0x000000f1不確定的錯誤icanerr_using0x000000f3資源被占用icanerr_setcan0x000000f4打開設(shè)備失敗或初始化 can 失敗icanerr_srvstarted0x000000f5服務(wù)已啟動,無法進行此項操作icanerr_timeout0x000000f6操作超時icanerr_itemexist0x000000f7目標(biāo)已經(jīng)存在4.3數(shù)
3、據(jù)結(jié)構(gòu)說明4.3.1routecfg此數(shù)據(jù)結(jié)構(gòu)用來設(shè)置初始化 ican 網(wǎng)絡(luò)所需要的一些必要參數(shù),聲明如下:typedef struct _tagroutecfgint icardtype;/can 接口卡類型int icardind;/can 接口卡序號int icanind;/can 路數(shù)word wcanbaud;/0x311c - 10k,0x041c - 100k,0x001c - 500kword wmasterid;/ican 網(wǎng)絡(luò)主站 idint imastercycle;/ican 網(wǎng)絡(luò)主站定時循環(huán)參數(shù),范圍 1 到 255,單位為 10msroutecfg;4.4ican
4、網(wǎng)絡(luò)控制函數(shù)說明4.4.1mgr_addroute描述調(diào)用此函數(shù)添加一個新的 ican 網(wǎng)絡(luò)到 ican 系統(tǒng)中。dword _stdcall mgr_addroute(routecfg cfg,handle* phroute);參數(shù)cfg所要添加的 ican 網(wǎng)絡(luò)初始化參數(shù)。phroute新 ican 網(wǎng)絡(luò)句柄指針,用以存儲返回的新 ican 網(wǎng)絡(luò)句柄。 返回值正確為 icanok,否則為錯誤碼。4.4.2mgr_delroute描述調(diào)用此函數(shù)從 ican 系統(tǒng)中刪除一個 ican 網(wǎng)絡(luò)。dword _stdcall mgr_delroute(handle hroute);參數(shù)hroute所
5、要刪除的 ican 網(wǎng)絡(luò)句柄。 返回值正確為 icanok,否則為錯誤碼。4.4.3mgr_delallroute描述調(diào)用此函數(shù)刪除 ican系統(tǒng)中所有 ican 網(wǎng)絡(luò)。dword _stdcall mgr_delallroute();參數(shù) 無。返回值正確為 icanok,否則為錯誤碼。4.4.4mgr_startsys描述調(diào)用此函數(shù)啟動 ican系統(tǒng)。dword _stdcall mgr_startsys();參數(shù)無。返回值正確為 icanok,否則為錯誤碼。4.4.5mgr_stopsys描述調(diào)用此函數(shù)停止 ican系統(tǒng)。dword _stdcall mgr_stopsys();參數(shù) 無。
6、返回值 正確為 icanok,否則為錯誤碼。4.4.6mgr_isstarted描述調(diào)用此函數(shù)判斷 ican 系統(tǒng)是否已經(jīng)啟動。dword _stdcall mgr_stopsys();參數(shù) 無。返回值 已經(jīng)啟動為 1,否則為 0。4.5ican 網(wǎng)絡(luò)函數(shù)說明4.5.1route_addslave描述調(diào)用此函數(shù)往指定 ican 網(wǎng)絡(luò)中添加一個從站。dword _stdcall route_addslave(handle hroute,dword slaveid,handle* phslave);參數(shù)hroute指定要添加從站的 ican 網(wǎng)絡(luò)句柄。slaveid要添加的從站 id。phslav
7、e新從站句柄指針,用以存儲返回的新從站句柄。返回值正確為 icanok,否則為錯誤碼。4.5.2route_delslave描述調(diào)用此函數(shù)從指定 ican 網(wǎng)絡(luò)中刪除一個從站。dword _stdcall route_delslave(handle hroute,handle hslave);參數(shù)hroute指定要刪除從站的 ican 網(wǎng)絡(luò)句柄。phslave要刪除的從站句柄。 返回值正確為 icanok,否則為錯誤碼。4.5.3route_delallslave描述調(diào)用此函數(shù)從指定 ican 網(wǎng)絡(luò)中刪除所有從站。dword _stdcall route_delallslave(handle
8、hroute);參數(shù)hroute指定要刪除從站的 ican 網(wǎng)絡(luò)句柄。 返回值正確為 icanok,否則為錯誤碼。4.5.4route_setconfig描述調(diào)用此函數(shù)設(shè)置指定 ican 網(wǎng)絡(luò)配置參數(shù)。dword _stdcall route_setconfig(handle hroute,routecfg cfg);參數(shù)hroute指定 ican 網(wǎng)絡(luò)句柄。cfg配置參數(shù)。 返回值正確為 icanok,否則為錯誤碼。4.5.5route_getconfig描述調(diào)用此函數(shù)獲取指定 ican 網(wǎng)絡(luò)配置參數(shù)。dword _stdcall route_getconfig(handle hroute,
9、routecfg* pcfg);參數(shù)hroute指定 ican 網(wǎng)絡(luò)句柄。pcfg配置參數(shù)指針,存儲返回的配置參數(shù)。返回值正確為 icanok,否則為錯誤碼。4.5.6route_getslavebyid描述調(diào)用此函數(shù)獲取指定 ican 網(wǎng)絡(luò)從站句柄。dword _stdcall route_getslavebyid(handle hroute,dword slaveid,handle* phslave);參數(shù)hroute指定 ican 網(wǎng)絡(luò)句柄。slaveid指定從站 id。phslave從站句柄指針,存儲返回的從站句柄。 返回值正確為 icanok,否則為錯誤碼。4.5.7route_co
10、nnectallslaveasync描述調(diào)用此函數(shù) 連接所有已 添加從站, 此操作為異 步操作,調(diào) 用此函數(shù)后 可 調(diào) 用slave_isconnected 函數(shù)來查詢從站是否已連接。dword _stdcall route_connectallslaveasync(handle hroute);參數(shù)hroute指定 ican 網(wǎng)絡(luò)句柄。 返回值正確為 icanok,否則為錯誤碼。4.6ican 網(wǎng)絡(luò)控制從站函數(shù)說明4.6.1slave_connect描述調(diào)用此函數(shù)連接指定從站。dword _stdcall slave_connect(handle hslave);參數(shù)hslave指定從站句柄
11、。 返回值正確為 icanok,否則為錯誤碼。4.6.2slave_disconnect描述調(diào)用此函數(shù)斷開指定從站。dword _stdcall slave_disconnect(handle hslave);參數(shù)hslave指定從站句柄。 返回值正確為 icanok,否則為錯誤碼。4.6.3slave_isconnected描述調(diào)用此函數(shù)判斷指定從站是否已經(jīng)連接。dword _stdcall slave_isconnected(handle hslave);參數(shù)hslave指定從站句柄。 返回值正確為 icanok,否則為錯誤碼。4.6.4slave_getid描述調(diào)用此函數(shù)獲取指定從站 i
12、d。dword _stdcall slave_getid(handle hslave);參數(shù)hslave指定從站句柄。 返回值正確為 icanok,否則為錯誤碼。4.6.5slave_getiodatalen描述調(diào)用此函數(shù)獲取指定從站 io 數(shù)據(jù)長度。dword _stdcall slave_getiodatalen(handle hslave,dword *pdi,dword* pdo,dword*pai,dword* pao);參數(shù)hslave 指定從站句柄。 pdi存儲 di 數(shù)據(jù)長度。pdo存儲 do 數(shù)據(jù)長度。pai存儲 ai 數(shù)據(jù)長度。pao存儲 ao 數(shù)據(jù)長度。 返回值正確為 i
13、canok,否則為錯誤碼。4.6.6slave_getaidata描述調(diào)用此函數(shù)獲取指定從站 ai 數(shù)據(jù)。dword _stdcall slave_getaidata(handle hslave,byte* precbuf,dword* preclen);參數(shù)hslave 指定從站句柄。 precbuf接收數(shù)據(jù)緩沖區(qū)指針,接收緩沖區(qū)大小必須大于或等于 ai數(shù)據(jù)字節(jié)長度。preclen輸入為接收緩沖區(qū)長度,輸出為接收到的數(shù)據(jù)長度。 返回值正確為 icanok,否則為錯誤碼。4.6.7slave_getdidata描述調(diào)用此函數(shù)獲取指定從站 di 數(shù)據(jù)。dword _stdcall slave_g
14、etdidata(handle hslave,byte* precbuf,dword* preclen);參數(shù)hslave 指定從站句柄。 precbuf接收數(shù)據(jù)緩沖區(qū)指針,接收緩沖區(qū)大小必須大于或等于 di數(shù)據(jù)字節(jié)長度。preclen輸入為接收緩沖區(qū)長度,輸出為接收到的數(shù)據(jù)長度。 返回值正確為 icanok,否則為錯誤碼。4.6.8slave_getdata描述調(diào)用此函數(shù)從指定從站接收數(shù)據(jù)。dword _stdcall slave_getdata(handle hslave,dword sourceid,byte* precbuf,dword*preclen);參數(shù)hslave指定從站句柄。
15、sourceid資源 id。di 最大長度為 32 字節(jié),資源 id 范圍 0x00 到 0x1f ;ai 最大長度為 32 字節(jié), 資源 id 范圍 0x40 到 0x5f。precbuf 接收數(shù)據(jù)緩沖區(qū)指針。preclen輸入為接收緩沖區(qū)長度,輸出為接收到的數(shù)據(jù)長度。 返回值正確為 icanok,否則為錯誤碼。4.6.9slave_senddata描述調(diào)用此函數(shù)向指定從站發(fā)送數(shù)據(jù)。dword _stdcall slave_senddata(handle hslave,dword sourceid,byte* psendbuf,dwordsendlen); 參數(shù) hslave指定從站句柄。s
16、ourceid資源 id。do 最大長度為 32 字節(jié),資源 id 范圍 0x20 到 0x3f ;ao 最大長度為 32 字 節(jié),資源 id 范圍 0x60 到 0x7f。psendbuf 發(fā)送數(shù)據(jù)緩沖區(qū)。 sendlen 發(fā)送數(shù)據(jù)長度。 返回值正確為 icanok,否則為錯誤碼。4.6.10 slave_setconfig描述調(diào)用此函數(shù)對從站進行配置操作。此函數(shù)在當(dāng)前版本中可不用。dword stdcall slave_setconfig(handle hslave,dword sourceid,dword* psubsourceid,byte* psendbuf,dword sendle
17、n);參數(shù)hslave 指定從站句柄。 sourceid資源 id。psubsourceid資源 id 子索引號指針,為 null 時表示沒有子索引號。psendbuf發(fā)送數(shù)據(jù)緩沖區(qū)。sendlen發(fā)送數(shù)據(jù)長度。 返回值正確為 icanok,否則為錯誤碼。注:配置資源 id 列表,ro 表示只讀,r/w 表示可讀寫sourceidbytesfunctionattribdescriptionsubsourceid0xe00xe12vendor idro廠商代碼,固定值-0xe20xe32product typero產(chǎn)品類型,固定值-0xe40xe52product codero產(chǎn)品型號,固定值-
18、0xe60xe72hardware versionro產(chǎn)品硬件版本-0xe80xe92firmware versinro產(chǎn)品固件版本-0xea0xed4serial numberro4 字節(jié)產(chǎn)品 sn 號碼-0xee1mac idr/w本機節(jié)點的 id 編號0xf51cyclicmasterr/w主站通訊定時參數(shù)時間單位為:10ms-0xf71master mac idr/w主站 mac id-0xfa0xff6reserve-4.6.11 slave_getconfig描述 調(diào)用此函數(shù)獲取從站配置。dword stdcall slave_getconfig(handle hslave,dwo
19、rd sourceid,dword* psubsourceid,byte* precbuf,dword reclen);參數(shù)hslave 指定從站句柄。 sourceid 資源 id。psubsourceid 資源 id 子索引號。 precbuf 接收數(shù)據(jù)緩沖區(qū)。reclen 接收數(shù)據(jù)長度。 返回值正確為 icanok,否則為錯誤碼。4.6.12 slave_setcycle描述設(shè)置從站的定時循環(huán)周期,默認(rèn)為 routecfg.imastercycle。dword _stdcall slave_setcycle(handle hslave,dword dwcycle);參數(shù)hslave 指定
20、從站句柄。 dwcycle定時循環(huán)周期,范圍 1 到 255,單位 10ms。 返回值正確為 icanok,否則為錯誤碼。4.6.13 slave_getcycle描述獲取從站的定時循環(huán)周期。dword _stdcall slave_getcycle(handle hslave);參數(shù) hslave 指定從站句柄。 返回值 返回從站的定時循環(huán)周期。4.7 系統(tǒng)操作流程如圖4.1所示:圖4.1 系統(tǒng)操作流程第5章 ican綜合教學(xué)實驗平臺軟件設(shè)計5.1 建立單文檔工程并添加模塊z5.1.1 建立單文檔工程首先,啟動 vc,選擇菜單“file”-“new”菜單項,此時彈出新建工程對話框,如圖 5.
21、1所示:圖 5.1 創(chuàng)建工程選擇 mfc appwizard (exe),設(shè)置好工程名稱以及路徑,然后點擊“ok”按鈕,在彈出頁 面中選擇“single document”,接下來一直點擊彈出頁面中的“next”按鈕到最后一個頁面點擊 “finish”按鈕,成功創(chuàng)建工程,如圖 5.2 所示:圖 5.2 創(chuàng)建工程編譯運行如圖5.3所示:圖 5.3 編譯5.1.2 添加2404模塊依次點擊resourceview-dialog,在其上點右鍵 insert dialog,結(jié)果如圖5.4 圖5.5所示:圖5.4 添加模塊 圖5.5 添加模塊我們修改下2404對話框的屬性和界面,如圖5.6所示:圖5.6
22、 修改界面好了,這樣我們就把2404模塊的界面設(shè)計好了,下面先介紹怎么調(diào)用這個對話框,在2404對話框上點擊右鍵,點classwizard來注冊這個類,依次按圖5.7,圖5.8,圖5.9,圖5.10設(shè)置圖5.7 注冊圖5.8 注冊圖5.9 注冊圖5.10 注冊在圖5.10上點ok,注冊完成。5.1.3 添加菜單并響應(yīng)消息下面在主窗口中添加一個選項,依次點擊resourceview-menu-idr_mainframe 如圖5.11所示:圖5.11 添加菜單接著點擊 編輯 在下拉列表中添加一個選項,如圖5.12所示圖5.12 添加菜單為了讓它能響應(yīng)消息,我們在其上點 右鍵 classwizard
23、,在彈出的對話框中選擇messagescommandadd fuction,在彈出的對話框中點ok,然后edit code,進入函數(shù)編輯。依次如下圖5.13 圖5.14 圖5.15 圖5.16 圖5.17所示: 圖5.13 編輯圖5.14 編輯圖5.15 編輯圖5.16 編輯圖5.17 編輯下面我們來添加消息響應(yīng)函數(shù),首先在mainfrm.cpp中包涵ican2404.h頭文件#include stdafx.h#include dialog1.h#include mainfrm.h#include ican2404.h然后在函數(shù)on2404添加如下代碼:void cmainframe:on24
24、04() ican2404 *pdlg2404=new ican2404;pdlg2404-create(idd_ican2404,this);pdlg2404-showwindow(sw_show);好了,編譯并運行,效果如圖5.18,圖5.19所示:圖5.18 運行圖5.19 運行5.1.4 2404模塊基本功能的實現(xiàn)以上運行后2404模塊只有一個框架,沒有實現(xiàn)功能,下面我們就一步步添加。首先添加 ican 主站函數(shù)庫到工程,接下來要把ican主站函數(shù)庫添加到工程中,先把文件 icandllheader.h,icandll.lib,icandll.dll,controlcan.dll 和文
25、件夾 kerneldlls 一起拷貝到工程目錄中,如圖 5.20 所示:圖 5.20 添加文件然后在vc 中把工作視圖切換到“fileview”,導(dǎo)入頭文件,如圖5.21圖5.22: 圖5.21 導(dǎo)入文件 圖5.22 導(dǎo)入文件重復(fù)以上操作彈出添加文件對話框,文件類型 選擇“l(fā)ibrary files (.lib)”, 添加文件。在視圖“fileview”中,雙擊類文件名稱ican2404.cpp和mainfrm.cpp在文件頭部添加如下:#include icandllheader.h并在ican2404.cpp中添加:#include mainfrm.h轉(zhuǎn)到resourceview視圖,如同
26、添加2404選項一樣在menu中添加“啟動系統(tǒng)”選項,并注冊和增加函數(shù),點確定,如圖5.23:圖5.23 編輯函數(shù)為cmainframe增加如下公共變量,handle m_hslave;/存儲從站句柄byte m_bstarted;/標(biāo)志是否已經(jīng)啟動系統(tǒng)handle m_hroute;/存儲 ican 網(wǎng)絡(luò)句柄在oncreate中初始化:m_bstarted=0;bt搜索m_hroute=invalid_handle_value;m_hslave=invalid_handle_value;編輯函數(shù)onstartsys如下:void cmainframe:onstartsys() if(m_bs
27、tarted)mgr_stopsys();mgr_delallroute();m_hroute=invalid_handle_value;m_hslave=invalid_handle_value;m_bstarted=0;elseroutecfg cfg;cfg.icanind=0;cfg.icardind=0;cfg.icardtype=vci_usbcan2;cfg.imastercycle=10;cfg.wcanbaud=0x001c;cfg.wmasterid=0;mgr_addroute(cfg,&m_hroute);if (mgr_startsys()!=icanok)messa
28、gebox(系統(tǒng)啟動失??!n請檢查硬件連接!);elsem_bstarted=1;在ican2404.h中添加如下公共變量:byte m_started;handle m_slave;handle m_route;初始化變量:m_slave=(cmainframe*)afxgetmainwnd()-m_hslave;m_started=(cmainframe*)afxgetmainwnd()-m_bstarted;轉(zhuǎn)到resourceview視圖,選擇2404對話框,雙擊對話框界面上的“上線”按鈕,彈出添加點擊函數(shù)提示框,如圖 5.23 所示設(shè)置:圖 5.23 添加函數(shù)點“ok”按鈕,確認(rèn)添加,此時“ican2404.cpp”文件會自動打開并定位到剛才添加的函數(shù)位置void ican2404:online() if(slave_connect(m_slav
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度辦公場地租賃合同標(biāo)準(zhǔn)版3篇
- 2025年度美發(fā)店教育培訓(xùn)股份入股合同
- 課題申報參考:明代八景圖畫史料的搜集研究
- 課題申報參考:面向資源受限場景的語音情緒狀態(tài)學(xué)習(xí)研究
- 課題申報參考:面向復(fù)雜網(wǎng)絡(luò)環(huán)境的AIGC內(nèi)容標(biāo)識機制研究
- 2025年度個人網(wǎng)絡(luò)虛擬商品購買合同示范文本3篇
- 二零二五年度美容美發(fā)行業(yè)美容儀器研發(fā)與銷售合同2篇
- 2025年度個人私有房屋購買合同(精裝修房屋智能安防系統(tǒng)版)4篇
- 二零二五版美容院養(yǎng)生項目開發(fā)與推廣合同4篇
- 2025年度個人與公司間商業(yè)借款合同標(biāo)準(zhǔn)版4篇
- 經(jīng)顱磁刺激增強定神狀態(tài)的研究
- 印度與阿拉伯的數(shù)學(xué)
- 會陰切開傷口裂開的護理查房
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 實驗報告·測定雞蛋殼中碳酸鈣的質(zhì)量分?jǐn)?shù)
- 部編版小學(xué)語文五年級下冊集體備課教材分析主講
- 電氣設(shè)備建筑安裝施工圖集
- 《工程結(jié)構(gòu)抗震設(shè)計》課件 第10章-地下建筑抗震設(shè)計
- 公司法務(wù)部工作細則(草案)
- 第18課《文言文二則 鐵杵成針》(學(xué)習(xí)任務(wù)單)- 四年級語文下冊部編版
- 《功能材料概論》期末考試試卷及參考答案2023年12月
評論
0/150
提交評論