Я пытаюсь разработать приложение python gui, которое связывается с ПЛК с использованием pymodbus. Используя документацию с сайта &, что я нашел онлайн, я могу легко связаться & все работает отлично. Я борюсь с тем, как объединить все это в класс gui различными способами. Я новичок в программировании python &, так как мой фон в машиностроении.Python pymodbus в классе gui
Пожалуйста, посмотрите на код ниже. Я хочу подключиться к устройству с помощью метода modbusConnect, когда пользователь нажимает кнопку &. Поэтому я создал экземпляр «client» для ModbusTcpClient.
Как я могу ссылаться на этот экземпляр в методе 'dialValueChanged' для чтения или записи в регистр. Сообщите мне, если структура моего кода неверна & Я должен был иметь различные классы & и т.д.
Спасибо заранее.
Дэвид
from pymodbus.client.sync import ModbusTcpClient
import struct
import sys
from PyQt4 import QtCore, QtGui, uic
form_class = uic.loadUiType("C:\Users\David\.PyCharm30\VC-22D Modbus TCP\UI Design\Modbus- MainScreen.ui")[0]
form_class2 = uic.loadUiType("C:\Users\David\.PyCharm30\VC-22D Modbus TCP\UI Design\Modbus- ConnectMenu.ui")[0]
class MyWindowClass(QtGui.QMainWindow, form_class):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.setFixedSize(1500,1200)
self.dial.valueChanged.connect(self.dialValueChanged)
self.pushButton_Connect.clicked.connect(self.modbusConnect)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.setWindowIcon(QtGui.QIcon("C:\Users\David\.PyCharm30\VC-22D Modbus TCP\UI Design\Cla-Val_30px.png"))
def modbusConnect(self):
#modbus connection
ipaddress = str(self.lineEdit_IP.text())
client = ModbusTcpClient(ipaddress)
testconnection = client.connect()
if testconnection == True:
print ("Connection Successful")
else:
print ("Connection Not Successful")
print (self.lineEdit_IP.text())
exit()
def dialValueChanged(self):
setvalue = float(self.label.text())
if setvalue == 0:
setvalueint = 0
else:
setvaluehex = str(hex(struct.unpack('<I', struct.pack('<f', setvalue))[0]))
setvaluehexstr = setvaluehex[:-4]
setvalueint = int(setvaluehexstr, 16)
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass(None)
myWindow.show()
app.exec_()
Имеет смысл! Благодарим вас за ответ. Очень признателен! - Дэвид –