demo笔记

from PySide6.QtCore import QTimer
from PySide6.QtWidgets import QApplication, QWidget, QStackedWidget, QPushButton, QLineEdit, QLabel
from PySide6.QtUiTools import QUiLoader
from snap7 import client,util


def scale(goal,cur,adv):
    if cur>goal:
        return 0
    if cur<=goal-adv:
        return 2
    if cur>goal-adv:
        return 1


def output(data,bytes,index,bit1,bit2):
    if data == 0:
        util.set_bool(bytes, index, bit1, 0)
        util.set_bool(bytes, index, bit2, 0)
        return True

    elif data==1:
        util.set_bool(bytes,index,bit1,1)
        util.set_bool(bytes,index,bit2,0)
        return False
    elif data == 2:
        util.set_bool(bytes,index,bit1,1)
        util.set_bool(bytes,index,bit2,1)
        return False







class Window(QWidget):
    def __init__(self):
        super().__init__()

        self.__init_ui()
    def __init_ui(self):
        # 加载界面ui文件
        loader = QUiLoader()
        # loader.registerCustomWidget(Widget) #注册自定义控件
        self.ui = loader.load("page.ui")
        self.__rename()
        self._bind_slots()
        self.__add_plc()
        self.timer = QTimer(self)
        self.timer.timeout.connect(self.on_timer)
        self.timer.start(100)
        self.bytes = bytearray(1)

    def __add_plc(self):
        self.plc = client.Client()
        self.plc.set_connection_type(3)


        # 更改ui名#更改ui名
    def __rename(self):
        self.btn_connect: QPushButton = self.ui.btn_connect
        self.btn1: QPushButton = self.ui.btn1
        self.btn2: QPushButton = self.ui.btn2
        self.btn3: QPushButton = self.ui.btn3
        self.le1: QLineEdit = self.ui.le1
        self.le2: QLineEdit = self.ui.le2
        self.le3: QLineEdit = self.ui.le3
        self.le_connect: QLineEdit = self.ui.le_connect
        self.lab1: QLabel = self.ui.lab1
        self.lab2: QLabel = self.ui.lab2
        self.lab3: QLabel = self.ui.lab3
        self.lab4: QLabel = self.ui.lab4
        self.lab5: QLabel = self.ui.lab5
        self.lab6: QLabel = self.ui.lab6

        # 绑定槽函数
    def _bind_slots(self):
        for btn in [self.btn1,self.btn2,self.btn3]:
            btn.clicked.connect(self.on_btn_click)

        self.btn_connect.clicked.connect(self.btn_connect_plc)
    def btn_connect_plc(self):
        if self.plc.get_connected():
            return
        self.plc.connect(self.le_connect.text(), 0, 1)
        print(self.plc.get_connected())


    def on_btn_click(self):
        print(222)

    def on_timer(self):
        if self.plc.get_connected():
            byts = self.plc.db_read(1,0,20)
            qbyt = self.plc.read_area(client.Areas.PA,1,0,2)
            one = util.get_word(byts,0)
            two = util.get_word(byts,2)
            three = util.get_word(byts,4)

            sacle1 = scale(100,int(self.le1.text()),30)
            sacle2 = scale(100,int(self.le2.text()),30)
            sacle3 = scale(100,int(self.le3.text()),30)

            # self.lab1.setStyleSheet("background-color:green") if util.get_bool(qbyt,0,0) else \
            #     self.lab1.setStyleSheet("background-color:red")
            # self.lab2.setStyleSheet("background-color:green") if util.get_bool(qbyt, 0, 1) else \
            # #     self.lab2.setStyleSheet("background-color:red")
            # self.lab3.setStyleSheet("background-color:green") if util.get_bool(qbyt, 0, 2) else \
            #     self.lab3.setStyleSheet("background-color:red")
            # self.lab4.setStyleSheet("background-color:green") if util.get_bool(qbyt, 0, 3) else \
            #     self.lab4.setStyleSheet("background-color:red")
            # self.lab5.setStyleSheet("background-color:green") if util.get_bool(qbyt, 0, 4) else \
            #     self.lab5.setStyleSheet("background-color:red")
            # self.lab6.setStyleSheet("background-color:green") if util.get_bool(qbyt, 0, 5) else \
            #     self.lab6.setStyleSheet("background-color:red")

            for i in range(6):
                self.lab_change(f"lab{i+1}","green")if util.get_bool(qbyt,0,i) else\
                    self.lab_change(f"lab{i+1}","red")


            temp1 = output(sacle1,self.bytes,0,0,1)
            temp2 = output(sacle2,self.bytes,0,2,3)
            temp3 =output(sacle3,self.bytes,0,4,5)

            print(temp1,temp2,temp3)
            if all([temp1,temp2,temp3]):
                print("开始下一个流程")



            self.plc.write_area(client.Areas.PA,1,0,self.bytes)

    #更改标签 颜色
    def lab_change(self,name,col):
        colors = {"red":"red","green":"green"}
        style  = f"background-color:{colors.get(col)}"
        self.__getattribute__(name).setStyleSheet(style)








if __name__ == '__main__':
    import sys

    loader = QUiLoader()
    app = QApplication(sys.argv)

    win = Window()
    win.ui.show()

    sys.exit(app.exec())

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值