arduino stuffs
Diffstat (limited to 'car_driver/godot/serial.gd')
| -rw-r--r-- | car_driver/godot/serial.gd | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/car_driver/godot/serial.gd b/car_driver/godot/serial.gd new file mode 100644 index 0000000..dfb3a0f --- /dev/null +++ b/car_driver/godot/serial.gd @@ -0,0 +1,48 @@ +extends Node + +onready var Serial = preload("res://bin/GDsercomm.gdns").new() + +const baud_rate := 9600 +const endline := "\n" + +signal recieved(text) + +#a readline function, just add the current Port (based on sercomm) +#and it will return a line, since sercomm always use a timeout, it should not lag + + +func readline(port): + if !port.has_method("read"): #to avoid problems + return "NOT A PORT" + var cho = "" + var chango = "" + while cho != endline: + cho = port.read() + if typeof(cho) == TYPE_STRING: + if cho != endline: + chango += cho + else: + chango = "FAILED" + break + return chango + + +func _physics_process(_delta: float): + var text = "" + for _i in range(Serial.get_available()): + text += str(Serial.read()) + if text: + emit_signal("recieved", text) + + +func send(text: String) -> void: #"please only use ascii" + Serial.write(text) + + +func _ready(): + prints("connecting to", get_ports()[-1]) + Serial.call_deferred("open", get_ports()[-1], baud_rate, 1000) + + +func get_ports() -> Array: + return Serial.list_ports() |