Pmac联合QT开发入门指南
Pmac聯合QT開發入門指南
- 1.Pcommserver介紹
- 2. 獲取PcommServer.exe
- 3. 通過QT的dumpcp工具生成COM組件
- 4. QTcreator中操作
- 4.1 與PMAC通訊
- 4.2 Pmac程序下載
- 4.3 讓pmac執行程序
- 4.4 讀取變量
- 5.注意事項
1.Pcommserver介紹
??早期的PMAC軟件,PMAC Executive win32 PRO所采用的驅動與通信接口為Pcomm32.dll。隨后的第2版,PMAC Executive PRO2 suite(2005年發布)采用的通信方式為PCommServer.exe。同理,我們自己開發的上位機程序可以使用Pcomm32.dll也可以PCommServer.exe。其中,PCommServer.exe并不是普通的應用程序,其是一種exe形式的COM組件,此組件為其他應用程序提供API與服務。
??根據官方說明,Pcomm32.dll現在已經是obsolete(廢棄的),因此,建議新應用程序開發采用PCommServer.exe。而且,我師兄們的使用情況,似乎將Pcomm32.dll用于較新版本的PMAC時很容易出問題。
??PcommServer User Manual手冊中對其安裝、在不同編程環境中的使用(如.net、MFC及Borland C++)及其所包含的函數接口進行了說明。可發現,其所提供的接口與Pcomm32.dll基本相同。
2. 獲取PcommServer.exe
??安裝PMAC調試軟件(我這里安裝的是Pwin32pro2,我將安裝包也發給你吧),在C:\windows\system32或者C:\Windows\SysWOW64中可以找到PcommServer.exe文件,記住這個路徑。其中還有一個dll文件、lib文件。此兩個文件應該可以以動態鏈接庫的方式來進行PMAC的通信。
3. 通過QT的dumpcp工具生成COM組件
??在你QT目錄中找到dumpcpp.exe。我這里用Everything軟件搜索,因為我安裝了3個QT編譯環境,所以有3個。你選擇你需要的編譯環境即可。
??Msvc和mingw都是很好用的編譯工具,但是他們兼容的并不好。當你的項目使用MinGW編譯的使用,想要用一個MSVC編譯生成的庫時就會有問題。使用MinGW編譯項目的時候,所使用的Lib也要是MinGW編譯的。如果你只是開發Window平臺的軟件時,建議最好用Qt+MSVC組合,這樣可以使用大量的第三方lib,還有很多的構建指令,畢竟window上MSVC才是王道。
??不過這里以mingw73_32為例吧。
按下WIN+R,輸入cmd,打開windows命令行。
在命令行窗口中輸入dumpcpp路徑以及pcommserver.exe的路徑,中間以空格隔開,回車運行。
然后在dumpcpp路徑下就能看到pcommserverlib.h和pcommserverlib.cpp這兩個文件。
4. QTcreator中操作
??將這兩個文件pcommserverlib.h和pcommserverlib.cpp放在QT工程路徑下,然后添加到工程中。
??在QT應用程序的.pro中添加 “QT += axcontainer”
??打開pcommserverlib.h,將9915-9919 ,11720-11724行注釋掉。(這個upload函數是用來從PMAC中向上位機傳輸程序的,但不知道為什么使用dumpcpp生成.h、.cpp文件后,該函數報錯。注釋掉就可以了,實際工程中應該用不到該功能,如果需要從PMAC向上位機上傳程序,可以通過Pwin32調試軟件來進行。)
在主窗口中的.cpp文件中添加“using namespace PCOMMSERVERLib;”
4.1 與PMAC通訊
在QT主窗口.h文件的類中添加以下內容
PCOMMSERVERLib::PmacDevice* Pmac;//定義PMAC指針QString pAnswer ="default";int hWindow = 0;//父窗口int pdwDevice;//設備號int dwDevice;bool pbSuccess = false;//是否成功標志
在QT主窗口.cpp文件中添加以下內容
運行程序出現GUI界面,點擊鏈接PMAC,出現以下窗口說明通訊成功。
4.2 Pmac程序下載
PmacfilePath = "E:\\MyPmacSpace\\MotorTest\\MotorTest.pmc"; // PmacfilePath是需要下載到pmac文件路徑,你自己根據需要修改 Pmac->Download(dwDevice, PmacfilePath,true,true,true,true,pbDownLoadSuccess); // dwDevice是需要下載程序的pmac設備號,與通訊時設備號相同 // PmacfilePath是文件路徑 //后邊4個true為時候生成.LOG .TBL .56K .MAP文件標志,true就是生成 qDebug() << "pbDownLoadSuccess:" << pbDownLoadSuccess;4.3 讓pmac執行程序
Pmac->GetResponse(dwDevice, "enable plc 4", pAnswer); // dwDevice還是設備號 //"enable plc 4"就是執行第四個PLC程序,與pwin32控制臺中輸入程序相同,不過該參數必須是字符串。如果要執行運動程序就改成"&1b4r",即1號軸第四個運動程序開始。 // pAnswer發送成功標志4.4 讀取變量
Pmac->GetResponse(dwDevice, "P15", pAnswer); //依然是使用GetResponse這個函數,如果想要讀取變量P15,就將第二個參數改為字符串"P15";想讀取M105就將第二個參數改為" M105";想讀取Q3000就將第二個參數改為" Q3000",總之想讀取啥就寫啥。 // pAnswer就是讀取到的值如果你想實時讀取某個值,就用一個定時器,然后每固定時間運行Pmac->GetResponse函數一次。
如果想要讀取一系列值比如 (P1到P5的值,可以輸入
Pmac->GetResponse(dwDevice, “P1P2P3P4P5”, pAnswer);
然后按順序解析即可
5.注意事項
總結
以上是生活随笔為你收集整理的Pmac联合QT开发入门指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT·页面跳转,怎么切换到另一个界面(纯
- 下一篇: django框架加入simditor富文