W tym poście chciałbym przedstawić krótki skrypt do pythona, za pomocą którego można odbierać dane poprzez port szeregowy. Wszystkie poniższe skrypty testuje przy pomocy Arduino Uno
[Źródło: https://applover.pl/technology/python]
Najprostszy sposób na odebranie danych wygląda następująco:
Na samym początku należy zaimportować bibliotekę, którą wcześniej trzeba wgrać do folderu Lib w katalogu Pyton33. Można ją pobrać pod następującym linkiem. Następnie do zmiennej należy strukturę przechowującą dane odnoście portu szeregowego. Dalej w pętli zostaną pobrane dane i wprowadzone do zmiennej. Ostatnia linijka pozwala na wyświetlenie oraz zdekodowanie danych kodem utf-8, czyli systemem kodowania unicode, którym kodowany jest każdy kod ASCII.
- import serial
- Data_to_read = serial.Serial('com7',9600)
- while(1):
- Data_received = (Data_to_read.readline().strip())
- print(Data_received.decode('utf-8'))
Druga funkcja przygotowana w pythonie przesyła dane do Arduino a następnie Arduino wysyła je ponownie.
Najpierw zdefiniowane są biblioteki serial, time. Później definiuje parametry transmisji oraz port. Wysyłane są dane ASCII z przedziału od 32 do 255.
- import serial
- import time
- ser = serial.Serial('COM7', 9600)
- counter = 32
- while True:
- counter +=1
- ser.write(bytes(b'str(chr(counter))')) # Convert the decimal number to ASCII then send it to the Arduino
- print (ser.readline())
- time.sleep(.5)
- if counter == 255: counter = 32
Najpierw zdefiniowane są biblioteki serial, time. Później definiuje parametry transmisji oraz port. Wysyłane są dane ASCII z przedziału od 32 do 255.