xCore通信暂时无问题了
This commit is contained in:
100
code/aio.py
100
code/aio.py
@@ -76,8 +76,8 @@ class App:
|
||||
self.om_sub_at = ctk.CTkOptionMenu(self.tabview_top.tab("自动测试"), width=160, dynamic_resizing=False, values=["tool33", "tool66", "tool100", "inertia"], font=self.f_common, text_color="#3C3C3C", button_color="#7B6B5B", fg_color="#8D8D8D")
|
||||
self.label_ip_at = ctk.CTkLabel(self.tabview_top.tab("自动测试"), anchor="e", text="IP", font=self.f_common)
|
||||
self.entry_ip_at = ctk.CTkEntry(self.tabview_top.tab("自动测试"), width=160, textvariable=self.entry_ip_atv, font=self.f_entry, text_color="#818181")
|
||||
self.btn_conn = ctk.CTkButton(self.tabview_top.tab("自动测试"), text="连接", width=60, font=self.f_segbtn, fg_color="#979DA2", corner_radius=0, command=lambda: self.__thread_it(self.__conn_xcore))
|
||||
self.progressbar_at = ctk.CTkProgressBar(self.tabview_top.tab("自动测试"), width=160, mode="indeterminate")
|
||||
self.btn_conn = ctk.CTkButton(self.tabview_top.tab("自动测试"), text="连接", width=60, font=self.f_segbtn, fg_color="#979DA2", corner_radius=0)
|
||||
# self.progressbar_at = ctk.CTkProgressBar(self.tabview_top.tab("自动测试"), width=160, mode="indeterminate")
|
||||
self.label_path_at = ctk.CTkLabel(self.tabview_top.tab("自动测试"), width=50, anchor="e", text="Path", font=self.f_common)
|
||||
self.entry_path_at = ctk.CTkEntry(self.tabview_top.tab("自动测试"), width=80, state="disabled", textvariable=self.entry_path_atv, font=self.f_entry, text_color="#818181")
|
||||
self.frame_top = ctk.CTkFrame(self.tabview_top.tab("自动测试"), width=120, height=10, fg_color="#E9E9E9")
|
||||
@@ -132,7 +132,7 @@ class App:
|
||||
# ========================================================================
|
||||
self.__draw()
|
||||
|
||||
def detect_network(self):
|
||||
def __detect_network(self):
|
||||
while True:
|
||||
try:
|
||||
if clibs.c_hr.status:
|
||||
@@ -141,32 +141,7 @@ class App:
|
||||
self.btn_conn.configure(fg_color="#979DA2")
|
||||
except Exception as Err:
|
||||
self.btn_conn.configure(fg_color="#979DA2")
|
||||
time.sleep(2)
|
||||
|
||||
def __conn_xcore(self):
|
||||
if self.btn_conn.cget("fg_color") == "#979DA2":
|
||||
try:
|
||||
if clibs.c_hr.status:
|
||||
self.btn_conn.configure(fg_color="#2E8B57")
|
||||
return
|
||||
except Exception as Err:
|
||||
...
|
||||
|
||||
clibs.ip_addr = self.entry_ip_atv.get().strip()
|
||||
ip_pattern = re.compile(r'(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])')
|
||||
if not ip_pattern.fullmatch(clibs.ip_addr):
|
||||
messagebox.showerror(title="非法地址", message=f"{clibs.ip_addr} 不是一个有效的 IP 地址")
|
||||
clibs.insert_logdb("ERROR", "aio", f"connection: {clibs.ip_addr} 不是一个有效的 IP 地址")
|
||||
return
|
||||
# clibs.c_md = openapi.ModbusRequest(clibs.ip_addr, clibs.modbus_port)
|
||||
clibs.c_hr = openapi.HmiRequest(clibs.ip_addr, clibs.socket_port, clibs.xService_port)
|
||||
else:
|
||||
try:
|
||||
# clibs.c_md.close()
|
||||
clibs.c_hr.close()
|
||||
except Exception as Err:
|
||||
...
|
||||
self.btn_conn.configure(fg_color="#979DA2")
|
||||
time.sleep(3)
|
||||
|
||||
def __robot_info(self):
|
||||
...
|
||||
@@ -283,7 +258,6 @@ class App:
|
||||
|
||||
exec_function()
|
||||
|
||||
@clibs.db_lock
|
||||
def __reset_state(self):
|
||||
def reset_methods():
|
||||
self.btn_load.configure(fg_color="#979DA2")
|
||||
@@ -296,8 +270,13 @@ class App:
|
||||
res = messagebox.askyesno(title="状态重置", message="这将清空本次所有的输出以及日志记录,且不可恢复,请确认!", default=messagebox.NO, icon=messagebox.WARNING)
|
||||
if res:
|
||||
self.text_output.delete("1.0", ctk.END)
|
||||
clibs.cursor.execute("delete from logs")
|
||||
clibs.cursor.execute("delete from sqlite_sequence") # 主键归零
|
||||
try:
|
||||
clibs.lock.acquire(True)
|
||||
clibs.cursor.execute("delete from logs")
|
||||
clibs.cursor.execute("delete from sqlite_sequence") # 主键归零
|
||||
finally:
|
||||
clibs.lock.release()
|
||||
|
||||
self.treeview_logs.delete(*self.treeview_logs.get_children())
|
||||
self.label_pages_logs.set("-.-.-.-.-.-")
|
||||
reset_methods()
|
||||
@@ -323,9 +302,9 @@ class App:
|
||||
self.label_pages_logs.set(f"{pages_all} / {pages_all}")
|
||||
|
||||
self.treeview_logs.delete(*self.treeview_logs.get_children())
|
||||
remainder = len_records % 100
|
||||
remainder = len_records % 100 if len_records % 100 != 0 else 100
|
||||
end = len_records
|
||||
start = len_records-remainder+1 if len_records-remainder > 0 else 0
|
||||
start = len_records - remainder + 1 if len_records - remainder > 0 else 0
|
||||
|
||||
# clibs.cursor.execute("select * from logs order by id desc limit 100")
|
||||
clibs.cursor.execute(f"select * from logs where id between {start} and {end}")
|
||||
@@ -382,6 +361,7 @@ class App:
|
||||
@clibs.db_lock
|
||||
def get_next_page():
|
||||
if self.btn_find.cget("fg_color") == "#979DA2":
|
||||
# noinspection PyBroadException
|
||||
try:
|
||||
clibs.cursor.execute("select id from logs")
|
||||
len_records = len(clibs.cursor.fetchall())
|
||||
@@ -401,8 +381,8 @@ class App:
|
||||
pages_all = len_records // 100 if len_records % 100 == 0 else len_records // 100 + 1
|
||||
current_page = int(start) // 100 if int(start) % 100 == 0 else int(start) // 100 + 1
|
||||
self.label_pages_logs.set(f"{current_page} / {pages_all}")
|
||||
except Exception as ERR:
|
||||
...
|
||||
except Exception as Err:
|
||||
print(f"get_next_page-if: {Err}")
|
||||
else:
|
||||
len_records = len(clibs.f_records)
|
||||
pages_all = int(self.label_pages_logs.get().split("/")[1].strip())
|
||||
@@ -426,8 +406,10 @@ class App:
|
||||
current_page = int(self.label_pages_logs.get().split("/")[0].strip())
|
||||
pages_all = int(self.label_pages_logs.get().split("/")[1].strip())
|
||||
if current_page == pages_all:
|
||||
self.__get_realtime_log()
|
||||
return
|
||||
if self.btn_find.cget("fg_color") == "#979DA2":
|
||||
self.__get_realtime_log()
|
||||
return
|
||||
|
||||
get_next_page()
|
||||
|
||||
def __load_log_db(self):
|
||||
@@ -614,6 +596,7 @@ class App:
|
||||
widget_toplevel.destroy()
|
||||
|
||||
def double_click(event):
|
||||
# noinspection PyBroadException
|
||||
try:
|
||||
e = event.widget
|
||||
iid = e.identify("item", event.x, event.y)
|
||||
@@ -640,8 +623,8 @@ class App:
|
||||
label_info.grid(row=0, column=0, padx=10, pady=10, sticky="we")
|
||||
text_content.grid(row=1, column=0, padx=10, pady=(0, 10), sticky="news")
|
||||
self.root.attributes("-disabled", 1)
|
||||
except Exception as ERR:
|
||||
...
|
||||
except Exception:
|
||||
return
|
||||
|
||||
@clibs.db_lock
|
||||
def jump2page():
|
||||
@@ -867,6 +850,32 @@ class App:
|
||||
|
||||
def show_popupmenu_ip(event):
|
||||
self.popupmenu_ip.post(event.x_root, event.y_root)
|
||||
|
||||
def conn_change(event):
|
||||
def conn_or_disconn():
|
||||
if self.btn_conn.cget("fg_color") == "#979DA2":
|
||||
self.btn_conn.configure(state="disabled")
|
||||
clibs.ip_addr = self.entry_ip_atv.get().strip()
|
||||
ip_pattern = re.compile(r'(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])')
|
||||
if not ip_pattern.fullmatch(clibs.ip_addr):
|
||||
messagebox.showerror(title="非法地址", message=f"{clibs.ip_addr} 不是一个有效的 IP 地址")
|
||||
clibs.insert_logdb("ERROR", "aio", f"connection: {clibs.ip_addr} 不是一个有效的 IP 地址")
|
||||
return
|
||||
try:
|
||||
# clibs.c_md = openapi.ModbusRequest(clibs.ip_addr, clibs.modbus_port)
|
||||
clibs.c_hr = openapi.HmiRequest(clibs.ip_addr, clibs.socket_port, clibs.xService_port)
|
||||
self.btn_conn.configure(state="normal", fg_color="#2E8B57")
|
||||
except Exception as Err:
|
||||
self.btn_conn.configure(state="normal", fg_color="#979DA2")
|
||||
elif self.btn_conn.cget("fg_color") == "#2E8B57":
|
||||
try:
|
||||
# clibs.c_md.close()
|
||||
clibs.c_hr.close()
|
||||
finally:
|
||||
self.btn_conn.configure(fg_color="#979DA2")
|
||||
t = threading.Thread(target=conn_or_disconn)
|
||||
t.daemon = True
|
||||
t.start()
|
||||
# ========================================================================
|
||||
self.root.rowconfigure(0, weight=1)
|
||||
self.root.rowconfigure(1, weight=99)
|
||||
@@ -914,7 +923,7 @@ class App:
|
||||
self.label_ip_at.grid(row=0, column=1, padx=(0, 10), pady=10, sticky="e")
|
||||
self.entry_ip_at.grid(row=0, column=2, padx=(0, 10), pady=10)
|
||||
self.btn_conn.grid(row=0, column=3, padx=(0, 10), pady=10)
|
||||
self.progressbar_at.grid(row=0, column=4, padx=(0, 10), pady=10, sticky="e")
|
||||
# self.progressbar_at.grid(row=0, column=4, padx=(0, 10), pady=10, sticky="e")
|
||||
self.label_path_at.grid(row=1, column=1, padx=(0, 10), pady=(0, 10), sticky="e")
|
||||
self.entry_path_at.grid(row=1, column=2, columnspan=3, padx=(0, 10), pady=(0, 10), sticky="we")
|
||||
self.frame_top.grid(row=2, column=0, columnspan=5, padx=0, pady=0, sticky="we")
|
||||
@@ -923,10 +932,11 @@ class App:
|
||||
self.btn_trig_estop.grid(row=0, column=2, padx=(0, 10), pady=0)
|
||||
self.btn_reset_estop.grid(row=0, column=3, padx=(0, 10), pady=0)
|
||||
|
||||
self.progressbar_at.start()
|
||||
self.progressbar_at.configure(progress_color="red", fg_color="gray")
|
||||
# self.progressbar_at.start()
|
||||
# self.progressbar_at.configure(progress_color="red", fg_color="gray")
|
||||
self.entry_path_at.bind("<Button-1>", select_path)
|
||||
self.entry_ip_at.bind("<Button-3>", show_popupmenu_ip, add="+")
|
||||
self.btn_conn.bind("<Button-1>", conn_change)
|
||||
# ========================================================================
|
||||
self.tabview_bottom.tab("输出").grid_rowconfigure(0, weight=1)
|
||||
self.tabview_bottom.tab("输出").grid_columnconfigure(0, weight=1)
|
||||
@@ -972,11 +982,11 @@ class App:
|
||||
self.om_sensor_dp.configure(state="disabled")
|
||||
# ========================================================================
|
||||
clibs.w2t = self.__w2t
|
||||
clibs.insert_logdb("INFO", "aio", "AIO starts running......")
|
||||
# clibs.insert_logdb("INFO", "aio", "AIO starts running......")
|
||||
|
||||
def show(self):
|
||||
if self.server_vers:
|
||||
t = threading.Thread(target=self.detect_network)
|
||||
t = threading.Thread(target=self.__detect_network)
|
||||
t.daemon = True
|
||||
t.start()
|
||||
self.root.mainloop()
|
||||
|
||||
Reference in New Issue
Block a user