Carregar ficheiros para "/"
This commit is contained in:
66
readout.txt
Normal file
66
readout.txt
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
Alientech K-TAG Bench
|
||||||
|
Alientech K-TAG Bootmode
|
||||||
|
Alientech KESS3 Bench
|
||||||
|
Alientech KESS3 Bootmode
|
||||||
|
Alientech KESS3 OBD
|
||||||
|
Alientech KESSv2 OBD
|
||||||
|
AMT Cartech Limited MPPS Bench
|
||||||
|
AMT Cartech Limited MPPS Bootmode
|
||||||
|
AMT Cartech Limited MPPS OBD
|
||||||
|
Autotuner Bench
|
||||||
|
Autotuner Bootmode
|
||||||
|
Autotuner OBD
|
||||||
|
bFlash Bench
|
||||||
|
bFlash Bootmode
|
||||||
|
bFlash OBD
|
||||||
|
Bitbox Bench
|
||||||
|
Bitbox Bootmode
|
||||||
|
Bitbox OBD
|
||||||
|
ByteShooter Toolbox Bench
|
||||||
|
ByteShooter Toolbox Bootmode
|
||||||
|
ByteShooter Toolbox OBD
|
||||||
|
CMDFlash Bench
|
||||||
|
CMDFlash Bootmode
|
||||||
|
CMDFlash OBD
|
||||||
|
DFB Technology DFOX Bench
|
||||||
|
DFB Technology DFOX Bootmode
|
||||||
|
DFB Technology DFOX OBD
|
||||||
|
Dimtronic Diamond Bench
|
||||||
|
Dimtronic Diamond Bootmode
|
||||||
|
Dimtronic Diamond OBD
|
||||||
|
EVC Electronic BDM100 Bootmode
|
||||||
|
EVC Electronic BSL100 Bootmode
|
||||||
|
Femto OBD Flasher OBD
|
||||||
|
FG Technology EOBD2 Bench
|
||||||
|
FG Technology EOBD2 Bootmode
|
||||||
|
FG Technology EOBD2 OBD
|
||||||
|
Frieling Racing IBOOT Bootmode
|
||||||
|
Frieling Racing IFLASH OBD
|
||||||
|
Frieling Racing SPI Wizard Bench
|
||||||
|
Frieling Racing SPI Wizard Bootmode
|
||||||
|
Frieling Racing SPI Wizard OBD
|
||||||
|
Green Technology Devices VF2 Flasher Bench
|
||||||
|
Green Technology Devices VF2 Flasher Bootmode
|
||||||
|
Green Technology Devices VF2 Flasher OBD
|
||||||
|
HP Tuners MPVI2 Bench
|
||||||
|
HP Tuners MPVI2 OBD
|
||||||
|
I/O Terminal Bench
|
||||||
|
I/O Terminal Bootmode
|
||||||
|
I/O Terminal OBD
|
||||||
|
MagicMotorsport Flex Bench
|
||||||
|
MagicMotorsport Flex Bootmode
|
||||||
|
MagicMotorsport Flex OBD
|
||||||
|
MagicMotorsport MAGPro2 Bootmode
|
||||||
|
MagicMotorsport MAGPro2 OBD
|
||||||
|
New Genius OBD
|
||||||
|
New Trasdata Bench
|
||||||
|
New Trasdata Bootmode
|
||||||
|
PCM-Flash Bench
|
||||||
|
PCM-Flash Bootmode
|
||||||
|
PCM-Flash OBD
|
||||||
|
Piasini Engineering Serial Suite Bench
|
||||||
|
Piasini Engineering Serial Suite Bootmode
|
||||||
|
Piasini Engineering Serial Suite OBD
|
||||||
|
TGFlash Bench
|
||||||
|
TGFlash Bootmode
|
||||||
|
TGFlash OBD
|
||||||
8
requirements.txt
Normal file
8
requirements.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
numpy>=1.24.0
|
||||||
|
struct
|
||||||
|
plotly
|
||||||
|
tkinterweb
|
||||||
|
logging
|
||||||
|
PyQt6>=6.5.0
|
||||||
|
PyQt6-Charts>=6.5.0
|
||||||
|
psycopg2-binary>=2.9.9
|
||||||
88
view_parameters.py
Normal file
88
view_parameters.py
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
import tkinter as tk
|
||||||
|
from tkinter import ttk
|
||||||
|
|
||||||
|
class ViewParametersDialog:
|
||||||
|
def __init__(self, parent, current_params=None):
|
||||||
|
self.dialog = tk.Toplevel(parent)
|
||||||
|
self.dialog.title("Parâmetros de visualização")
|
||||||
|
self.dialog.geometry("300x400")
|
||||||
|
self.dialog.resizable(False, False)
|
||||||
|
|
||||||
|
# Make it modal
|
||||||
|
self.dialog.transient(parent)
|
||||||
|
self.dialog.grab_set()
|
||||||
|
|
||||||
|
# Use current parameters if provided, otherwise use defaults
|
||||||
|
if current_params is None:
|
||||||
|
current_params = {
|
||||||
|
'first_cell': '0000F0',
|
||||||
|
'offset': 0,
|
||||||
|
'columns': 16,
|
||||||
|
'hex_view': False,
|
||||||
|
'show_diff': True,
|
||||||
|
'value_type': '8bit'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parameters
|
||||||
|
self.first_cell = tk.StringVar(value=current_params['first_cell'])
|
||||||
|
self.offset = tk.StringVar(value=str(current_params['offset']))
|
||||||
|
self.columns = tk.StringVar(value=str(current_params['columns']))
|
||||||
|
self.hex_view = tk.BooleanVar(value=current_params['hex_view'])
|
||||||
|
self.show_diff = tk.BooleanVar(value=current_params['show_diff'])
|
||||||
|
self.value_type = tk.StringVar(value=current_params['value_type'])
|
||||||
|
|
||||||
|
self.create_widgets()
|
||||||
|
|
||||||
|
def create_widgets(self):
|
||||||
|
# Primeira Célula
|
||||||
|
ttk.Label(self.dialog, text="Primeira Célula").grid(row=0, column=0, sticky='w', padx=5, pady=2)
|
||||||
|
ttk.Entry(self.dialog, textvariable=self.first_cell, width=20).grid(row=1, column=0, sticky='w', padx=5)
|
||||||
|
|
||||||
|
# Offset byte num
|
||||||
|
ttk.Label(self.dialog, text="Offset byte num").grid(row=2, column=0, sticky='w', padx=5, pady=2)
|
||||||
|
ttk.Spinbox(self.dialog, from_=0, to=1000, textvariable=self.offset, width=5).grid(row=3, column=0, sticky='w', padx=5)
|
||||||
|
|
||||||
|
# Número de colunas
|
||||||
|
ttk.Label(self.dialog, text="Número de colunas").grid(row=4, column=0, sticky='w', padx=5, pady=2)
|
||||||
|
column_spin = ttk.Spinbox(self.dialog, from_=1, to=32, textvariable=self.columns, width=5)
|
||||||
|
column_spin.grid(row=5, column=0, sticky='w', padx=5)
|
||||||
|
|
||||||
|
# Checkboxes
|
||||||
|
ttk.Checkbutton(self.dialog, text="Mostrar em hexadecimal", variable=self.hex_view).grid(row=6, column=0, sticky='w', padx=5, pady=5)
|
||||||
|
ttk.Checkbutton(self.dialog, text="Mostrar diferenças", variable=self.show_diff).grid(row=7, column=0, sticky='w', padx=5)
|
||||||
|
|
||||||
|
# Valor Frame
|
||||||
|
value_frame = ttk.LabelFrame(self.dialog, text="Valor")
|
||||||
|
value_frame.grid(row=8, column=0, sticky='nsew', padx=5, pady=5)
|
||||||
|
|
||||||
|
# Valor options
|
||||||
|
ttk.Label(value_frame, text="Valor:").grid(row=0, column=0, sticky='w', padx=5, pady=2)
|
||||||
|
ttk.Radiobutton(value_frame, text="Valor de 8 bit", variable=self.value_type, value="8bit").grid(row=1, column=0, sticky='w', padx=20)
|
||||||
|
ttk.Radiobutton(value_frame, text="Valor de 16 bit", variable=self.value_type, value="16bit").grid(row=2, column=0, sticky='w', padx=20)
|
||||||
|
ttk.Radiobutton(value_frame, text="Valor de 32 bit", variable=self.value_type, value="32bit").grid(row=3, column=0, sticky='w', padx=20)
|
||||||
|
ttk.Radiobutton(value_frame, text="Valor floating point", variable=self.value_type, value="float").grid(row=4, column=0, sticky='w', padx=20)
|
||||||
|
|
||||||
|
# Buttons
|
||||||
|
button_frame = ttk.Frame(self.dialog)
|
||||||
|
button_frame.grid(row=10, column=0, pady=10)
|
||||||
|
|
||||||
|
ttk.Button(button_frame, text="OK", command=self.ok_clicked).pack(side=tk.LEFT, padx=5)
|
||||||
|
ttk.Button(button_frame, text="Cancelar", command=self.dialog.destroy).pack(side=tk.LEFT, padx=5)
|
||||||
|
|
||||||
|
def ok_clicked(self):
|
||||||
|
# Return the parameters
|
||||||
|
self.result = {
|
||||||
|
'first_cell': self.first_cell.get(),
|
||||||
|
'offset': int(self.offset.get()),
|
||||||
|
'columns': int(self.columns.get()),
|
||||||
|
'hex_view': self.hex_view.get(),
|
||||||
|
'show_diff': self.show_diff.get(),
|
||||||
|
'value_type': self.value_type.get()
|
||||||
|
}
|
||||||
|
self.dialog.destroy()
|
||||||
|
|
||||||
|
def show(self):
|
||||||
|
# Center the dialog on parent
|
||||||
|
self.dialog.focus_set()
|
||||||
|
self.dialog.wait_window()
|
||||||
|
return getattr(self, 'result', None)
|
||||||
Reference in New Issue
Block a user