From 640faf26b82546ead805e4dc1dd90ea299ea1e13 Mon Sep 17 00:00:00 2001 From: fujinliang Date: Fri, 24 Oct 2025 10:29:00 +0800 Subject: [PATCH] image_font --- COM/COM_Robot.py | 10 +- COM/COM_TCP.py | 3 +- COM/__pycache__/COM_Robot.cpython-39.pyc | Bin 4503 -> 4709 bytes COM/__pycache__/COM_TCP.cpython-39.pyc | Bin 2379 -> 2442 bytes CU/Feeding.py | 10 +- CU/__pycache__/Catch.cpython-39.pyc | Bin 2069 -> 2069 bytes CU/__pycache__/Command.cpython-39.pyc | Bin 994 -> 994 bytes CU/__pycache__/Detect.cpython-39.pyc | Bin 4579 -> 4579 bytes CU/__pycache__/EMV.cpython-39.pyc | Bin 1809 -> 1809 bytes CU/__pycache__/Feeding.cpython-39.pyc | Bin 21251 -> 21380 bytes CU/__pycache__/drop.cpython-39.pyc | Bin 9593 -> 9593 bytes Constant.py | 2 +- EMV/__pycache__/EMV.cpython-39.pyc | Bin 10252 -> 10252 bytes MainRecources_rc.py | 26 +-- Model/__pycache__/FeedModel.cpython-39.pyc | Bin 3937 -> 3937 bytes Model/__pycache__/Position.cpython-39.pyc | Bin 3703 -> 3703 bytes Model/__pycache__/RobotModel.cpython-39.pyc | Bin 7364 -> 7364 bytes Mv3D/CameraUtil.py | 202 ++++++++++++++++++ .../handeye_calibration.cpython-39.pyc | Bin 2565 -> 2565 bytes Util/__pycache__/util_ini.cpython-39.pyc | Bin 1878 -> 1878 bytes Util/__pycache__/util_log.cpython-39.pyc | Bin 3255 -> 3255 bytes Util/__pycache__/util_math.cpython-39.pyc | Bin 551 -> 551 bytes Util/__pycache__/util_pic.cpython-39.pyc | Bin 714 -> 714 bytes Util/__pycache__/util_time.cpython-39.pyc | Bin 4522 -> 4522 bytes __pycache__/Constant.cpython-39.pyc | Bin 4701 -> 4701 bytes __pycache__/Expection.cpython-39.pyc | Bin 631 -> 631 bytes __pycache__/MainRecources_rc.cpython-39.pyc | Bin 1635062 -> 1635062 bytes __pycache__/toggleswitch.cpython-39.pyc | Bin 1759 -> 1759 bytes __pycache__/ui_MainWin.cpython-39.pyc | Bin 66236 -> 66242 bytes log/log.log | 112 ++++++++++ main.py | 10 +- resources_rc.py | 2 +- ui_MainWin.py | 18 +- view/__pycache__/ResetView.cpython-39.pyc | Bin 945 -> 945 bytes .../ui_Dialog_Reset.cpython-39.pyc | Bin 2537 -> 2537 bytes 35 files changed, 361 insertions(+), 34 deletions(-) create mode 100644 Mv3D/CameraUtil.py diff --git a/COM/COM_Robot.py b/COM/COM_Robot.py index 51fc269..fcb38c9 100644 --- a/COM/COM_Robot.py +++ b/COM/COM_Robot.py @@ -1,7 +1,9 @@ import logging from enum import Enum from turtle import Turtle -# from numpy.array_api import trunc + +from numpy.array_api import trunc + import Constant from COM.COM_TCP import TCPClient import queue @@ -43,11 +45,17 @@ class RobotClient(TCPClient): def send_Command(self): try: if self.command_quene.qsize()!=0: + log.log_message(logging.INFO, f'robot-command:从队列获取命令') command = self.command_quene.get() + log.log_message(logging.INFO, f'robot-command:{command}') self.client_socket.send(command.encode()) if True: response = self.client_socket.recv(1024).decode('utf-8') # response_message = json.loads(response) + if response: + log.log_message(logging.INFO, f'robot-command:{response},剩余:{self.command_quene.qsize()}条命令') + else: + log.log_message(logging.INFO, f'robot-command:无返回值,剩余:{self.command_quene.qsize()}条命令') return True else: return True diff --git a/COM/COM_TCP.py b/COM/COM_TCP.py index e8af9eb..99371b3 100644 --- a/COM/COM_TCP.py +++ b/COM/COM_TCP.py @@ -41,10 +41,11 @@ class TCPClient: if (self.send_Status() and self.send_Command()): self.error_count = 0 except Exception as e: + log.log_message(logging.ERROR,f'COM_TCP: {str(e)}') self.error_count += 1 if self.error_count> 5: print("Error: 机械臂控制程序中TCPClient is not connected") - log.log_message(logging.ERROR,Constant.str_tcp_connect_no_reply) + log.log_message(logging.ERROR,f'{Constant.str_tcp_connect_no_reply}:{str(e)}') try: self.CreatConnect() log.log_message(logging.INFO, Constant.str_tcp_reconnect) diff --git a/COM/__pycache__/COM_Robot.cpython-39.pyc b/COM/__pycache__/COM_Robot.cpython-39.pyc index 832d773fc6355a6b8355b9df4374f30efba0706e..4f22e9215c1ff7eb31d849fc17fce9dc2e8e2030 100644 GIT binary patch delta 1703 zcmZuy-EZ4e6!*0g$BttsP13Zb)zo!^E?t{Z(GFI&A{I?(q90pZR4@-Fjc?m@{s`Ch zL`z42Az%_9MHe)oX{ePZMBkA1NC%q46XGxM3qooq;2F>~@xVRq2eewE{QSH3{?73| z=iGa8^Vs%rt)i+)j(v)SzZZWkG_@}DP4nbajhGd;MO{Rk$(hJX=n3|WTaqp7^6p$x zPeyBsuCS+QrEFDKZB5tgw4Syzdd6#6v~ECwJM%x7$kC^2T2Em z0=*ymL;;IXs0Th#=&SK_{k>wbD+2kDwu}9ZRi2o>v?lw>CB=-b^0!!q_hgKVx8v(P;+(F1P2#|+0IRc{ zDNXOAb2`TPspTILcTGUt%8^}5)z_BNpnjhzUt<-$CcGm!v>|31@&rL_f4_4qi;v=g zKR@u?ibmWy*B{soaU_tKpnvxJuupg>btA^>O_~Z$qfR_@$DS)RLgz|;As<`ggTqlfQ zn3|fLB7-!R=$U}@lV?C75$x4n$HO7QhwG4n8W`oBA`LLL2W8|Ck2I7-89vL$&~d&C z-E|TVQD&Gek<$Q>3!>4h@{pJSD$;M|qrGQvuajfaD5FK0^wLMke)J;kRh~V19#*3>^xr{Jq5!7-iXV9AX+!y< zO=GGJAyi@E;$+!%eBxTn>B&?_UzC(X9`ca~Y-6&3o$9jTxq)L^)Jfq|1zu=A=B>HI zHojYTDN_GvfwG4(w(I`#Sk3cElK!I(&%O*kh5*I@4n+-hB!djX9J4UyF*c2wYgBi( zUQCeaDv1{-jk%gn7C~(TEYXj(?)<@U$Q-QDP3`S7DPRSFSq4QuazhAA9JFCaY!O$l z7;fOR>wEbHq^=(5HHI>;ybcg zDK522eUcyvnY1Jl5ER?VDf&IzU6^(PyS`ki5K>t-D)kzH-WZiYSIU#)CH6CB%9lu- zO|#1w-~f|x;F)pP#8znvE`CIJVv6nnTz>-fC-6TJs;~Gps}wLWEO#NQd8kEmv(cno w@fS%{qp0`72LD%=C_acNl+N0&8CZA}?wr@oKtd^$;!`|4CHC!tv5<-V3&tgpasU7T delta 1440 zcmZXU&2Jk;6u@`9AD;cP*N)vJG!#N3Bd1A-Xaa3XBd8TYOBz!rfV3bju6L3+-H&v3 zR*)1F5C{p01JMX^0aV~ZE(lR1{sc~3E3^^^4jjrEB;drnHH9?T+TXtS=DpeX=FQA6 z6Ca%{b#2>_#P8KFe%$=LzF!(cAMc-P?4dw)RbTRzKnsg*5lKQu0d{fz)?Hn^)xZc% z*962uV*%KKAu@Bwr_mw`I2`bi+4=Zjz$V z>pohQn${hWO-)*9qD)ze(onp$wUn}e?Em?@RuzM^%6~(1!<>jbd$vMXg>WAjE)G@_-*BV z6CyHsJ7v`1p?ZF*0eZ0)hhaDJ2NC~y1y@W*mm6SxJ!EdXr+PflP_tNXqmUI(+ zCYJG762m)hBIykoNxLVQe$!y)mc{I?68~NsA5m8*5>wrg zM8SWlDO;aDv(_xrQQj$@JDKTAul2|_>&Fp=hSF)kj6kL?bvo@1o#o#aA9@C|r;mae zQ<7}QQ9?3Aj+S9T30`YZ<0;{t)C43{KqX`#r%)~2n!tY`XHFRDJODDIHlH%)Gz~#{Ui;Pcjp!?rLV$e9fT7u&5kVl)oKq(57u zllgKSnW2`?Kte({NYvZ$k~oe0bv|K}`YZ669^g<6|I{8qeg2*OYXys;Oef(s+ga`> zjOzTG()`3F2sjOR7I37*N5D4A&GPXP$R^V+w!N!;MmNA70Q!8f{9x_S7s1#S2ska@ zIBSBMZ|N6=)GW}vsOw<8Hzu=to1}Nmi&G}H^OYOC;jD~7cbkYl0Pg>*>;q>6y~Pil z(|haSR;F;^Xc^!DQ~(^6L3tNI@&G=70NMaZmNGypklFv7xE=|DyQeNswFxfy`Gfri zrUZZsd(|pdaRpCe8Ou%?YZM%s#|ArGA>yK-1z~YDmfsar77CpOi`i;lo)M3?)_RV@ zU6HBRQ<4(846<`M_DL|)iLb^i7Y8+I5MBg8OR1iKul+ph2Q#UF7sMNRAG6Ybwy?`K qY2J+d(t!jIH6X7q-=TORjQunqi*RO=V*(gi$SMG__>X}mJIddMW-`wJ diff --git a/COM/__pycache__/COM_TCP.cpython-39.pyc b/COM/__pycache__/COM_TCP.cpython-39.pyc index 10d2e88c824f2c3bb9e4d2b7640c21c113303755..04b765e50e1c6e015f8333c422d28a11aee64681 100644 GIT binary patch delta 447 zcmYk2OG`pg5XaBl=ke;bTUxs4WeFk#k?kxflp=ykNT^*17pfasoeq>@1i5P!3EAW74dg06PL;)r{ngfV8}ztI1Fe>Tt!bm8Js3Xv|Yx9VfKJv9YBICT-WO z6Z1#Nu-9?LT;AqXpR4xPSi@z?MSOIW%Q= zqvwaTUF&}*jY`DuNgD_j2viA-N*h14;lbeI`sIah&r`1|?Ja0qRt@Br7S@XSLUs^G z^*OZ#Sv=5ZA&z%?4ozb?sP0SA(s#vXSz_9_OpW+|1{^F1fdUTsFvKBAoPC0^5t(-Yh^$H delta 383 zcmZ9Hze)o^5XN`zZtwOkxp?_|ASwxpffQnF3|K@Wij@c{)G}}oyev zvAR5g_#D1~rn3>W6)dcrQ?YQ0VQ0VZ`werQf5^EV*L4_GY52ImcJGe$^a3yzv5?(> ztl_&}_m>Q&tU(Cu9DtooM$BNL9vIj*Dwn)xNTx(!UXiBk*ior4t=up((#Sg%v3O#{ z{uGatY@+P26QZcx;FG9{vk_@wKCpV4e4*WixcHqCf%wNQ{iOF;K)DMIInSo%iJ=pt zpafRn+ktdPz$>vW(ldk8i@Kg_>Q> T%+Tl9l%0NXbSSI1Y`4Dv!O~Wc diff --git a/CU/Feeding.py b/CU/Feeding.py index 3062ed3..85fb19f 100644 --- a/CU/Feeding.py +++ b/CU/Feeding.py @@ -29,7 +29,7 @@ from Util.util_log import log from Model.RobotModel import Instruction from EMV.EMV import RelayController from CU.drop import DropPositionManager -# from Mv3D.CameraImg import CameraImg +from Mv3D.CameraUtil import CameraUtil class ResetStatus(Enum): RNone = 0 RStart = 1 @@ -326,7 +326,7 @@ class Feeding(QObject): #用于同步控制EMV相关 self.relay_controller = relay_controller self.relay_controller.take_robot_signal.connect(self.take_feed_notice) - # self.camera_img=CameraImg() + self.camera_img=CameraUtil() # 启动传感器2线程 # self.relay_controller._running = True # self.sensor2_thread = None @@ -340,8 +340,8 @@ class Feeding(QObject): # self.detect_thread.join() if self.detect.detection: self.detect.detection.release() - # if self.camera_img: - # self.camera_img.close_camera() + if self.camera_img: + self.camera_img.release() def run_detect(self): #图片相关线程 @@ -502,7 +502,7 @@ class Feeding(QObject): time.sleep(1) # 每秒检查一次 #第二次执行FeedStatus.FPhoto时,改变码垛点 - # self.camera_img.save_frame_path() + self.camera_img.save_img() self.feedConfig.feedLine.set_feeding_to_end() # self.take_photo_sigal.emit() self.next_position() diff --git a/CU/__pycache__/Catch.cpython-39.pyc b/CU/__pycache__/Catch.cpython-39.pyc index 1053da31cd37618e612cfaad8c027ab90fe2307b..dbe7a5a34822aead4455bce3a25f64efdbdb0139 100644 GIT binary patch delta 20 acmbO#Fjas%k(ZZ?0SG>ef7{5-#Q^{>rUa<~ delta 20 acmbO#Fjas%k(ZZ?0SLrq-q^^^#Q^{;5d<&* diff --git a/CU/__pycache__/Command.cpython-39.pyc b/CU/__pycache__/Command.cpython-39.pyc index dfd4570d949883aae5f3d3db9ec4c3b5fb565daf..22d7484876591c0a83e4e39dc014cedeef35c73a 100644 GIT binary patch delta 20 acmaFF{)nABk(ZZ?0SG>ef7{4?of!Z-Wd->F delta 20 acmaFF{)nABk(ZZ?0SLrq-q^@}of!Z(&;@`1 diff --git a/CU/__pycache__/Detect.cpython-39.pyc b/CU/__pycache__/Detect.cpython-39.pyc index f5aa7446608ff6b0fc0602fc036fdeebbff0f32d..c4c147e2977da031790c1ddf0d98df302a418c91 100644 GIT binary patch delta 20 acmaE?{8*Vgk(ZZ?0SG>ef7{4?Ll6Kziv~gf delta 20 acmaE?{8*Vgk(ZZ?0SLrq-q^@}Ll6Kv_65lR diff --git a/CU/__pycache__/EMV.cpython-39.pyc b/CU/__pycache__/EMV.cpython-39.pyc index 2215df0f7ed0d8049d8342e25d984a3a3e564905..ad6c6d62deb1a929ffea80a7edd1722f8ea443a5 100644 GIT binary patch delta 20 acmbQpH<6D!k(ZZ?0SG>ef7{5-#tr~3y#$y5 delta 20 acmbQpH<6D!k(ZZ?0SLrq-q^^^#tr~0C diff --git a/CU/__pycache__/Feeding.cpython-39.pyc b/CU/__pycache__/Feeding.cpython-39.pyc index 242680e4f6985e897e8ccfcf9e8260b2fbbeb723..ade07a46fddfef9e8d01ffc57adaf01dbda1d1cf 100644 GIT binary patch delta 5949 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 delta 20 acmezA_0x+xk(ZZ?0SLrq-q^^UrwRZ=_66+# diff --git a/Constant.py b/Constant.py index 60677af..cfbccfa 100644 --- a/Constant.py +++ b/Constant.py @@ -3,7 +3,7 @@ import os # 调试变量 Debug = False # 控制不加图像的Fphoto False是不加 Debug1 = False # 打印很多日志节点 -DebugPosition = False # 调试位置,关闭机器人和传感器及判断 +DebugPosition = True # 调试位置,关闭机器人和传感器及判断 # Debug2 = False feedStatus = True #feedStatus的状态打印 diff --git a/EMV/__pycache__/EMV.cpython-39.pyc b/EMV/__pycache__/EMV.cpython-39.pyc index ff07aaa4626e2e99ab8dffdd8453a587c90b4264..c6e57ac8b0b81876d260615b209d4fbc1ab76aa0 100644 GIT binary patch delta 20 acmeAP=n3FXIk(ZZ?0SG>ef7{3%#t#5Jg$1wx delta 20 acmaDT_fU>Ik(ZZ?0SLrq-q^?;#t#5F@C7#j diff --git a/Model/__pycache__/Position.cpython-39.pyc b/Model/__pycache__/Position.cpython-39.pyc index baefbe0335b7d4fbe0bef239e3e165d51936231f..876037c60e1f6e368bd662db481c1545248e6b9c 100644 GIT binary patch delta 20 acmew^^Ie8Jk(ZZ?0SG>ef7{5N!v_FBtOe}= delta 20 acmew^^Ie8Jk(ZZ?0SLrq-q^^U!v_F87X@?x diff --git a/Model/__pycache__/RobotModel.cpython-39.pyc b/Model/__pycache__/RobotModel.cpython-39.pyc index 22ac5723fe5958dc19083710a218e3965cc47ef8..43541fb764ac4cbbd5281ba582dfdd0763b07003 100644 GIT binary patch delta 20 acmX?NdBl=Ck(ZZ?0SG>ef7{5tQw9J%)&?8^ delta 20 acmX?NdBl=Ck(ZZ?0SLrq-q^^!Qw9J!K?S1# diff --git a/Mv3D/CameraUtil.py b/Mv3D/CameraUtil.py new file mode 100644 index 0000000..111d5b4 --- /dev/null +++ b/Mv3D/CameraUtil.py @@ -0,0 +1,202 @@ +# vision/camera.py +import cv2 +import os +import time +from datetime import datetime +import numpy as np +import shutil # 用于检查磁盘空间 + +class CameraUtil: + """ + 海康摄像头工具类,用于初始化、设置配置、捕获图像等操作 + """ + def __init__(self): + self.camera = None + self.camera_type = "ip" + self.camera_ip = "192.168.0.234" + self.camera_port = 554 + self.camera_username = "admin" + self.camera_password = "ailaimiye123" + self.camera_channel = 1 + + def set_config(self, camera_type="ip", ip=None, port=None, username=None, password=None, channel=1): + """ + 设置摄像头配置 + """ + self.camera_type = camera_type + if ip: + self.camera_ip = ip + if port: + self.camera_port = port + if username: + self.camera_username = username + if password: + self.camera_password = password + self.camera_channel = channel + + def setup_capture(self, camera_index=0): + """ + 设置摄像头捕获 + """ + try: + rtsp_url = f"rtsp://{self.camera_username}:{self.camera_password}@{self.camera_ip}:{self.camera_port}/streaming/channels/{self.camera_channel}01" + self.camera = cv2.VideoCapture(rtsp_url, cv2.CAP_FFMPEG) + + if not self.camera.isOpened(): + print(f"无法打开网络摄像头: {rtsp_url}") + return False + print(f"网络摄像头初始化成功,地址: {rtsp_url}") + # 关键优化:设置极低的缓冲区大小 + self.camera.set(cv2.CAP_PROP_BUFFERSIZE, 1) + # 确保设置合理的帧率 + self.camera.set(cv2.CAP_PROP_FPS, 25) + + # 设置超时参数 + self.camera.set(cv2.CAP_PROP_OPEN_TIMEOUT_MSEC, 5000) # 5秒超时 + self.camera.set(cv2.CAP_PROP_READ_TIMEOUT_MSEC, 1000) # 1秒读取超时 + return True + except Exception as e: + print(f"摄像头设置失败: {e}") + return False + + def capture_frame(self): + """捕获当前帧并返回numpy数组,设置5秒总超时""" + try: + if self.camera is None: + print("摄像头未初始化") + return None + + # 设置总超时时间为5秒 + total_timeout = 5.0 # 5秒总超时时间 + start_time = time.time() + + # 跳20帧,获取最新图像 + frames_skipped = 0 + while frames_skipped < 20: + # 检查总超时 + if time.time() - start_time > total_timeout: + print("捕获图像总超时") + return None + self.camera.grab() + time.sleep(0.05) # 稍微增加延迟,确保有新帧到达 + frames_skipped += 1 + + # 尝试读取帧,使用同一超时计时器 + read_attempts = 0 + max_read_attempts = 3 + if self.camera.grab(): + while read_attempts < max_read_attempts: + # 使用同一个超时计时器检查 + if time.time() - start_time > total_timeout: + print("捕获图像总超时") + return None + + ret, frame = self.camera.retrieve() + if ret: + return frame + else: + print(f"尝试读取图像帧失败,重试 ({read_attempts+1}/{max_read_attempts})") + read_attempts += 1 + # 短暂延迟后重试 + time.sleep(0.05) + + print("多次尝试后仍无法捕获有效图像帧") + return None + except Exception as e: + print(f"图像捕获失败: {e}") + return None + + def release(self): + """释放摄像头资源""" + if self.camera is not None: + self.camera.release() + self.camera = None + print("摄像头资源已释放") + + def save_frame(self, frame, save_dir="captured_frames", filename=None): + """ + 保存图像帧到指定目录,按日期创建子文件夹 + :param frame: 要保存的图像帧 + :param save_dir: 保存根目录 + :param filename: 保存的文件名,如果为None则使用时分秒格式 + :return: 保存的文件路径 + """ + try: + # 确保保存根目录存在 + if not os.path.exists(save_dir): + os.makedirs(save_dir) + print(f"创建保存根目录: {save_dir}") + + # 检查磁盘可用空间 - 修复变量名称错误 + total, used, free = shutil.disk_usage(save_dir) + if free < 1024 * 1024 * 20: # 小于 20MB 就停止 + print(f"❌ 磁盘空间严重不足(仅剩 {free / (1024**3):.2f} GB),停止运行。") + return None + + # 获取当前日期,创建日期子文件夹 + current_date = datetime.now().strftime("%Y%m%d") + date_dir = os.path.join(save_dir, current_date) + + # 确保日期子文件夹存在 + if not os.path.exists(date_dir): + os.makedirs(date_dir) + print(f"创建日期文件夹: {date_dir}") + + # 生成文件名(时分秒格式) + if filename is None: + time_str = datetime.now().strftime("%Y%m%d%H%M%S") + filename = f"{time_str}.jpg" + + # 保存图像到日期子文件夹 + save_path = os.path.join(date_dir, filename) + loc_status=cv2.imwrite(save_path, frame) + if not loc_status: + print(f"保存图像失败: {save_path}") + return None + print(f"图像已保存到: {save_path}") + return save_path + except Exception as e: + print(f"保存图像失败: {e}") + return None + + def save_img(self): + """ + 保存当前帧 + :return: None + """ + if self.camera is None: + self.setup_capture() + frame = self.capture_frame() + if frame is not None: + self.save_frame(frame) + self.release() + else: + print("无法捕获图像帧") + return None + + + def __del__(self): + """关闭 + """ + self.release() + + +if __name__ == "__main__": + camera = CameraUtil() + for i in range(10): + camera.save_img() + time.sleep(5) + camera.release() + # camera.set_config(camera_type="ip", ip="192.168.0.234", port=554, username="admin", password="ailaimiye123", channel=1) + # camera.setup_capture() + # for i in range(10): + # frame = camera.capture_frame() + + # if frame is not None: + # 保存当前帧 + # camera.save_frame(frame) + # cv2.imshow("Camera Feed", frame) + print('success') + + # camera.release() + # cv2.destroyAllWindows() diff --git a/Trace/__pycache__/handeye_calibration.cpython-39.pyc b/Trace/__pycache__/handeye_calibration.cpython-39.pyc index 00d29c510c03d0cbbda1e7d53a0ae6b988c4c58b..42b805fed6b9beeca4e074a1f57e35f78adb0693 100644 GIT binary patch delta 20 acmZn_X%*p4ef7{6I%?ef7{5th6eyQJ_V%! delta 20 acmdlkxm}Vwk(ZZ?0SLrq-q^^!h6eyMsRb+m diff --git a/Util/__pycache__/util_math.cpython-39.pyc b/Util/__pycache__/util_math.cpython-39.pyc index c67aa7964587750d831b68734333b58cdd0c11f1..6d15819b78b4c844388adb470b591d542666c307 100644 GIT binary patch delta 20 acmZ3^vYdrGk(ZZ?0SG>ef7{3{!vp{@zy!en delta 20 acmZ3^vYdrGk(ZZ?0SLrq-q^@3!vp{=D+EXY diff --git a/Util/__pycache__/util_pic.cpython-39.pyc b/Util/__pycache__/util_pic.cpython-39.pyc index a421dde3d4f5f1636b1c377df88fc11f701c53df..740dd6427f043ee92b67985ab9f78ac4dd66d7a8 100644 GIT binary patch delta 20 acmX@bdWw}hk(ZZ?0SG>ef7{5tp9ugrTm`HE delta 20 acmX@bdWw}hk(ZZ?0SLrq-q^^!p9ugn#|1M0 diff --git a/Util/__pycache__/util_time.cpython-39.pyc b/Util/__pycache__/util_time.cpython-39.pyc index da6d4846b85b8aa23263062605045ff26afd28b0..8461fef961bf201d3bbff357cc854b1a8b83ca08 100644 GIT binary patch delta 20 acmZ3byh@onk(ZZ?0SG>ef7{4CUl0H`qXm}$ delta 20 acmZ3byh@onk(ZZ?0SLrq-q^@JUl0H@4h0?n diff --git a/__pycache__/Constant.cpython-39.pyc b/__pycache__/Constant.cpython-39.pyc index ac54e657b0fda8c73b015f5d7b8adc184d8ff6d3..5ce79db285a2972b0941c7d8f26776cb38c0a70e 100644 GIT binary patch delta 20 acmcbsa#w{rk(ZZ?0SJ~zecQ+#Bm@9EsRd^M delta 20 acmcbsa#w{rk(ZZ?0SF#1zOj)zNC*Hx0tOKP diff --git a/__pycache__/Expection.cpython-39.pyc b/__pycache__/Expection.cpython-39.pyc index 8d9e7ea3fe38bc0883e4f09569b4efd05acbaaf5..cdf178bef1b9dc66287b0e0feb59f0e549812ad6 100644 GIT binary patch delta 20 acmey)@|}e{k(ZZ?0SG>ef7{5N!vp|5Kn1Y? delta 20 acmey)@|}e{k(ZZ?0SLrq-q^^U!vp|1s|7d! diff --git a/__pycache__/MainRecources_rc.cpython-39.pyc b/__pycache__/MainRecources_rc.cpython-39.pyc index f51d7fd2950d65fe2be94352a0b762987aad2a97..33935d38345cfcfff63d7c53222d8c769fe512fc 100644 GIT binary patch delta 374 zcmYk$ze|Ea9LMqd`s9zyk56hn-Q>UEYJWuFA~d*!ApRAK!v`Fr(KV<^nxZ8{T!NN@ zqV~u^|A1%q`^X*V4aeR4UVOQ9-A~tj+yG^x>(Zvf_X!9gazsQN5qY9O6p0dXOq7We zqCzOE5;1W~)QCFKAkK($A|WoGVdtCiOs;OPb#gNsZ)Cq4$?8zg?fqSAex{G!j$Dlz z8&@;??`k}F3RYfSwI6@M%GA|l{CR(XAAJ7RFZoYM;s<{{25atIjhfwH&C1)}JXra0 X)qXF7m5$a}?Ngr9M(H#w>u`(mfTNwvuI)@kD=B@ z`l@bWtJ)CxR`o8Ys?uwoRQ}~%=a|RdonxrIjLNqz5e)>)E`olMGgP} diff --git a/__pycache__/toggleswitch.cpython-39.pyc b/__pycache__/toggleswitch.cpython-39.pyc index cb5ae4176020846f8eb8cda5661089cdf206450a..dd080699cdcd31ec5d6460554ee25e71f8adbb97 100644 GIT binary patch delta 20 acmcc5d!Ls(k(ZZ?0SLZ`f7{4?g$)2Z&jtVh delta 20 acmcc5d!Ls(k(ZZ?0SF{!-q^@}g$)2WK?R5a diff --git a/__pycache__/ui_MainWin.cpython-39.pyc b/__pycache__/ui_MainWin.cpython-39.pyc index 235a4ca7c63b455b375bab671087c16a8833f929..d085d50de77f73a68c9b2617f57574be8b691cd3 100644 GIT binary patch delta 179 zcmdnf%5tccg*TCxmx}=iG~~Z!T-?YTvYRn%GS4=d$#uIGCLipVn!J6t1Cx=#=AXOW z7#WQxCoYzp9J$wqv3RoKK50HTHzzl1uC)BT5-SBGgUS2$7J((yff|4u=gD*SDS`zg zC-<*ao}9DKeX_%TF2)j|UP%EHOG{@{6C~Zm`_mwb1q_{?jGPRSr1tG~-0Xay(g^^g CMnGx+ delta 155 zcmX@q%Ce`Gg*TCxmx}=iBxc^oIK7cKWH)2zWS(s@lk0XXOm>(gIeEu!2PQ+q&A)cL zF)|uXcHA4vSTyI#i82YjH_pQORW8 eee#nt_Jh>$O>W&E3DxxjECMo1Z?ortN+$q~en8p) diff --git a/log/log.log b/log/log.log index 6d4e00b..8998ef2 100644 --- a/log/log.log +++ b/log/log.log @@ -17227,3 +17227,115 @@ 2025-09-24 21:48:05 - INFO - 退出系统 2025-09-28 10:57:07 - INFO - 进入系统 2025-09-28 10:57:30 - INFO - 退出系统 +2025-10-20 19:19:29 - INFO - 进入系统 +2025-10-20 19:20:09 - INFO - 退出系统 +2025-10-20 19:22:08 - INFO - 进入系统 +2025-10-20 19:22:21 - INFO - 退出系统 +2025-10-20 19:29:07 - INFO - 进入系统 +2025-10-20 19:29:43 - INFO - 退出系统 +2025-10-20 19:30:35 - INFO - 进入系统 +2025-10-20 19:33:22 - INFO - 退出系统 +2025-10-20 19:33:33 - INFO - 进入系统 +2025-10-20 19:34:22 - INFO - 退出系统 +2025-10-20 19:34:34 - INFO - 进入系统 +2025-10-20 19:34:50 - INFO - 退出系统 +2025-10-20 19:35:01 - INFO - 进入系统 +2025-10-20 19:35:19 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:35:19 - INFO - 切换到工具坐标 +2025-10-20 19:35:19 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:35:19 - INFO - 切换到自动运行状态 +2025-10-20 19:37:38 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:37:38 - INFO - 切换到工具坐标 +2025-10-20 19:37:38 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:37:38 - INFO - 切换到自动运行状态 +2025-10-20 19:37:39 - INFO - 第一层确认生产 +2025-10-20 19:37:40 - INFO - 1号线:投料开始 +2025-10-20 19:37:40 - INFO - 发送命令{"dsID":"HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"200","type":"0","io_status":"1","point":"2","delay":"0"}]} +2025-10-20 19:37:40 - INFO - 发送IO控制: 2,1 +2025-10-20 19:37:45 - INFO - 发送命令{"dsID":"HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"200","type":"0","io_status":"0","point":"2","delay":"0"}]} +2025-10-20 19:37:45 - INFO - 发送IO控制: 2,0 +2025-10-20 19:37:46 - INFO - 投料开始 +2025-10-20 19:37:46 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:37:46 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:37:46 - INFO - 投料开始 +2025-10-20 19:37:46 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:37:46 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:37:46 - INFO - 移动到中位位置 +2025-10-20 19:37:46 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:37:46 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:37:47 - INFO - 检测是否安全投料 +2025-10-20 19:37:47 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:37:47 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:37:47 - INFO - 检测是否安全投料 +2025-10-20 19:37:47 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:37:47 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:37:47 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:37:47 - INFO - 拍照 +2025-10-20 19:37:47 - INFO - 识别图像成功 +2025-10-20 19:37:48 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:37:48 - INFO - 拍照 +2025-10-20 19:37:48 - INFO - 传感器2检测到料包到位开始执行抓取 +2025-10-20 19:37:53 - INFO - 投料暂停 +2025-10-20 19:37:53 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["actionPause","1"]} +2025-10-20 19:37:56 - INFO - 退出系统 +2025-10-20 19:38:18 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"-550.23053","m1":"-1411.78418","m2":"-825.0","m3":"-149.776047","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:37 - INFO - 进入系统 +2025-10-20 19:38:48 - INFO - 投料暂停 +2025-10-20 19:38:48 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["actionPause","1"]} +2025-10-20 19:38:49 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:38:50 - INFO - 切换到工具坐标 +2025-10-20 19:38:50 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:38:50 - INFO - 切换到自动运行状态 +2025-10-20 19:38:50 - INFO - 第一层确认生产 +2025-10-20 19:38:51 - INFO - 1号线:投料开始 +2025-10-20 19:38:51 - INFO - 发送命令{"dsID":"HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"200","type":"0","io_status":"1","point":"2","delay":"0"}]} +2025-10-20 19:38:51 - INFO - 发送IO控制: 2,1 +2025-10-20 19:38:56 - INFO - 发送命令{"dsID":"HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"200","type":"0","io_status":"0","point":"2","delay":"0"}]} +2025-10-20 19:38:56 - INFO - 发送IO控制: 2,0 +2025-10-20 19:38:56 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:57 - INFO - 投料开始 +2025-10-20 19:38:57 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:38:57 - INFO - 投料开始 +2025-10-20 19:38:57 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:38:57 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:57 - INFO - 移动到中位位置 +2025-10-20 19:38:57 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:38:57 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:57 - INFO - 检测是否安全投料 +2025-10-20 19:38:58 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:38:58 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:58 - INFO - 检测是否安全投料 +2025-10-20 19:38:58 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:38:58 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:58 - INFO - 拍照 +2025-10-20 19:38:58 - INFO - 识别图像成功 +2025-10-20 19:38:58 - INFO - 移动到位置:姿势直线:X:19.275372-Y:-1531.274658-Z:-59.998802-U:-73.544907-V:0.0-W:-0.0 +2025-10-20 19:38:58 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"19.275372","m1":"-1531.274658","m2":"-59.998802","m3":"-73.544907","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:38:59 - INFO - 拍照 +2025-10-20 19:38:59 - INFO - 传感器2检测到料包到位开始执行抓取 +2025-10-20 19:39:12 - INFO - 退出系统 +2025-10-20 19:39:29 - INFO - 发送命令{"dsID":"www.hc-system.com.HCRemoteCommand","reqType":"AddRCC","emptyList":"0","instructions":[{"oneshot":"1","action":"10","m0":"-550.23053","m1":"-1411.78418","m2":"-825.0","m3":"-149.776047","ckStatus":"0x3F","speed":"100","delay":"0","smooth":"9","tool":"2"}]} +2025-10-20 19:50:26 - INFO - 进入系统 +2025-10-20 19:50:45 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:50:45 - INFO - 切换到工具坐标 +2025-10-20 19:50:45 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:50:46 - INFO - 切换到自动运行状态 +2025-10-20 19:50:56 - INFO - 第一层确认生产 +2025-10-20 19:51:33 - INFO - 退出系统 +2025-10-20 19:51:44 - INFO - 进入系统 +2025-10-20 19:51:47 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:51:47 - INFO - 切换到工具坐标 +2025-10-20 19:51:47 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:51:47 - INFO - 切换到自动运行状态 +2025-10-20 19:51:54 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:51:54 - INFO - 切换到工具坐标 +2025-10-20 19:51:55 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:51:55 - INFO - 切换到自动运行状态 +2025-10-20 19:51:55 - INFO - 第一层确认生产 +2025-10-20 19:52:01 - INFO - 退出系统 +2025-10-20 19:52:49 - INFO - 进入系统 +2025-10-20 19:52:55 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["switchTool","2"]} +2025-10-20 19:52:56 - INFO - 切换到工具坐标 +2025-10-20 19:52:56 - INFO - 发送命令{"dsID":"www.hc-system.com.RemoteMonitor","reqType":"command","cmdData":["startButton","1"]} +2025-10-20 19:52:56 - INFO - 切换到自动运行状态 +2025-10-20 19:53:06 - INFO - 退出系统 diff --git a/main.py b/main.py index d82ca50..d15529c 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,7 @@ from PyQt5.uic.properties import QtWidgets from PySide6 import QtCore from PySide6.QtCore import QThread, Signal, Slot, QObject, QEvent, QTimer from PySide6.QtGui import QIntValidator, QStandardItemModel, QStandardItem, Qt, QMovie, QIcon, QCursor, QColor, \ - QTextCursor + QTextCursor,QFont from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QHeaderView, QTableWidget, \ QTableWidgetItem, QWidget, QHBoxLayout, QAbstractItemView, QMessageBox, QSizePolicy, QComboBox, QMenu, QDialog, QGridLayout from datetime import datetime @@ -1019,6 +1019,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): msg_box_person.setIcon(QMessageBox.Icon.Information) msg_box_person.setText("是否确认生产区域安全继续生产?") msg_box_person.setWindowTitle("提示") + font=QFont("Microsoft YaHei UI",20) + msg_box_person.setFont(font) ok_button = msg_box_person.addButton("确定", PySide6.QtWidgets.QMessageBox.ButtonRole.AcceptRole) cancel_button = msg_box_person.addButton("取消", PySide6.QtWidgets.QMessageBox.ButtonRole.RejectRole) @@ -1154,7 +1156,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): button.setStyleSheet( """ *{background-color: #101F3F; - font: 10pt "楷体"; + font: 20pt "楷体"; color:#ffffff; border-radius: 5px; min-height: 40px; @@ -1181,7 +1183,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): cancel_button.setStyleSheet( """ *{background-color: #6c757d; - font: 10pt "楷体"; + font: 20pt "楷体"; color:#ffffff; border-radius: 5px; min-height: 40px; @@ -1678,6 +1680,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): msg_box_finish.setText("码垛完成,请移走拖板") msg_box_finish.setWindowTitle("提示") msg_box_finish.addButton("确定", QMessageBox.AcceptRole) + loc_font=QFont("Microsoft YaHei UI",20) + msg_box_finish.setFont(font) result=msg_box_finish.exec() self.label_remain_num.setText(str(self.feeding.feedConfig.remain_count)) self.stop_all_work() diff --git a/resources_rc.py b/resources_rc.py index 4eb583e..d503211 100644 --- a/resources_rc.py +++ b/resources_rc.py @@ -4260,7 +4260,7 @@ qt_resource_struct = b"\ \x00\x00\x00\x0a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x99\x8e\x16\x01P\ +\x00\x00\x01\x9a\x01M\x90h\ " def qInitResources(): diff --git a/ui_MainWin.py b/ui_MainWin.py index e2757f3..9b9e117 100644 --- a/ui_MainWin.py +++ b/ui_MainWin.py @@ -3445,7 +3445,7 @@ class Ui_MainWindow(object): self.lineEdit_num.setSizePolicy(sizePolicy1) self.lineEdit_num.setStyleSheet(u"color: rgb(255, 255, 255);\n" "border: 1px solid #dcdfe6;\n" -"font: 9pt \"Microsoft YaHei UI\";") +"font: 12pt \"Microsoft YaHei UI\";") self.gridLayout.addWidget(self.lineEdit_num, 0, 0, 1, 4) @@ -3455,7 +3455,7 @@ class Ui_MainWindow(object): self.pushButton_numkeybord.setSizePolicy(sizePolicy1) self.pushButton_numkeybord.setStyleSheet(u"\n" "*{background-color: #101F3F;\n" -"font: 11pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "color:#ffffff\n" "}\n" "*:hover {\n" @@ -3475,7 +3475,7 @@ class Ui_MainWindow(object): self.pushButton_num_confirm.setSizePolicy(sizePolicy1) self.pushButton_num_confirm.setStyleSheet(u"\n" "*{background-color: #101F3F;\n" -"font: 11pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "color:#ffffff\n" "}\n" "*:hover {\n" @@ -3516,7 +3516,7 @@ class Ui_MainWindow(object): self.label_button_status.setStyleSheet(u"\n" "QLabel{\n" "background-color: rgba(255, 255, 255, 0);\n" -"font: 700 16pt \"Microsoft YaHei UI\";\n" +"font: 700 36pt \"Microsoft YaHei UI\";\n" "color:#FF0000;\n" "}") @@ -3545,7 +3545,7 @@ class Ui_MainWindow(object): self.pushButton_reset.setSizePolicy(sizePolicy5) self.pushButton_reset.setStyleSheet(u"*{\n" "background-color: #FFFFBF;\n" -"font: 9pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "border-radius: 10px;\n" "}\n" "*:pressed\n" @@ -3584,7 +3584,7 @@ class Ui_MainWindow(object): self.pushButton_stopFeed.setSizePolicy(sizePolicy5) self.pushButton_stopFeed.setStyleSheet(u"*{\n" "background-color: #FF0000;\n" -"font: 9pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "border-radius: 10px;\n" "}\n" "*:pressed\n" @@ -3603,7 +3603,7 @@ class Ui_MainWindow(object): self.pushButton_pauseFeed.setSizePolicy(sizePolicy5) self.pushButton_pauseFeed.setStyleSheet(u"*{\n" "background-color: #2196F3;\n" -"font: 9pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "border-radius: 10px;\n" "}\n" "*:pressed\n" @@ -3622,7 +3622,7 @@ class Ui_MainWindow(object): self.pushButton_startFeed.setSizePolicy(sizePolicy5) self.pushButton_startFeed.setStyleSheet(u"*{\n" "background-color: #499C54;\n" -"font: 9pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "\n" "border-radius: 10px;\n" "}\n" @@ -3642,7 +3642,7 @@ class Ui_MainWindow(object): self.pushButton_clearAlarm.setSizePolicy(sizePolicy5) self.pushButton_clearAlarm.setStyleSheet(u"*{\n" "background-color: #1CB2B1;\n" -"font: 9pt \"\u6977\u4f53\";\n" +"font: 20pt \"\u6977\u4f53\";\n" "border-radius: 10px;\n" "}\n" "*:pressed\n" diff --git a/view/__pycache__/ResetView.cpython-39.pyc b/view/__pycache__/ResetView.cpython-39.pyc index f6eab996f60b19bcbd7b2794d9bc77c9c7642d57..7734ba3074be92ec3240298dbe37513c7418aa0c 100644 GIT binary patch delta 20 acmdnUzLA|fk(ZZ?0SLZ`f7{5tj2Qqk#06&n delta 20 acmdnUzLA|fk(ZZ?0SF{!-q^^!j2QqhHU#eg diff --git a/view/__pycache__/ui_Dialog_Reset.cpython-39.pyc b/view/__pycache__/ui_Dialog_Reset.cpython-39.pyc index f26ba73b3171a7dac0366f9040490110f7fe1d47..85e2286b3ec437e3956cbed4e46dae17b0e0a181 100644 GIT binary patch delta 20 acmaDU{8E@Zk(ZZ?0SLZ`f7{4?j}rhsItDEO delta 20 acmaDU{8E@Zk(ZZ?0SF{!-q^@}j}rhotOd0I