结构优化
This commit is contained in:
170
main.py
170
main.py
@ -87,51 +87,31 @@ class app(MDApp):
|
||||
wifi_status_text = StringProperty("")
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.signup_branch = None
|
||||
|
||||
self.user_name = None
|
||||
|
||||
|
||||
|
||||
self.rec_grid = None
|
||||
self.recommend_screen = None
|
||||
self.book_input = None
|
||||
self.data_tables = None
|
||||
self.search_grid = None
|
||||
self.search_field = None
|
||||
self.renew_grid = None
|
||||
self.renewable_books = []
|
||||
self.renew = self.renewable_books
|
||||
self.history_grid = None
|
||||
self.books_history = []
|
||||
self.history = self.books_history
|
||||
self.image_label_grid = None
|
||||
self.books = []
|
||||
self.items = self.books
|
||||
self.book_name = None
|
||||
self.isbn = None
|
||||
self.a = None
|
||||
self.back_button = None
|
||||
self.user = None
|
||||
self.dialog = None
|
||||
self.dialog2 = None
|
||||
|
||||
self.profile_edit_screen = None
|
||||
self.edit_email = None
|
||||
self.edit_prn = None
|
||||
self.edit_name = None
|
||||
|
||||
self.edit_user_pass = None
|
||||
self.edit_user_name = None
|
||||
self.edit_wifi_ssid = None
|
||||
self.edit_branch = None
|
||||
self.profile_semester = None
|
||||
self.profile_branch = None
|
||||
self.profile_wifi_ssid = None
|
||||
self.profile_prn = None
|
||||
self.edit_modbus_ip = None
|
||||
self.edit_modbus_port = None
|
||||
self.edit_nfc_id = None
|
||||
self.edit_reserve = None
|
||||
|
||||
|
||||
self.profile_user_pass = None
|
||||
self.profile_user_name = None
|
||||
self.user_no = None
|
||||
self.user_email = None
|
||||
self.user_prn = None
|
||||
self.d2 = None
|
||||
self.d3 = None
|
||||
self.d4 = None
|
||||
self.profile_wifi_ssid = None
|
||||
self.profile_modbus_ip = None
|
||||
self.profile_modbus_port = None
|
||||
self.profile_nfc_id = None
|
||||
self.profile_reserve = None
|
||||
|
||||
|
||||
self.user_pass = None
|
||||
self.d1 = None
|
||||
self.edit_semester = None
|
||||
@ -217,44 +197,30 @@ class app(MDApp):
|
||||
|
||||
#############################################ALL INPUT TEXT############################################################
|
||||
def on_start(self):
|
||||
|
||||
# 从根窗口中获取名为"login"的屏幕(登录界面)
|
||||
|
||||
login_screen = self.root.get_screen("login")
|
||||
|
||||
|
||||
# 从根窗口中获取名为"home"的屏幕(主界面)
|
||||
home_screen = self.root.get_screen("home")
|
||||
# 通过界面ID获取主界面中的用户信息组件
|
||||
self.user = home_screen.ids.user
|
||||
|
||||
# 从根窗口中获取名为"profile"的屏幕(个人资料界面)
|
||||
profile_screen = self.root.get_screen("profile")
|
||||
# 通过界面ID获取个人资料界面中的姓名展示组件
|
||||
self.profile_user_name = profile_screen.ids.profile_user_name
|
||||
# 通过界面ID获取个人资料界面中的邮箱展示组件
|
||||
self.profile_user_pass = profile_screen.ids.profile_user_pass
|
||||
# 通过界面ID获取个人资料界面中的PRN(身份标识)展示组件
|
||||
self.profile_prn = profile_screen.ids.profile_prn
|
||||
# 通过界面ID获取个人资料界面中的手机号展示组件
|
||||
self.profile_wifi_ssid = profile_screen.ids.profile_wifi_ssid
|
||||
# 通过界面ID获取个人资料界面中的所属部门/专业展示组件
|
||||
self.profile_branch = profile_screen.ids.profile_branch
|
||||
# 通过界面ID获取个人资料界面中的年级/学期展示组件
|
||||
self.profile_semester = profile_screen.ids.profile_semester
|
||||
# 从根窗口中获取名为"profile_edit"的屏幕(个人资料编辑界面)
|
||||
self.profile_modbus_ip = profile_screen.ids.profile_modbus_ip
|
||||
self.profile_modbus_port = profile_screen.ids.profile_modbus_port
|
||||
self.profile_nfc_id = profile_screen.ids.profile_nfc_id
|
||||
self.profile_reserve = profile_screen.ids.profile_reserve
|
||||
|
||||
self.profile_edit_screen = self.root.get_screen("profile_edit")
|
||||
# 通过界面ID获取资料编辑界面中的姓名编辑输入框组件
|
||||
self.edit_name = self.profile_edit_screen.ids.edit_name
|
||||
# 通过界面ID获取资料编辑界面中的邮箱编辑输入框组件
|
||||
self.edit_email = self.profile_edit_screen.ids.edit_email
|
||||
# 通过界面ID获取资料编辑界面中的PRN(身份标识)编辑输入框组件
|
||||
self.edit_prn = self.profile_edit_screen.ids.edit_prn
|
||||
# 通过界面ID获取资料编辑界面中的手机号编辑输入框组件
|
||||
self.edit_wifi_ssid = self.profile_edit_screen.ids.edit_no
|
||||
# 通过界面ID获取资料编辑界面中的所属部门/专业编辑选择组件
|
||||
self.edit_branch = self.profile_edit_screen.ids.edit_branch
|
||||
# 通过界面ID获取资料编辑界面中的年级/学期编辑选择组件
|
||||
self.edit_semester = self.profile_edit_screen.ids.edit_sem
|
||||
|
||||
self.edit_user_name = self.profile_edit_screen.ids.edit_user_name
|
||||
self.edit_user_pass = self.profile_edit_screen.ids.edit_user_pass
|
||||
self.edit_wifi_ssid = self.profile_edit_screen.ids.edit_wifi_ssid
|
||||
self.edit_modbus_ip = self.profile_edit_screen.ids.edit_modbus_ip
|
||||
self.edit_modbus_port = self.profile_edit_screen.ids.edit_modbus_port
|
||||
self.edit_nfc_id = self.profile_edit_screen.ids.edit_nfc_id
|
||||
self.edit_reserve = self.profile_edit_screen.ids.edit_reserve
|
||||
|
||||
|
||||
self.root.bind(current=self.on_screen_changed)
|
||||
@ -450,7 +416,7 @@ class app(MDApp):
|
||||
|
||||
def read_modbus_registers(self, slave_id=1, address=0, count=1):
|
||||
"""
|
||||
通用的Modbus保持寄存器读取函数(优化版)
|
||||
通用的Modbus保持寄存器读取函数
|
||||
:param slave_id: 从机ID
|
||||
:param address: 寄存器地址
|
||||
:param count: 读取数量
|
||||
@ -482,10 +448,10 @@ class app(MDApp):
|
||||
|
||||
def write_modbus_register(self, slave_id=1, address=0, value=None):
|
||||
"""
|
||||
通用写入Modbus保持寄存器(单个寄存器),低耦合版
|
||||
通用写入Modbus保持寄存器(单个寄存器)
|
||||
:param slave_id: 从机ID
|
||||
:param address: 寄存器地址
|
||||
:param value: 要写入的值(整数,0-65535)
|
||||
:param value: 要写入的值(整数,0-65535)
|
||||
:return: {'success': bool, 'msg': str}
|
||||
"""
|
||||
return self.modbus_master.write_single_register(slave_id, address, value)
|
||||
@ -640,22 +606,25 @@ class app(MDApp):
|
||||
if wifi_id == csv_ssid:
|
||||
# 通过列名获取用户信息
|
||||
name = row['User']
|
||||
prn = row['Reserve'] # 根据实际列名调整
|
||||
email = row['Reserve'] # 根据实际列名调整
|
||||
number = row['Reserve'] # 根据实际列名调整
|
||||
password = row['User_pass']
|
||||
branch = row['Reserve'] # 根据实际列名调整
|
||||
semester = row['Reserve'] # 根据实际列名调整
|
||||
wifi_ssid = row['Wifi_SSID']
|
||||
modbus_ip = row['Modbus_IP']
|
||||
modbus_port = row['Modbus_Port']
|
||||
nfc_id = row['NFC_ID']
|
||||
reserve = row['Reserve']
|
||||
|
||||
# 更新界面显示的用户信息
|
||||
self.root.current = "home"
|
||||
self.user.text = f"[b]Hey! {name}[/b]"
|
||||
self.profile_user_name.text = self.edit_name.text = name
|
||||
self.profile_user_pass.text = self.edit_email.text = email
|
||||
self.profile_prn.text = self.edit_prn.text = prn
|
||||
self.profile_wifi_ssid.text = row['Wifi_SSID']
|
||||
self.profile_semester.text = self.edit_semester.text = semester
|
||||
self.profile_branch.text = self.edit_branch.text = branch
|
||||
|
||||
self.profile_user_name.text = self.edit_user_name.text = name
|
||||
self.profile_user_pass.text = self.edit_user_pass.text = password
|
||||
self.profile_wifi_ssid.text = self.edit_wifi_ssid.text = wifi_ssid
|
||||
self.profile_modbus_ip.text = self.edit_modbus_ip.text = modbus_ip
|
||||
self.profile_modbus_port.text = self.edit_modbus_port.text = modbus_port
|
||||
self.profile_nfc_id.text = self.edit_nfc_id.text = nfc_id
|
||||
self.profile_reserve.text = self.edit_reserve.text = reserve
|
||||
|
||||
|
||||
# 连接Modbus设备
|
||||
self.connect_modbus()
|
||||
@ -675,7 +644,7 @@ class app(MDApp):
|
||||
master = None
|
||||
|
||||
try:
|
||||
# 获取当前WiFi SSID(保持不变)
|
||||
# 获取当前WiFi SSID
|
||||
if platform == "android":
|
||||
from jnius import autoclass
|
||||
PythonActivity = autoclass('org.kivy.android.PythonActivity')
|
||||
@ -687,7 +656,7 @@ class app(MDApp):
|
||||
else:
|
||||
current_wifi_id = "zhizhan-2"
|
||||
|
||||
# 读取CSV配置(保持不变)
|
||||
# 读取CSV配置
|
||||
with open("data/Users.csv", "r", encoding="utf-8") as file:
|
||||
csv_reader = csv.DictReader(file)
|
||||
for row in csv_reader:
|
||||
@ -701,16 +670,16 @@ class app(MDApp):
|
||||
Clock.schedule_once(lambda dt: self.dialog1("未找到匹配的Modbus配置"))
|
||||
return
|
||||
|
||||
# 断开现有连接(保持不变)
|
||||
# 断开现有连接
|
||||
self.modbus_master.disconnect()
|
||||
|
||||
# 创建新连接并测试(保持不变)
|
||||
# 创建新连接并测试
|
||||
connect_result = self.modbus_master.connect(modbus_ip, modbus_port)
|
||||
if not connect_result['success']:
|
||||
Clock.schedule_once(lambda dt: self.dialog1(connect_result['msg']))
|
||||
return
|
||||
print(f"Modbus连接成功 (modbus-tk)\nIP: {modbus_ip}\n端口: {modbus_port}")
|
||||
Clock.schedule_once(lambda dt: self.dialog1(f"Modbus连接成功\nIP: {modbus_ip}\n端口: {modbus_port}"))
|
||||
print(f"Modbus连接成功\nIP: {modbus_ip}\n端口: {modbus_port}")
|
||||
# Clock.schedule_once(lambda dt: self.dialog1(f"Modbus连接成功\nIP: {modbus_ip}\n端口: {modbus_port}"))
|
||||
|
||||
except FileNotFoundError as e:
|
||||
# 修复:将异常信息转为字符串或通过默认参数传递
|
||||
@ -722,7 +691,6 @@ class app(MDApp):
|
||||
Clock.schedule_once(lambda dt, msg=err_msg: self.dialog1(msg))
|
||||
self.modbus_master = None
|
||||
except socket.error as e:
|
||||
# 修复:提前格式化错误信息
|
||||
err_msg = f"网络连接失败: {e}"
|
||||
Clock.schedule_once(lambda dt, msg=err_msg: self.dialog1(msg))
|
||||
self.modbus_master = None
|
||||
@ -735,28 +703,32 @@ class app(MDApp):
|
||||
threading.Thread(target=_connect_in_background, daemon=True).start()
|
||||
|
||||
def edit_profile(self):
|
||||
if self.edit_name.text == "" or self.edit_prn.text == "" or self.edit_email.text == "" or self.edit_number.text == "":
|
||||
if self.edit_user_name.text == "" or self.edit_user_pass.text == "" or self.edit_wifi_ssid.text == "" or self.edit_modbus_ip.text == "" or self.edit_modbus_port.text == "" or self.edit_nfc_id.text == "" or self.edit_reserve.text == "":
|
||||
check = "Enter all required fields"
|
||||
return self.dialog1(check)
|
||||
else:
|
||||
user_data = {
|
||||
'User': self.edit_name.text,
|
||||
'User_pass': self.edit_prn.text,
|
||||
'Wifi_SSID': self.edit_email.text,
|
||||
'Modbus_IP': self.edit_number.text,
|
||||
'Modbus_Port': self.password.text,
|
||||
'Reserve_branch': self.edit_branch.text,
|
||||
'Reserve_semester': self.edit_semester.text
|
||||
'User': self.edit_user_name.text,
|
||||
'User_pass': self.edit_user_pass.text,
|
||||
'Wifi_SSID': self.edit_wifi_ssid.text,
|
||||
'Modbus_IP': self.edit_modbus_ip.text,
|
||||
'Modbus_Port': self.edit_modbus_port.text,
|
||||
'NFC_ID': self.edit_nfc_id.text,
|
||||
'Reserve': self.edit_reserve.text
|
||||
}
|
||||
update_user_profile(user_data, self.profile_wifi_ssid.text)
|
||||
self.verify(True)
|
||||
self.root.current = "home"
|
||||
|
||||
def secure_profile(self):
|
||||
self.profile_edit_screen.ids.edit_email.readonly = True
|
||||
self.profile_edit_screen.ids.edit_prn.readonly = True
|
||||
self.profile_edit_screen.ids.edit_no.readonly = True
|
||||
self.profile_edit_screen.ids.edit_private_credential_butn.disabled = False
|
||||
self.profile_edit_screen.ids.edit_user_pass.readonly = True
|
||||
self.profile_edit_screen.ids.edit_wifi_ssid.readonly = True
|
||||
self.profile_edit_screen.ids.edit_modbus_ip.readonly = True
|
||||
self.profile_edit_screen.ids.edit_modbus_port.readonly = True
|
||||
self.profile_edit_screen.ids.edit_nfc_id.readonly = True
|
||||
self.profile_edit_screen.ids.edit_reserve.readonly = False
|
||||
|
||||
|
||||
|
||||
from user_data_manager import update_user_profile
|
||||
|
||||
|
||||
Reference in New Issue
Block a user