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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Pmac联合QT开发入门指南

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

Pmac聯(lián)合QT開發(fā)入門指南

  • 1.Pcommserver介紹
  • 2. 獲取PcommServer.exe
  • 3. 通過QT的dumpcp工具生成COM組件
  • 4. QTcreator中操作
    • 4.1 與PMAC通訊
    • 4.2 Pmac程序下載
    • 4.3 讓pmac執(zhí)行程序
    • 4.4 讀取變量
  • 5.注意事項

1.Pcommserver介紹

??早期的PMAC軟件,PMAC Executive win32 PRO所采用的驅(qū)動與通信接口為Pcomm32.dll。隨后的第2版,PMAC Executive PRO2 suite(2005年發(fā)布)采用的通信方式為PCommServer.exe。同理,我們自己開發(fā)的上位機程序可以使用Pcomm32.dll也可以PCommServer.exe。其中,PCommServer.exe并不是普通的應用程序,其是一種exe形式的COM組件,此組件為其他應用程序提供API與服務。
??根據(jù)官方說明,Pcomm32.dll現(xiàn)在已經(jīng)是obsolete(廢棄的),因此,建議新應用程序開發(fā)采用PCommServer.exe。而且,我?guī)熜謧兊氖褂们闆r,似乎將Pcomm32.dll用于較新版本的PMAC時很容易出問題。
??PcommServer User Manual手冊中對其安裝、在不同編程環(huán)境中的使用(如.net、MFC及Borland C++)及其所包含的函數(shù)接口進行了說明。可發(fā)現(xiàn),其所提供的接口與Pcomm32.dll基本相同。

2. 獲取PcommServer.exe

??安裝PMAC調(diào)試軟件(我這里安裝的是Pwin32pro2,我將安裝包也發(fā)給你吧),在C:\windows\system32或者C:\Windows\SysWOW64中可以找到PcommServer.exe文件,記住這個路徑。其中還有一個dll文件、lib文件。此兩個文件應該可以以動態(tài)鏈接庫的方式來進行PMAC的通信。

3. 通過QT的dumpcp工具生成COM組件

??在你QT目錄中找到dumpcpp.exe。我這里用Everything軟件搜索,因為我安裝了3個QT編譯環(huán)境,所以有3個。你選擇你需要的編譯環(huán)境即可。
??Msvc和mingw都是很好用的編譯工具,但是他們兼容的并不好。當你的項目使用MinGW編譯的使用,想要用一個MSVC編譯生成的庫時就會有問題。使用MinGW編譯項目的時候,所使用的Lib也要是MinGW編譯的。如果你只是開發(fā)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函數(shù)是用來從PMAC中向上位機傳輸程序的,但不知道為什么使用dumpcpp生成.h、.cpp文件后,該函數(shù)報錯。注釋掉就可以了,實際工程中應該用不到該功能,如果需要從PMAC向上位機上傳程序,可以通過Pwin32調(diào)試軟件來進行。)


在主窗口中的.cpp文件中添加“using namespace PCOMMSERVERLib;”

4.1 與PMAC通訊

在QT主窗口.h文件的類中添加以下內(nèi)容

PCOMMSERVERLib::PmacDevice* Pmac;//定義PMAC指針QString pAnswer ="default";int hWindow = 0;//父窗口int pdwDevice;//設備號int dwDevice;bool pbSuccess = false;//是否成功標志


在QT主窗口.cpp文件中添加以下內(nèi)容

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


運行程序出現(xiàn)GUI界面,點擊鏈接PMAC,出現(xiàn)以下窗口說明通訊成功。

4.2 Pmac程序下載

PmacfilePath = "E:\\MyPmacSpace\\MotorTest\\MotorTest.pmc"; // PmacfilePath是需要下載到pmac文件路徑,你自己根據(jù)需要修改 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執(zhí)行程序

Pmac->GetResponse(dwDevice, "enable plc 4", pAnswer); // dwDevice還是設備號 //"enable plc 4"就是執(zhí)行第四個PLC程序,與pwin32控制臺中輸入程序相同,不過該參數(shù)必須是字符串。如果要執(zhí)行運動程序就改成"&1b4r",即1號軸第四個運動程序開始。 // pAnswer發(fā)送成功標志

4.4 讀取變量

Pmac->GetResponse(dwDevice, "P15", pAnswer); //依然是使用GetResponse這個函數(shù),如果想要讀取變量P15,就將第二個參數(shù)改為字符串"P15";想讀取M105就將第二個參數(shù)改為" M105";想讀取Q3000就將第二個參數(shù)改為" Q3000",總之想讀取啥就寫啥。 // pAnswer就是讀取到的值

如果你想實時讀取某個值,就用一個定時器,然后每固定時間運行Pmac->GetResponse函數(shù)一次。
如果想要讀取一系列值比如 (P1到P5的值,可以輸入
Pmac->GetResponse(dwDevice, “P1P2P3P4P5”, pAnswer);
然后按順序解析即可

5.注意事項

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

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

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