improve serial
This commit is contained in:
parent
ee8cf1037d
commit
0ea7ede2be
|
@ -1,14 +1,19 @@
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from socket import gethostname, gethostbyname
|
||||||
import kuukar.kuukar_nextion as kuukar_nextion
|
import kuukar.kuukar_nextion as kuukar_nextion
|
||||||
|
|
||||||
|
|
||||||
class lcd:
|
class lcd:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.nextion = kuukar_nextion.nextion()
|
self.nextion = kuukar_nextion.nextion()
|
||||||
sleep(1)
|
sleep(1)
|
||||||
self.nextion.send_command("page home")
|
self.nextion.send_command("page home")
|
||||||
|
self.nextion.send_command("ipTXT.txt=\""+str(gethostbyname(gethostname()))+"\"")
|
||||||
|
self.nextion.external_touch_handler = self.touch_handler
|
||||||
|
|
||||||
def play_video(self,filename: str) -> None:
|
def play_video(self, filename: str) -> None:
|
||||||
self.nextion.send_command("page video_player")
|
self.nextion.send_command("page video_player")
|
||||||
self.nextion.send_command("video.path=\"sd0/"+filename+".video\"")
|
self.nextion.send_command("video.path=\"sd0/" + filename + ".video\"")
|
||||||
self.nextion.send_command("video.en=1")
|
self.nextion.send_command("video.en=1")
|
||||||
|
|
||||||
def pause_video(self) -> None:
|
def pause_video(self) -> None:
|
||||||
|
@ -20,4 +25,18 @@ class lcd:
|
||||||
def stop_video(self) -> None:
|
def stop_video(self) -> None:
|
||||||
self.nextion.send_command("video.en=0")
|
self.nextion.send_command("video.en=0")
|
||||||
self.nextion.send_command("page home")
|
self.nextion.send_command("page home")
|
||||||
|
|
||||||
|
def touch_handler(self, page, component_id, press_type):
|
||||||
|
print(f'page:{page} cid:{component_id} pt:{press_type}')
|
||||||
|
if page == 1 and component_id == 2 and press_type == '01':
|
||||||
|
if self.nextion.get_attribute("aiTG.val"):
|
||||||
|
print("AI Drive Activated")
|
||||||
|
else:
|
||||||
|
print("AI Drive Deactivated")
|
||||||
|
elif page == 3:
|
||||||
|
if component_id == 2 and press_type == '00':
|
||||||
|
x = self.nextion.get_attribute("joystick.x")
|
||||||
|
y = self.nextion.get_attribute("joystick.y")
|
||||||
|
speed = 100-(y-60)/(205-60)*200
|
||||||
|
turn = (x-5)/(150-5)*200-100
|
||||||
|
print(f"Setting speed to {speed} and turn angle to {turn}")
|
||||||
|
|
|
@ -18,8 +18,7 @@ class nextion:
|
||||||
allow_serial_read = True
|
allow_serial_read = True
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.device = serial.Serial(SERIAL_LCD, baudrate=9600, timeout=15)
|
self.device = serial.Serial(SERIAL_LCD, baudrate=115200, timeout=15)
|
||||||
print(self.device.is_open)
|
|
||||||
self.__send_stop_bit()
|
self.__send_stop_bit()
|
||||||
self.reset_device()
|
self.reset_device()
|
||||||
threading.Thread(target=self.__serial_reader).start()
|
threading.Thread(target=self.__serial_reader).start()
|
||||||
|
@ -62,7 +61,6 @@ class nextion:
|
||||||
data = ser.read_until(self.__get_stop_bit())
|
data = ser.read_until(self.__get_stop_bit())
|
||||||
data = data[0:len(data)-3]
|
data = data[0:len(data)-3]
|
||||||
data: list = data.hex('/').split('/')
|
data: list = data.hex('/').split('/')
|
||||||
print(data)
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def handle_serial(self, data: list):
|
def handle_serial(self, data: list):
|
||||||
|
@ -75,8 +73,8 @@ class nextion:
|
||||||
component_id = int(data.pop(0), 16)
|
component_id = int(data.pop(0), 16)
|
||||||
press_type = data.pop(0)
|
press_type = data.pop(0)
|
||||||
self.external_touch_handler(page,component_id,press_type)
|
self.external_touch_handler(page,component_id,press_type)
|
||||||
print("Got a touch event at page "+str(page)+" in component "+str(component_id)
|
#print("Got a touch event at page "+str(page)+" in component "+str(component_id)
|
||||||
+ " with type "+str(press_type))
|
# + " with type "+str(press_type))
|
||||||
|
|
||||||
def external_touch_handler(self, page, component_id, press_type):
|
def external_touch_handler(self, page, component_id, press_type):
|
||||||
# To be overridden
|
# To be overridden
|
||||||
|
@ -84,7 +82,7 @@ class nextion:
|
||||||
def get_attribute(self, attribute: str):
|
def get_attribute(self, attribute: str):
|
||||||
self.allow_serial_read = False
|
self.allow_serial_read = False
|
||||||
self.send_command("get "+str(attribute))
|
self.send_command("get "+str(attribute))
|
||||||
sleep(0.1)
|
sleep(0.01)
|
||||||
data = self.read_serial()
|
data = self.read_serial()
|
||||||
self.allow_serial_read = True
|
self.allow_serial_read = True
|
||||||
data_type = data.pop(0)
|
data_type = data.pop(0)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import kuukar.kuukar_lcd as kuukar_lcd
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
lcd = kuukar_lcd.lcd()
|
||||||
|
print("Project KuuKar LCD Device Command Line Interface")
|
||||||
|
while True:
|
||||||
|
cmd = input("kuukar_lcd$ ")
|
||||||
|
lcd.nextion.send_command(cmd)
|
|
@ -1,4 +0,0 @@
|
||||||
import kuukar.kuukar_lcd as kuukar_lcd
|
|
||||||
from time import sleep
|
|
||||||
lcd = kuukar_lcd.lcd()
|
|
||||||
lcd.play_video("keke_hurt")
|
|
Loading…
Reference in New Issue