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)