日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

Pmac联合QT开发入门指南

發(fā)布時(shí)間:2023/12/29 c/c++ 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pmac联合QT开发入门指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)容

Pmac = new PmacDevice;//創(chuàng)建PMACpdwDevice = 0;//設(shè)備號(hào)Pmac->SelectDevice(hWindow, pdwDevice, pbSuccess);//選擇PMAC設(shè)備qDebug() << "Select:" << pbSuccess;dwDevice = 0;Pmac->Open(dwDevice, pbSuccess); //打開(kāi)PMAC,通訊成功 pbSuccess返回trueqDebug() << "open:" << pbSuccess;


運(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)

  • QT軟件或者之后生成的exe文件,一定要右鍵以管理員身份運(yùn)行,否則會(huì)出現(xiàn)以下情況,找不到PMAC!!!!!
  • 使用Pmac->Download下載程序時(shí)會(huì)需要一定時(shí)間,這期間不能讀取變量或者對(duì)PMAC進(jìn)行其他操作。
  • 在QT的析構(gòu)函數(shù)中一定要寫山“Pmac->Close(dwDevice);”這句話,否則退出程序后,后臺(tái)pcommserve不會(huì)結(jié)束進(jìn)程。
  • QT編寫的上位機(jī)可以與Pwin32調(diào)試軟件同時(shí)對(duì)PMAC進(jìn)行操作,這可以算一個(gè)小技巧。你在操作QT編寫的上位機(jī)時(shí),可以從Pwin32中觀察各種變量等等。
  • 總結(jié)

    以上是生活随笔為你收集整理的Pmac联合QT开发入门指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。