AloxGUI/uart_port_select.gd

68 lines
2.0 KiB
GDScript

extends Control
func _ready() -> void:
SerialWebsocketHandler.connectSocket()
set_process(false)
pass
func _process(delta: float) -> void:
while not SerialWebsocketHandler.message_pending():
await get_tree().process_frame
var mess = SerialWebsocketHandler.get_message()
print(mess)
func _on_button_pressed() -> void:
var commandMes = BuildMessage("listports", PackedStringArray())
SerialWebsocketHandler.writeSocket(commandMes)
# Warte asynchron auf eine Nachricht
while not SerialWebsocketHandler.message_pending():
await get_tree().process_frame
var mess = SerialWebsocketHandler.get_message()
var parts = mess.split(";")
print(mess)
if parts.size() < 3:
print("Ungültige Nachricht erhalten:", mess)
return
var count = int(parts[2])
if parts.size() < 3 + count:
print("Unvollständige Nachricht erhalten:", mess)
return
$PortList.clear()
for n in range(count):
$PortList.add_item(parts[3 + n])
func _on_connect_button_pressed() -> void:
var portID = $PortList.get_selected_id()
if portID == -1:
return
var message = BuildMessage("connect", PackedStringArray([$PortList.get_item_text(portID)]))
SerialWebsocketHandler.writeSocket(message)
while not SerialWebsocketHandler.message_pending():
await get_tree().process_frame
print(SerialWebsocketHandler.get_message())
func BuildMessage(command: String, parameters: PackedStringArray) -> String:
# Erstelle den Basis-String mit den ersten drei Werten
var base = ";".join([str(1), command, str(parameters.size())])
# Füge die Parameter hinzu, falls vorhanden
if parameters.size() > 0:
base += ";" + ";".join(parameters)
# Füge ein abschließendes Semikolon hinzu
base += ";"
return base
func _on_async_read_button_pressed() -> void:
var message = BuildMessage("startasyncread", PackedStringArray())
SerialWebsocketHandler.writeSocket(message)
while not SerialWebsocketHandler.message_pending():
await get_tree().process_frame
print(SerialWebsocketHandler.get_message())
set_process(true)