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