彈上通信系統的LabVIEW與單片機的通信技術(shù)
③編譯C8051F340UsbInl.c文件,生成可被LabVIEW執行的C8051F340UsbInl.1sb。以VC++為例編譯CIN節點(diǎn)源文件。在VC++下創(chuàng )建C8051F340UsbInl.mak文件,內容如下:
在VC++下點(diǎn)擊new\project\make file,輸入文件名C8051F340UsbInl后點(diǎn)擊為OK和Finish按鈕。將C8051F340UsbInl.c和C8051F340U-sbInl.mak一起復制到C8051F340UsbInl文件夾下,重新打開(kāi)C8051F340UsbInl工作臺,按F7可生成C8051F340UsbInl.1sb文件。
④右擊選用的CIN圖標,選擇“加載代碼資源”并選擇C8051F340UsbInl.1sb文件。至此,一個(gè)基于CIN的讀USB端口1的VI創(chuàng )建完畢。
上面是一個(gè)利用CIN創(chuàng )建開(kāi)發(fā)USB驅動(dòng)的VI的步驟,實(shí)際開(kāi)發(fā)過(guò)程要麻煩很多,需要對設備及通信協(xié)議相當熟悉。因此,利用CIN實(shí)現USB通信受到一些限制。
2 調用DLL實(shí)現USB通信
開(kāi)發(fā)USB設備時(shí),不僅要面向USB控制器編程還要面向Windows編程(如果上位機用Windows操作系統),對不熟悉USB協(xié)議的用戶(hù)而言是個(gè)難題。為了縮短用戶(hù)開(kāi)發(fā)USB設備時(shí)間,生產(chǎn)廠(chǎng)家往往會(huì )把對USB設備進(jìn)行操作的函數封裝成DLL(Dynamic Link Library,動(dòng)態(tài)鏈接庫)提供給用戶(hù)。dll文件是一種可執行文件,允許程序共享執行特殊任務(wù)必需的代碼和其他資源,與語(yǔ)言無(wú)關(guān),可以被任何支持DLL的語(yǔ)言編寫(xiě)的應用程序訪(fǎng)問(wèn)。
Silicon Labs公司針對USB系列單片機為USB驅動(dòng)程序開(kāi)發(fā)提供了USBXpress開(kāi)發(fā)套件,其中的SiUSBXp.dll包含了23個(gè)函數。一個(gè)簡(jiǎn)單的USB通信程序,通常要用到SiUSBXp.dll中的SI_GetNumDevices、SI_SetTimeouts、SI_Open、SI_Read、SI_Write和SI_Close等幾個(gè)函數。在LabVIEW中調用dll文件有兩種方法,下面將分別介紹。
首先是利用CLF(調用庫函數節點(diǎn))節點(diǎn)調用SiUSBXp.dll,一般步驟如下:
①放置CLF節點(diǎn)并通過(guò)路徑加載dll文件。CLF節點(diǎn)位于“函數選板”一“互連接口”一“庫與可執行庫文件”子選板下。
②在加載的dll文件里選擇要用到的函數并進(jìn)行參數配置。根據USBXpress開(kāi)發(fā)手冊,對每一個(gè)被調用的函數配置合適的參數。
③配置參數完成之后,每一個(gè)函數就是一個(gè)VI,可在LabVIEW程序中調用。
其次是通過(guò)導入共享庫的方法調用SiUSBXp.dll。
導入共享庫的實(shí)質(zhì)是將dll文件中的函數自動(dòng)生成對應的VI。函數的每個(gè)參數可在頭文件包含以及預處理定義條件下在生成的VI中顯示出來(lái),與利用CLF相比較,省去了手動(dòng)配置參數的步驟。使用方法如下:新建一個(gè)VI,點(diǎn)擊“工具”一“導入共享庫”,選擇為用戶(hù)創(chuàng )建共享庫;點(diǎn)擊下一步,在“選擇共享庫及頭文件”頁(yè)面加載.dll文件和.h文件的路徑;點(diǎn)擊下一步,在預處理定義中添加預處理說(shuō)明(如果需要添加);點(diǎn)擊下一步,等待解析頭文件并選擇待轉換函數;點(diǎn)擊下一步,進(jìn)行項目庫設置配置,連續點(diǎn)擊下一步,直至所有選中的函數生成VI存放用戶(hù)庫里(默認狀態(tài))。調用時(shí),在“函數選板”一“用戶(hù)庫”一“SiUSBXp”,選擇在LabVIEW程序設計中用到的VI。
以上兩種調用DLL實(shí)現USB通信的方法具體操作不一樣,但本質(zhì)都是利用USB廠(chǎng)家提供的dll文件訪(fǎng)問(wèn)USB設備。圖1為L(cháng)abVIEW調用DLL實(shí)現一個(gè)簡(jiǎn)單USB通信的流程。
LabVIEW通過(guò)調用dll文件大大縮減了實(shí)現USB通信開(kāi)發(fā)工作量,但最關(guān)鍵也是最難的一步在于給函數配置參數。通常來(lái)講,DLL主要用C/C++等文本語(yǔ)言開(kāi)發(fā),有些參數類(lèi)型和LabVIEW不匹配,直接調用無(wú)法正常使用。為了解決這個(gè)問(wèn)題,需要用戶(hù)對參數進(jìn)行修改或者對原有的dll文件進(jìn)行二次開(kāi)發(fā),加大了工作量。
評論