Nextion HMI 디스플레이를 시리얼로 업데이트 하는 파이썬 코드를 간단하게 작성했다.
NEXTION HMI UPLOAD PROTOCOL v1.1 을 참고해서 작성하면 되는데, 많은 코드들이 github에도 많이 있다.
아주 간단하게 그냥 기본적으로 기능만 확인했는데, 일단 업데이트는 정상적으로 되는 것 같다.
코드는 테스트 전용입니다. 사용상 에러에 대한 책임은 없습니다. ㅋㅋ 무책임 버전이니 필요하신 분만 참고하세요.
import os
import serial
import time
ser = serial.Serial("COM8", 9600, timeout=1)
while True:
a = f"DRAKJHSUYDGBNCJHGJKSHBDN"
print(a)
ser.write(a.encode())
ser.write(b"\xff\xff\xff")
a = f"connect"
print(a)
ser.write(a.encode())
ser.write(b"\xff\xff\xff")
ser.write(b"\xff\xff")
a = f"connect"
print(a)
ser.write(a.encode())
ser.write(b"\xff\xff\xff")
response = b""
while response[-3:] != b"\xff\xff\xff":
response += ser.read(1)
print(response)
if response[:5] == b"comok":
break
while True:
file_name = "testfw.tft"
file_size = os.path.getsize(file_name)
print(f"File size: {file_size} bytes")
while True:
a = f"whmi-wri {file_size},921600,0"
ser.write(a.encode())
ser.write(b"\xff\xff\xff")
ser.close()
ser = serial.Serial("COM8", 921600, timeout=1)
time.sleep(0.5)
ack = ser.read(1)
if ack != b"\x05":
print(f"Error: did not receive 0x05, received {ack.hex()}")
ser.close()
ser = serial.Serial("COM8", 9600, timeout=1)
else:
break
with open(file_name, "rb") as f:
while True:
data = f.read(4096)
if not data:
break
ser.write(data)
print(".")
time.sleep(0.2)
ack = ser.read(1)
if ack != b"\x05":
print(f"Error: did not receive 0x05, received {ack.hex()}")
print("complete.")
break
간단하게 테스트하기에는 충분할 듯.
업로드 할때 시리얼 속도 변경되는 것
whmi-wri 명령에 대한 0x05 ack 확인 하는 것
파일을 4K 단위로 쪼개서 보내는 거랑 0x05 값을 확인 하는것만 주의 하면 된다.
이제 Nextion Editor 없이도 tft 파일만 있으면 업데이트 할 수 있다.
참고 페이지
https://nextion.tech/2017/12/08/nextion-hmi-upload-protocol-v1-1/
https://github.com/urbanze/esp32-nextion-uploader/blob/master/nxt.cpp
https://itead.cc/nextion/nextion-hmi-upload-protocol/
'IT > IoT | Hardware' 카테고리의 다른 글
케이블 용어 - 코어, 전선의 수를 부르는 용어 (0) | 2023.05.30 |
---|---|
Nextion HMI 시리얼 업로드, 펌웨어 업데이트 v1.2 파이썬 코드 (0) | 2023.04.25 |
TW100xx Configuration tool 설치 파일과 매뉴얼 (0) | 2022.11.04 |
ESP32-WROVER SPI 연결 고민 - 모듈 기본 구성 이미지 (2) | 2021.09.16 |
RaspberryPi Pico 보드 C/C++ 빌드 with MSYS2 (0) | 2021.09.14 |