68 lines
2.0 KiB
GDScript
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)
|