• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    PMAC運(yùn)動控制軟件開發(fā)中動態(tài)鏈接庫的加載方法①

    2012-09-27 14:26:12鄒麗梅
    關(guān)鍵詞:調(diào)用對話框程序

    郭 波, 鄒麗梅

    (武夷學(xué)院,福建 武夷山 354300)

    0 引言

    Turbo PMAC Clipper控制器(Turbo PMAC2 Eth-Lite)是美國Delta Tau公司推出的PMAC開放式多軸運(yùn)動控制器家族的一員.其具備全部Turbo PMAC特征,提供最多32軸獨(dú)立閉環(huán)控制[1],主要用于數(shù)控機(jī)電產(chǎn)品開發(fā).本文開發(fā)用數(shù)控雙軸實驗臺采用上位機(jī)串口連接CLIPPER作為控制端完成信息處理;執(zhí)行機(jī)構(gòu)為日本富士伺服驅(qū)動器與電機(jī)(200W);機(jī)械本體采用X-Y十字滑臺;由伺服電機(jī)編碼器形成模擬輸出,速度環(huán)閉環(huán)控制.在Y軸安裝Renishaw RGH41光柵讀數(shù),僅用于測定位置.實驗軟件需要完成實時控制、反饋和顯示等多種控制功能,基本思想是建立一個對話框程序,分區(qū)域成組布置靜態(tài)文本控件、復(fù)選控件及按鈕控件,分別實現(xiàn)反饋位置速度數(shù)據(jù)、標(biāo)識限位原點(diǎn)、微動或增量運(yùn)動、回零運(yùn)動及執(zhí)行運(yùn)動程序各模塊功能.PMAC提供了編程所需的動態(tài)鏈接庫,封裝了驅(qū)動、函數(shù)和對話框等資源,進(jìn)行實驗軟件編程的基礎(chǔ)是正確加載PMAC動態(tài)庫.

    1 動態(tài)鏈接庫一般加載方法分析

    PComm32 Pro Library是PMAC為在Windows系統(tǒng)下開發(fā)人機(jī)界面提供的動態(tài)鏈接庫.動態(tài)鏈接庫的安裝需要軟件PComm32PRO,該通訊驅(qū)動程序為建立PMAC應(yīng)用程序的開發(fā)工具,可設(shè)定和使用多于400個功能函數(shù)[2].PComm32PRO 包括以下5個文件 :(1)PCOMM32.DLL是32位的動態(tài)連接庫;(2)PMACSERVER.EXE是一個服務(wù)器應(yīng)用程序,負(fù)責(zé)傳遞全局變量;(3)PMAC ISA,SER,PCI or USB.SYS是 Windows 98/ME/2000/XP核心驅(qū)動.動態(tài)庫的加載就是圍繞這幾個文件展開.

    動態(tài)庫PCOMM32的加載分為隱式調(diào)用與顯式鏈接兩個大類.不論哪類方法,均應(yīng)在正確安裝PComm32PRO軟件后實施,否則在進(jìn)行工程鏈接時將報錯.

    1.1 隱式調(diào)用

    隱式調(diào)用方法通過導(dǎo)入lib庫中的函數(shù),使工程能直接調(diào)用函數(shù)名,具有操作步驟少,調(diào)用速度快等優(yōu)點(diǎn),需要開發(fā)技術(shù)人員對庫中函數(shù)有一定的了解,如知道函數(shù)名稱、用途及返回值的類型等.其步驟應(yīng)實施如下:

    (1)設(shè)定庫函數(shù)的鏈接路徑:

    在新建工程的解決方案資源管理器中右擊工程名,選擇屬性.在彈出的屬性頁窗口選擇鏈接器下的輸入,在附加依賴項右邊填入C:windowssystem32pcomm32.lib.

    (2)在工程頭文件全局作用域中把需要的函數(shù)導(dǎo)入,如導(dǎo)入OpenPmacDevice函數(shù)為:extern"C"_declspec(dllimport)BOOL_stdcall OpenPmac-Device(DWORD dwDevice);

    (3)可以在需要的時候直接調(diào)用該函數(shù)名并且傳遞參數(shù),如OpenPmacDevice(0).

    1.2 顯式鏈接

    VC顯式鏈接方式分為兩種:手動加載與頭文件包含.

    手動加載占用資源少,加載速度快,函數(shù)隨用隨調(diào),但加載步驟最復(fù)雜.

    (1)在工程中,應(yīng)在使用函數(shù)之前加載動態(tài)鏈接庫:1)定義變量HMODULE pcdll;2)加載動態(tài)鏈接庫 pcdll=::LoadLibrary(“Pcomm32.dll”);

    (2)函數(shù)調(diào)用以O(shè)penPmacDevice為例:1)在.h的工程頭文件聲明類型OPENPMACDEVICE程序為typedef BOOL(CALLBACK*OPENPMACDEVICE)(DWORD dwDevice);2)在.cpp的工程源文件中定義類型變量OPENPMACDEVICE OpenPmac-Device,3)源文件中使用函數(shù)GetProcAddress來獲取函數(shù)在內(nèi)存中的地址,程序為OpenPmacDevice=OPENPMACDEVICE)GetProcAddress(pcdll,"OpenPmacDevice");4)函數(shù)需要時即可調(diào)用,如OpenPmacDevice(dwDevice);

    頭文件包含調(diào)用實質(zhì)上原理和手動加載相同,軟件PComm32PRO在安裝目錄下Include文件夾中將所有的函數(shù)分類聲明,調(diào)用方法很簡單,將該文件夾拷貝至工程的文件路徑下,在工程源文件中聲明#include“Runtime.h”,然后可以調(diào)用 Runtime.h中設(shè)定好的函數(shù)名.頭文件包含的使用看起來很簡單,但實際應(yīng)用中有幾個麻煩.(1)Include文件夾中各種頭文件相互包含交織在一起,難于清理分解;(2)任何文件位置錯誤或不存在均會鏈接報錯.

    以上加載的方法均要求開發(fā)者對C++語言開發(fā)有比較深入的基礎(chǔ),且對PMAC動態(tài)庫的函數(shù)有一定了解.

    2 動態(tài)庫加載中出現(xiàn)的問題及分析

    初學(xué)PMAC開發(fā)應(yīng)用軟件面對龐大的庫函數(shù),往往不知如何才能調(diào)用所需函數(shù).但根據(jù)PComm32PRO軟件所提供的例程myRuntimePmacTestNew發(fā)現(xiàn),該例程將常用的PMAC函數(shù)以手動加載的形式編寫進(jìn)myRuntime文件中,所以首先將這兩個文件myRuntime.h和myRuntime.cpp拷貝至工程目錄下,在工程中添加它們;接著在工程源文件中聲明#include“myRuntime.h”;最后在對話框初始化函數(shù)OnInitDialog()中調(diào)用頭文件的OpenRuntimeLink();即完成了動態(tài)庫加載工作.

    在Visual Studio 2008環(huán)境里編譯程序成功,可以調(diào)用PMAC的多數(shù)程序,如OpenPmacDevice()、ClosePmacDevice()、PmacDownload()、PmacSend-Line()、PmacGetResponse().這些常用函數(shù)在許多文獻(xiàn)中均有介紹其參數(shù)使用方法,軟件PComm32PRO的幫助文件更是有所有函數(shù)的全面說明,本文就不再贅述[3,4].

    程序編寫雖然鏈接通過,但調(diào)試時,卻出現(xiàn)了一個新的問題.正確調(diào)用PmacSelect()函數(shù)后,應(yīng)當(dāng)出現(xiàn)動態(tài)庫的選擇驅(qū)動器的對話框,但是原開發(fā)程序出現(xiàn)的對話框卻不能與在串口上的Clipper通訊,如圖 1,然而同樣的硬件環(huán)境中,PEWIN32PRO2卻可以通訊,如圖2所示.

    圖1 原開發(fā)程序無法檢測到COM1口Clipper

    圖2 PEWIN32PRO2可以檢測到COM1口Clipper

    分析該對話框是調(diào)用Pcomm32.dll庫內(nèi)資源而形成的,圖2標(biāo)題欄有一個標(biāo)識Pcomm Version:4.2.4.1,而因此判定應(yīng)當(dāng)是 Pcomm32.dll庫的版本過舊,且使用的Clipper為新的Turbo PMAC2型卡,使用舊的驅(qū)動不能通訊說得通.但新版的驅(qū)動屬于收費(fèi)軟件,代理商也不提供下載,為此只能另想辦法.在查閱資料的過程中,發(fā)現(xiàn)PMAC提供了另一種方法,即是使用PMACSERVER.EXE可以倒出編程需要的函數(shù).因為當(dāng)PEWIN32PRO2啟動時,進(jìn)程中就會調(diào)用 PMACSERVER.EXE,由此判定PMACSERVER.EXE的庫函數(shù)應(yīng)當(dāng)是最新可用的.

    3 從PMACSERVER.EXE倒出類實現(xiàn)動態(tài)庫加載

    PMACSERVER的軟件參考手冊描述了在VC6.0 的開發(fā)環(huán)境中倒出類的方法[2],Visual Studio 2008的開發(fā)環(huán)境的導(dǎo)出過程又有所不同,本文將以此環(huán)境為例說明步驟.

    (1)新建MFC應(yīng)用程序,在向?qū)е懈鶕?jù)軟件需求選擇文檔模板或?qū)υ捒蚰0?,采用默認(rèn)的其他選項,點(diǎn)擊完成生成程序.

    (2)在類視圖中添加TypeLib中的MFC類,在打開的類向?qū)е衼碓催x擇文件,位置為C:WINDOWSsystem32PcommServer.exe,將接口 IPmac-Device添加到生成的類,其操作應(yīng)如圖3.點(diǎn)擊完成即可以看到類視圖中增加了一個類CPmacDevice,點(diǎn)擊選中后可以看到有大量成員函數(shù),當(dāng)SelectDevice函數(shù)有三個參數(shù)long hWindow、long*pDeviceNumber、BOOL*pbSuccess 的時候說明添加成功了正確的類,否則應(yīng)是操作錯誤,將引起編譯錯誤,請復(fù)核以上步驟.

    圖3 TypeLib中的MFC類向?qū)?/p>

    (3)在對話框源程序(Test1Dlg.cpp)中加入#include"CPmacDevice.h".并在該文件增加三個全局變量與一個CPmacDevice類的對象:long testInterface,dwDevice;

    (4)在對話框源程序OnInitDialog()函數(shù)下添加以下代碼實現(xiàn)初始化:

    (5)其后就可以用類對象的成員函數(shù)形式調(diào)用,如與之前OpenPmacDevice功能相同的函數(shù)為Open(long dwDevice,BOOL*pbSuccess),這些函數(shù)的說明可以通過查閱Pcomm Server軟件參考手冊獲得,其使用方法和其他庫加載方法的調(diào)用函數(shù)不同.如 Open函數(shù)調(diào)用程序為 pmacDevice.Open(dwDevice,&pbSuccess);需要說明的是這些成員函數(shù)大部分沒有返回值,調(diào)用是否成功存儲在pb-Success這個參數(shù)中,可以通過訪問該參數(shù)進(jìn)行下一步判定.

    (6)接著上述第4條的位置輸入以下代碼,即可完成驅(qū)動器選擇對話框的調(diào)用.調(diào)用編譯成功后運(yùn)行可見圖4與圖5的對話框.

    圖4 程序與Clipper通訊成功

    圖5 PMAC啟動成功消息

    4 結(jié)束語

    PMAC運(yùn)動控制器功能強(qiáng)大,用途廣泛,但因為其技術(shù)較新,供應(yīng)商支持力度不夠,使開發(fā)技術(shù)員不得不面對各種各樣難以解決的問題.作者在控制軟件開發(fā)的經(jīng)驗總結(jié)起來有兩點(diǎn):(1)PMAC實現(xiàn)其控制有很多種方法,遇上困難可以考慮用其他方法繞開它;(2)美國DELTA TAU公司提供了大量軟硬件文檔及例程,這些資料將可能是解決問題的唯一途徑.本文通過總結(jié)開發(fā)經(jīng)驗,提出PComm32 Pro Library動態(tài)庫加載的一個新方案,避開了驅(qū)動版本過低造成的通訊故障,希望此方法對同行有所幫助.

    [1]DELTA TAU Data System,Inc.Turbo PMAC/PMAC2 SOFTWARE REFERENCE MANUAL[M].January 5,2010.

    [2]DELTA TAU Data System,Inc.Pcomm Server Pro2 Library SOFTWARE REFERENCE MANUAL[M].June 8,2007.

    [3]盧旭.基于PMAC的伺服控制系統(tǒng)的開發(fā)[J].艦船電子對抗.2009,02:112 -114,120.

    [4]竇偉,趙新華,李振華.基于VC++與PMAC的機(jī)器人控制軟件的開發(fā)[J].天津理工大學(xué)學(xué)報.2010,03:58-61.

    猜你喜歡
    調(diào)用對話框程序
    正?;謴?fù)虛擬機(jī)
    核電項目物項調(diào)用管理的應(yīng)用研究
    試論我國未決羈押程序的立法完善
    Bootlace Worms’Secret etc.
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    “程序猿”的生活什么樣
    英國與歐盟正式啟動“離婚”程序程序
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
    利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
    呼伦贝尔市| 朔州市| 广南县| 宁强县| 油尖旺区| 松桃| 海淀区| 乌兰察布市| 栾川县| 马山县| 锡林郭勒盟| 威信县| 湘乡市| 怀来县| 沙田区| 马公市| 稷山县| 商都县| 棋牌| 金平| 旬阳县| 合肥市| 万源市| 章丘市| 象山县| 宝清县| 广州市| 保康县| 华容县| 道孚县| 兰考县| 喜德县| 仪征市| 南和县| 扶风县| 辛集市| 万全县| 桦川县| 周口市| 武安市| 英吉沙县|