1.增加人脸识别模块
2.人脸识别整定优化,分离串口配置 3.改为使用原有uart_group_config.py文件实现配置连接,保持原有断线重连
This commit is contained in:
84
main.py
Normal file
84
main.py
Normal file
@ -0,0 +1,84 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from kivy.app import App
|
||||
from kivy.uix.tabbedpanel import TabbedPanel, TabbedPanelItem
|
||||
from kivy.uix.boxlayout import BoxLayout
|
||||
from kivy.uix.label import Label
|
||||
from kivy.uix.button import Button
|
||||
from kivy.clock import Clock
|
||||
import threading
|
||||
|
||||
from comm_modbus_device import class_modbus_comm_device
|
||||
from menu_mine import mqtt_pack_measure, mqtt_pack_param, mqtt_pack_alarm
|
||||
|
||||
class DataTab(BoxLayout):
|
||||
def __init__(self, device, data_pack, title, **kwargs):
|
||||
super().__init__(orientation='vertical', **kwargs)
|
||||
self.device = device
|
||||
self.data_pack = data_pack
|
||||
self.labels = {}
|
||||
self.title = title
|
||||
self.build_ui()
|
||||
|
||||
def build_ui(self):
|
||||
title_label = Label(text=f"[b]{self.title}[/b]", markup=True, size_hint_y=None, height=40)
|
||||
self.add_widget(title_label)
|
||||
|
||||
for item in self.data_pack:
|
||||
name = item.get("name")
|
||||
label = Label(text=f"{name}: --", size_hint_y=None, height=30)
|
||||
self.labels[name] = label
|
||||
self.add_widget(label)
|
||||
|
||||
refresh_btn = Button(text="Refresh", size_hint_y=None, height=40)
|
||||
refresh_btn.bind(on_press=self.refresh_data)
|
||||
self.add_widget(refresh_btn)
|
||||
|
||||
def refresh_data(self, instance):
|
||||
def _task():
|
||||
for item in self.data_pack:
|
||||
try:
|
||||
name = item.get("name")
|
||||
value = self.device.comm_get_value_from_menu_item(item)
|
||||
if value is not None:
|
||||
text = f"{name}: {value}"
|
||||
else:
|
||||
text = f"{name}: Read failed"
|
||||
Clock.schedule_once(lambda dt, n=name, t=text: self.update_label(n, t))
|
||||
except Exception as e:
|
||||
Clock.schedule_once(lambda dt: self.update_label(name, f"{name}: Error"))
|
||||
threading.Thread(target=_task, daemon=True).start()
|
||||
|
||||
def update_label(self, name, text):
|
||||
if name in self.labels:
|
||||
self.labels[name].text = text
|
||||
|
||||
class MainPanel(TabbedPanel):
|
||||
def __init__(self, device, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.do_default_tab = False
|
||||
|
||||
self.measure_tab = DataTab(device, mqtt_pack_measure, "Measurements")
|
||||
self.add_widget(self.create_tab("Measure", self.measure_tab))
|
||||
|
||||
self.param_tab = DataTab(device, mqtt_pack_param, "Parameters")
|
||||
self.add_widget(self.create_tab("Params", self.param_tab))
|
||||
|
||||
self.alarm_tab = DataTab(device, mqtt_pack_alarm, "Alarms")
|
||||
self.add_widget(self.create_tab("Alarms", self.alarm_tab))
|
||||
|
||||
def create_tab(self, tab_title, content_widget):
|
||||
tab = TabbedPanelItem(text=tab_title)
|
||||
tab.add_widget(content_widget)
|
||||
return tab
|
||||
|
||||
class ModbusTabbedApp(App):
|
||||
def build(self):
|
||||
self.device = class_modbus_comm_device()
|
||||
from modbus_tk import modbus_tcp
|
||||
self.device.master = modbus_tcp.TcpMaster('192.168.1.119', 502)
|
||||
self.device.master.set_timeout(5.0)
|
||||
# self.device.set_slave_id(1)
|
||||
return MainPanel(self.device)
|
||||
|
||||
if __name__ == '__main__':
|
||||
ModbusTabbedApp().run()
|
||||
Reference in New Issue
Block a user