v0.1.1(2024/05/30)
1. 增加版本检测功能 2. 修改了无效数据下的动作 3. textbox只在开始和结束时改变状态,而不是每次写入都更改 4. 调整了brake的结构
This commit is contained in:
@ -6,11 +6,14 @@ import customtkinter
|
||||
import brake
|
||||
import current
|
||||
from time import time, strftime, localtime
|
||||
from urllib.request import urlopen
|
||||
import socket
|
||||
|
||||
customtkinter.set_appearance_mode("System") # Modes: "System" (standard), "Dark", "Light"
|
||||
customtkinter.set_default_color_theme("blue") # Themes: "blue" (standard), "green", "dark-blue"
|
||||
customtkinter.set_widget_scaling(1.1) # widget dimensions and text size
|
||||
customtkinter.set_window_scaling(1.1) # window geometry dimensions
|
||||
socket.setdefaulttimeout(10)
|
||||
|
||||
|
||||
class App(customtkinter.CTk):
|
||||
@ -53,71 +56,85 @@ class App(customtkinter.CTk):
|
||||
self.btn_end = customtkinter.CTkButton(self.frame_func, corner_radius=10, text='结束运行', font=self.my_font, command=lambda: self.thread_it(self.func_end_call_back))
|
||||
self.btn_end.grid(row=4, column=0, sticky='new', padx=10, pady=10, ipadx=5, ipady=5)
|
||||
# create version info
|
||||
self.label_version = customtkinter.CTkLabel(self.frame_func, justify='left', text="Vers: 0.1.0\nDate: 05/29/2024", font=self.my_font, text_color="DarkCyan")
|
||||
self.label_version = customtkinter.CTkLabel(self.frame_func, justify='left', text="Vers: 0.1.1\nDate: 05/30/2024", font=self.my_font, text_color="DarkCyan")
|
||||
self.frame_func.rowconfigure(6, weight=1)
|
||||
self.label_version.grid(row=6, column=0, padx=20, pady=20, sticky='s')
|
||||
|
||||
# =====================================================================
|
||||
# create frame
|
||||
self.frame_param = customtkinter.CTkFrame(self, height=240, corner_radius=10)
|
||||
self.frame_param.grid(row=0, column=1, rowspan=3, columnspan=9, sticky='new', ipadx=20, ipady=10, padx=10, pady=10)
|
||||
# create option menu - main function
|
||||
# create main menu
|
||||
self.menu_main = customtkinter.CTkOptionMenu(self.frame_param, values=["INIT", "brake", "current"], font=self.my_font, command=self.func_main_callback)
|
||||
self.menu_main.grid(row=0, column=1, sticky='we', padx=(20, 10), pady=(10, 0))
|
||||
self.menu_main.set("Start Here!")
|
||||
|
||||
# create sub menu
|
||||
self.menu_sub = customtkinter.CTkOptionMenu(self.frame_param)
|
||||
|
||||
# create path related
|
||||
self.label_path = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="Path", font=self.my_font)
|
||||
self.label_path.grid(row=0, column=2, sticky='e', pady=(10, 5))
|
||||
self.entry_path = customtkinter.CTkEntry(self.frame_param, width=680, placeholder_text="数据文件夹路径", font=self.my_font)
|
||||
self.entry_path.grid(row=0, column=3, columnspan=7, padx=(5, 10), pady=(10, 5), sticky='we')
|
||||
self.entry_path.configure(state='disabled')
|
||||
|
||||
# create av related
|
||||
self.label_av = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="AV", font=self.my_font)
|
||||
self.label_av.grid(row=1, column=2, sticky='e', pady=(5, 5))
|
||||
self.entry_av = customtkinter.CTkEntry(self.frame_param, width=self.w_param, placeholder_text=f"角速度", font=self.my_font)
|
||||
self.entry_av.grid(row=1, column=3, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.entry_av.configure(state='disabled')
|
||||
|
||||
# create rc related
|
||||
self.label_rc = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="RC", font=self.my_font)
|
||||
self.label_rc.grid(row=1, column=4, sticky='e', pady=(5, 5))
|
||||
self.entry_rc = customtkinter.CTkEntry(self.frame_param, width=self.w_param, placeholder_text=f"额定电流", font=self.my_font)
|
||||
self.entry_rc.grid(row=1, column=5, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.entry_rc.configure(state='disabled')
|
||||
|
||||
# create rpm related
|
||||
self.label_rpm = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="RPM", font=self.my_font)
|
||||
self.label_rpm.grid(row=1, column=6, sticky='e', pady=(5, 5))
|
||||
self.entry_rpm = customtkinter.CTkEntry(self.frame_param, width=self.w_param, placeholder_text=f"额定转速", font=self.my_font)
|
||||
self.entry_rpm.grid(row=1, column=7, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.entry_rpm.configure(state='disabled')
|
||||
|
||||
# create rr related
|
||||
self.label_rr = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="RR", font=self.my_font)
|
||||
self.label_rr.grid(row=1, column=8, sticky='e', pady=(5, 5))
|
||||
self.entry_rr = customtkinter.CTkEntry(self.frame_param, width=self.w_param, placeholder_text=f"减速比", font=self.my_font)
|
||||
self.entry_rr.grid(row=1, column=9, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.entry_rr.configure(state='disabled')
|
||||
|
||||
# create axis related
|
||||
self.label_axis = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="AXIS", font=self.my_font)
|
||||
self.label_axis.grid(row=2, column=2, sticky='e', pady=(5, 5))
|
||||
self.option_axis = customtkinter.CTkOptionMenu(self.frame_param, values=["1", "2", "3", "4", "5", "6", "7"], width=self.w_param, font=self.my_font)
|
||||
self.option_axis.grid(row=2, column=3, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.option_axis.configure(state='disabled')
|
||||
|
||||
# create vel related
|
||||
self.label_vel = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="Vel", font=self.my_font)
|
||||
self.label_vel.grid(row=2, column=4, sticky='e', pady=(5, 5))
|
||||
self.option_vel = customtkinter.CTkOptionMenu(self.frame_param, values=["1", "2", "3", "4", "5", "6", "7"], width=self.w_param, font=self.my_font)
|
||||
self.option_vel.grid(row=2, column=5, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.option_vel.configure(state='disabled')
|
||||
|
||||
# create trq related
|
||||
self.label_trq = customtkinter.CTkLabel(self.frame_param, width=self.w_param//10, text="Trq", font=self.my_font)
|
||||
self.label_trq.grid(row=2, column=6, sticky='e', pady=(5, 5))
|
||||
self.option_trq = customtkinter.CTkOptionMenu(self.frame_param, values=["1", "2", "3", "4", "5", "6", "7"], width=self.w_param, font=self.my_font)
|
||||
self.option_trq.grid(row=2, column=7, padx=(5, 20), pady=(5, 5), sticky='w')
|
||||
self.option_trq.configure(state='disabled')
|
||||
# ========================================
|
||||
# =====================================================================
|
||||
# create textbox
|
||||
self.textbox = customtkinter.CTkTextbox(self, height=640, wrap='none', font=customtkinter.CTkFont(family="consolas", size=14), text_color="blue")
|
||||
self.textbox.grid(row=3, column=1, rowspan=5, columnspan=13, ipadx=10, ipady=10, padx=10, pady=10, sticky='nsew')
|
||||
self.textbox.configure(state='disabled')
|
||||
# =====================================================================
|
||||
# version check
|
||||
cur_vers = self.label_version.cget("text").replace('\n', ' @ ').replace("Vers: ", '').replace("Date: ", '')
|
||||
try:
|
||||
new_vers = urlopen("https://www.rustle.cc/vers").read().decode('utf-8')
|
||||
print(f"{cur_vers}")
|
||||
print(f"{new_vers}")
|
||||
if cur_vers.strip() != new_vers.strip():
|
||||
msg = f"""当前版本:{cur_vers}\n更新版本:{new_vers}\n\n请及时更新 https://pan.rustle.cc/s/jRfM"""
|
||||
tkinter.messagebox.showwarning(title="版本更新", message=msg)
|
||||
except:
|
||||
tkinter.messagebox.showwarning(title="版本更新", message="连接服务器失败,无法确认当前是否是最新版本......")
|
||||
|
||||
def thread_it(self, func, *args):
|
||||
""" 将函数打包进线程 """
|
||||
|
@ -6,8 +6,8 @@ VSVersionInfo(
|
||||
ffi=FixedFileInfo(
|
||||
# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
|
||||
# Set not needed items to zero 0.
|
||||
filevers=(0, 1, 0, 0),
|
||||
prodvers=(0, 1, 0, 0),
|
||||
filevers=(0, 1, 1, 0),
|
||||
prodvers=(0, 1, 1, 0),
|
||||
# Contains a bitmask that specifies the valid bits 'flags'r
|
||||
mask=0x3f,
|
||||
# Contains a bitmask that specifies the Boolean attributes of the file.
|
||||
@ -30,13 +30,13 @@ VSVersionInfo(
|
||||
StringTable(
|
||||
'040904b0',
|
||||
[StringStruct('CompanyName', 'Rokae - https://www.rokae.com/'),
|
||||
StringStruct('FileDescription', 'All in one automatic operating tool'),
|
||||
StringStruct('FileVersion', '0.1.0 (2024-05-24)'),
|
||||
StringStruct('FileDescription', 'All in one automatic toolbox'),
|
||||
StringStruct('FileVersion', '0.1.1 (2024-05-24)'),
|
||||
StringStruct('InternalName', 'AIO.exe'),
|
||||
StringStruct('LegalCopyright', '© 2024-2024 Manford Fan'),
|
||||
StringStruct('OriginalFilename', 'AIO.exe'),
|
||||
StringStruct('ProductName', 'AIO'),
|
||||
StringStruct('ProductVersion', '0.1.0 (2024-05-29)')])
|
||||
StringStruct('ProductVersion', '0.1.1 (2024-05-29)')])
|
||||
]),
|
||||
VarFileInfo([VarStruct('Translation', [1033, 1200])])
|
||||
]
|
||||
|
@ -13,11 +13,11 @@
|
||||
|
||||
https://customtkinter.tomschimansky.com/documentation/packaging
|
||||
pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/Administrator/AppData/Local/Programs/Python/Python312/Lib/site-packages/customtkinter;customtkinter/" --version-file file_version_info.txt -i .\icon.ico .\aio.py -p .\brake.py
|
||||
|
||||
|
||||
注意事项:
|
||||
1. 数据文件存储存储规则
|
||||
所谓数据文件,就是我们拍急停的时候,采集到的 .data 文件,正方向拍三次急停,会采集到三个 .data 文件,存储在同一个文件夹内,即每组(三个 .data 文件)文件必须存储在同一个文件夹内,数据文件的命名无要求,
|
||||
|
||||
|
||||
2. 文件夹命名规则
|
||||
虽然对采集到的 .data 文件没有命名要求,但是对于文件夹的命名是有要求的,必须是如下格式:
|
||||
loadXX_speedXX_reachXX 或者 loadXX_reachXX_speedXX
|
||||
@ -29,9 +29,9 @@
|
||||
load33_自研_制动性能测试.xlsx
|
||||
load66_自研_制动性能测试.xlsx
|
||||
load100_自研_制动性能测试.xlsx
|
||||
|
||||
|
||||
!!结果文件可以是没有数据的,也可以是之前有数据的,只要保证第 6 点中的那几个数据准确即可
|
||||
|
||||
|
||||
4. 数据存储的组织结
|
||||
..../j1/load100_speed33_reach100
|
||||
..../j1/load100_speed66_reach100
|
||||
@ -40,28 +40,28 @@
|
||||
..../j1/load100_speed33_reach100/2024_05_16_09_18_52.data
|
||||
..../j1/load100_speed33_reach100/2024_05_16_09_19_52.data
|
||||
..../j1/load100_speed33_reach100/2024_05_16_09_20_52.data
|
||||
|
||||
|
||||
..../j1/load33_自研_制动性能测试.xlsx
|
||||
..../j1/load66_自研_制动性能测试.xlsx
|
||||
..../j1/load100_自研_制动性能测试.xlsx
|
||||
|
||||
|
||||
5. 文件的打开与关闭
|
||||
a. 在执行程序之前,需要关闭所有相关 excle 文件
|
||||
b. 在执行程序之中,不允许打开相关 excle 文件
|
||||
c. 在执行程序之后,需要逐个打开结果文件,并保存一次
|
||||
|
||||
|
||||
6. 参数一致性检查
|
||||
执行程序前,需要确定 configs.xlsx 中设定的减速比/最大角速度/额定电流的值是正确的
|
||||
|
||||
|
||||
7. 数据准确性检查
|
||||
执行完程序之后,需要对结果文件的数据准确性做核对,通过我自己的数据观察,误差基本在10ms以内,也即10个数据点,误差较大的情况可自行调整
|
||||
|
||||
|
||||
8. .data 数据顺序
|
||||
.data 文件的第一列和第二列必须分别是速度和电流
|
||||
|
||||
|
||||
9. 其他
|
||||
程序运行主要的耗时集中在打开,保存和关闭结果文件,第一次打开的时候会比较慢,是因为 excel 在做首次公式的计算,保存关闭之后,再打开会比较快一些,另外,如果在运行出错并重复运行程序的时候无响应,或者出现异常,请打开任务管理器,关闭一切和excel相关的进程,重新运行即可
|
||||
|
||||
|
||||
|
||||
|
||||
RELEASE CHANGES
|
||||
@ -115,3 +115,9 @@ v0.1.0(2024/05/29)
|
||||
2. 支持工业机器人制动数据处理(理论上支持,测试数据有问题,待验证)
|
||||
3. 删除configs.xlsx配置表格,直接在界面配置,新增layout.xlsx文件,存储customtkinter布局
|
||||
4. 电流尚未支持
|
||||
|
||||
v0.1.1(2024/05/30)
|
||||
1. 增加版本检测功能
|
||||
2. 修改了无效数据下的动作
|
||||
3. textbox只在开始和结束时改变状态,而不是每次写入都更改
|
||||
4. 调整了brake的结构
|
||||
|
1
rokae/aio/vers
Normal file
1
rokae/aio/vers
Normal file
@ -0,0 +1 @@
|
||||
0.1.1 @ 05/30/2024
|
Reference in New Issue
Block a user