update version, fix bug / validate flash fw
This commit is contained in:
@@ -11,6 +11,10 @@ echo.
|
|||||||
|
|
||||||
cd /d "%~dp0"
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
REM Doc version tu file
|
||||||
|
set /p APP_VERSION=<version.txt
|
||||||
|
echo Building version: v%APP_VERSION%
|
||||||
|
|
||||||
REM 1. Tao venv neu chua co
|
REM 1. Tao venv neu chua co
|
||||||
if not exist "venv" (
|
if not exist "venv" (
|
||||||
echo [1/4] Creating virtual environment...
|
echo [1/4] Creating virtual environment...
|
||||||
@@ -27,9 +31,10 @@ pip install -r requirements.txt pyinstaller --quiet
|
|||||||
REM 4. Build .exe
|
REM 4. Build .exe
|
||||||
echo [3/4] Building executable...
|
echo [3/4] Building executable...
|
||||||
pyinstaller ^
|
pyinstaller ^
|
||||||
--name "Mira_Firmware_Loader_v1.1.0" ^
|
--name "Mira_Firmware_Loader_v%APP_VERSION%" ^
|
||||||
--icon "icon.ico" ^
|
--icon "icon.ico" ^
|
||||||
--add-data "icon.ico;." ^
|
--add-data "icon.ico;." ^
|
||||||
|
--add-data "version.txt;." ^
|
||||||
--onefile ^
|
--onefile ^
|
||||||
--windowed ^
|
--windowed ^
|
||||||
--noconfirm ^
|
--noconfirm ^
|
||||||
@@ -47,11 +52,11 @@ echo.
|
|||||||
echo [4/4] Build complete!
|
echo [4/4] Build complete!
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
if exist "dist\Mira_Firmware_Loader_v1.1.0.exe" (
|
if exist "dist\Mira_Firmware_Loader_v%APP_VERSION%.exe" (
|
||||||
echo SUCCESS: dist\Mira_Firmware_Loader_v1.1.0.exe
|
echo SUCCESS: dist\Mira_Firmware_Loader_v%APP_VERSION%.exe
|
||||||
echo.
|
echo.
|
||||||
echo File size:
|
echo File size:
|
||||||
for %%A in ("dist\Mira_Firmware_Loader_v1.1.0.exe") do echo %%~zA bytes
|
for %%A in ("dist\Mira_Firmware_Loader_v%APP_VERSION%.exe") do echo %%~zA bytes
|
||||||
echo.
|
echo.
|
||||||
echo Ban co the copy file .exe nay sang may khac va chay truc tiep.
|
echo Ban co the copy file .exe nay sang may khac va chay truc tiep.
|
||||||
) else (
|
) else (
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ def _ping_sweep(network, progress_cb=None):
|
|||||||
if progress_cb:
|
if progress_cb:
|
||||||
progress_cb(done_count[0], total)
|
progress_cb(done_count[0], total)
|
||||||
|
|
||||||
with ThreadPoolExecutor(max_workers=70) as executor:
|
with ThreadPoolExecutor(max_workers=100) as executor:
|
||||||
futures = [executor.submit(_ping_and_track, ip) for ip in hosts]
|
futures = [executor.submit(_ping_and_track, ip) for ip in hosts]
|
||||||
for f in as_completed(futures):
|
for f in as_completed(futures):
|
||||||
pass
|
pass
|
||||||
|
|||||||
20
main.py
20
main.py
@@ -28,7 +28,7 @@ from core.ssh_flasher import flash_device_ssh
|
|||||||
from core.workers import ScanThread, FlashThread
|
from core.workers import ScanThread, FlashThread
|
||||||
|
|
||||||
from utils.network import _resolve_hostname, get_default_network
|
from utils.network import _resolve_hostname, get_default_network
|
||||||
from utils.system import resource_path, get_machine_info
|
from utils.system import resource_path, get_machine_info, get_version
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ class App(QWidget):
|
|||||||
title.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
title.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
layout.addWidget(title)
|
layout.addWidget(title)
|
||||||
|
|
||||||
copyright_label = QLabel(f"© {datetime.datetime.now().year} Smatec — R&D Software Team. v1.1.0")
|
copyright_label = QLabel(f"© {datetime.datetime.now().year} Smatec — R&D Software Team. v{get_version()}")
|
||||||
copyright_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
copyright_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||||
copyright_label.setStyleSheet(
|
copyright_label.setStyleSheet(
|
||||||
"color: #9399b2; font-size: 11px; font-weight: 500; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto;"
|
"color: #9399b2; font-size: 11px; font-weight: 500; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto;"
|
||||||
@@ -337,12 +337,12 @@ class App(QWidget):
|
|||||||
parallel_row.addStretch()
|
parallel_row.addStretch()
|
||||||
flash_layout.addLayout(parallel_row)
|
flash_layout.addLayout(parallel_row)
|
||||||
|
|
||||||
btn_flash = QPushButton("⚡ FLASH SELECTED DEVICES")
|
self.btn_flash = QPushButton("⚡ FLASH SELECTED DEVICES")
|
||||||
btn_flash.setObjectName("flash")
|
self.btn_flash.setObjectName("flash")
|
||||||
btn_flash.setMinimumHeight(45)
|
self.btn_flash.setMinimumHeight(45)
|
||||||
btn_flash.setStyleSheet("QPushButton#flash { font-size: 16px; font-weight: bold; letter-spacing: 1px; }")
|
self.btn_flash.setStyleSheet("QPushButton#flash { font-size: 16px; font-weight: bold; letter-spacing: 1px; }")
|
||||||
btn_flash.clicked.connect(self.flash_all)
|
self.btn_flash.clicked.connect(self.flash_all)
|
||||||
flash_layout.addWidget(btn_flash)
|
flash_layout.addWidget(self.btn_flash)
|
||||||
|
|
||||||
flash_group.setLayout(flash_layout)
|
flash_group.setLayout(flash_layout)
|
||||||
layout.addWidget(flash_group)
|
layout.addWidget(flash_group)
|
||||||
@@ -657,6 +657,9 @@ class App(QWidget):
|
|||||||
self.flash_thread.device_status.connect(self._on_flash_status)
|
self.flash_thread.device_status.connect(self._on_flash_status)
|
||||||
self.flash_thread.device_done.connect(self._on_flash_done)
|
self.flash_thread.device_done.connect(self._on_flash_done)
|
||||||
self.flash_thread.all_done.connect(self._on_flash_all_done)
|
self.flash_thread.all_done.connect(self._on_flash_all_done)
|
||||||
|
|
||||||
|
# Disable flash button during flashing
|
||||||
|
self.btn_flash.setEnabled(False)
|
||||||
self.flash_thread.start()
|
self.flash_thread.start()
|
||||||
|
|
||||||
def _on_flash_status(self, index, msg):
|
def _on_flash_status(self, index, msg):
|
||||||
@@ -690,6 +693,7 @@ class App(QWidget):
|
|||||||
|
|
||||||
def _on_flash_all_done(self):
|
def _on_flash_all_done(self):
|
||||||
"""All flashing complete."""
|
"""All flashing complete."""
|
||||||
|
self.btn_flash.setEnabled(True)
|
||||||
QMessageBox.information(self, "Flash Complete", "All devices have been processed.")
|
QMessageBox.information(self, "Flash Complete", "All devices have been processed.")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,3 +34,11 @@ def get_machine_info():
|
|||||||
"os": os_info,
|
"os": os_info,
|
||||||
"mac": mac_addr,
|
"mac": mac_addr,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_version():
|
||||||
|
"""Read version from version.txt"""
|
||||||
|
try:
|
||||||
|
with open(resource_path('version.txt'), 'r', encoding='utf-8') as f:
|
||||||
|
return f.read().strip()
|
||||||
|
except Exception:
|
||||||
|
return "Unknown"
|
||||||
|
|||||||
1
version.txt
Normal file
1
version.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1.1.1
|
||||||
Reference in New Issue
Block a user