poniedziałek, 26 września 2016

Python - Program do komunikacji z komputerem poprzez port szeregowy

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.

  1. import serial
  2. Data_to_read = serial.Serial('com7',9600)
  3. while(1):
  4.     Data_received = (Data_to_read.readline().strip())
  5.     print(Data_received.decode('utf-8'))

Druga funkcja przygotowana w pythonie przesyła dane do Arduino a następnie Arduino wysyła je ponownie.

  1. import serial
  2. import time
  3. ser = serial.Serial('COM7', 9600)
  4. counter = 32
  5. while True:
  6.      counter +=1
  7.      ser.write(bytes(b'str(chr(counter))')) # Convert the decimal number to ASCII then send it to the Arduino
  8.      print (ser.readline())
  9.      time.sleep(.5)
  10.      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.