亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        郭 波, 鄒麗梅

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

        0 引言

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

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

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

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

        1.1 隱式調(diào)用

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

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

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

        (2)在工程頭文件全局作用域中把需要的函數(shù)導入,如導入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),但加載步驟最復雜.

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

        (2)函數(shù)調(diào)用以OpenPmacDevice為例: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ù)名.頭文件包含的使用看起來很簡單,但實際應用中有幾個麻煩.(1)Include文件夾中各種頭文件相互包含交織在一起,難于清理分解;(2)任何文件位置錯誤或不存在均會鏈接報錯.

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

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

        初學PMAC開發(fā)應用軟件面對龐大的庫函數(shù),往往不知如何才能調(diào)用所需函數(shù).但根據(jù)PComm32PRO軟件所提供的例程myRuntimePmacTestNew發(fā)現(xiàn),該例程將常用的PMAC函數(shù)以手動加載的形式編寫進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ù)在許多文獻中均有介紹其參數(shù)使用方法,軟件PComm32PRO的幫助文件更是有所有函數(shù)的全面說明,本文就不再贅述[3,4].

        程序編寫雖然鏈接通過,但調(diào)試時,卻出現(xiàn)了一個新的問題.正確調(diào)用PmacSelect()函數(shù)后,應當出現(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標題欄有一個標識Pcomm Version:4.2.4.1,而因此判定應當是 Pcomm32.dll庫的版本過舊,且使用的Clipper為新的Turbo PMAC2型卡,使用舊的驅(qū)動不能通訊說得通.但新版的驅(qū)動屬于收費軟件,代理商也不提供下載,為此只能另想辦法.在查閱資料的過程中,發(fā)現(xiàn)PMAC提供了另一種方法,即是使用PMACSERVER.EXE可以倒出編程需要的函數(shù).因為當PEWIN32PRO2啟動時,進程中就會調(diào)用 PMACSERVER.EXE,由此判定PMACSERVER.EXE的庫函數(shù)應當是最新可用的.

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

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

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

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

        圖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ù)進行下一步判定.

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

        圖4 程序與Clipper通訊成功

        圖5 PMAC啟動成功消息

        4 結束語

        PMAC運動控制器功能強大,用途廣泛,但因為其技術較新,供應商支持力度不夠,使開發(fā)技術員不得不面對各種各樣難以解決的問題.作者在控制軟件開發(fā)的經(jīng)驗總結起來有兩點:(1)PMAC實現(xiàn)其控制有很多種方法,遇上困難可以考慮用其他方法繞開它;(2)美國DELTA TAU公司提供了大量軟硬件文檔及例程,這些資料將可能是解決問題的唯一途徑.本文通過總結開發(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的機器人控制軟件的開發(fā)[J].天津理工大學學報.2010,03:58-61.

        猜你喜歡
        調(diào)用對話框程序
        正?;謴吞摂M機
        核電項目物項調(diào)用管理的應用研究
        試論我國未決羈押程序的立法完善
        人大建設(2019年12期)2019-05-21 02:55:44
        Bootlace Worms’Secret etc.
        中學科技(2018年12期)2018-12-19 11:22:28
        LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
        測控技術(2018年5期)2018-12-09 09:04:46
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
        創(chuàng)衛(wèi)暗訪程序有待改進
        利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
        国产日本在线视频| 亚洲成人一区二区三区不卡| 亚洲精品第四页中文字幕| 美女脱了内裤露出奶头的视频| 天天躁夜夜躁av天天爽| 夜夜揉揉日日人人青青| 亚洲产国偷v产偷v自拍色戒| 国内精品久久久久久久久齐齐| 日韩偷拍一区二区三区视频 | 韩国精品一区二区三区| 亚洲精品无人区一区二区三区| 中文乱码字幕人妻熟女人妻| 黄片视频大全在线免费播放| 少妇久久久久久人妻无码| 日产无人区一线二线三线乱码蘑菇| 国内精品久久久久久久影视麻豆| 亚洲阿v天堂网2021| 国产亚洲青春草在线视频| 狼狼色丁香久久女婷婷综合| 亚洲av中文无码字幕色本草| 麻豆国产原创视频在线播放| 亚洲色欲Aⅴ无码一区二区| 亚洲免费看三级黄网站| 日本不卡一区二区三区在线视频| 国产av一区二区三区天堂综合网| 国产人妻精品一区二区三区不卡| 成人午夜免费福利| 国产av一区二区三区天美| 内射白浆一区二区在线观看| 俺去俺来也在线www色官网| 国产亚洲女在线线精品| 日韩十八禁在线观看视频| 视频在线观看免费一区二区| 免费无码中文字幕a级毛片| 国产成人免费a在线视频| 亚洲视频一区二区三区免费| 青草久久婷婷亚洲精品| 国产福利视频在线观看| 日日摸夜夜添夜夜添一区二区| 日本中文字幕一区二区在线观看| 中文字幕一区在线直播|