Envoyer des données série en Python
Il s'agit de mon code Python qui envoie des valeurs à partir d'un Raspberry Pi3 via un port série (USB).
J'ai besoin d'envoyer chaque fois d'envoyer une données parmi les trois selon un scénario bien défini. J'ai essayé, mais ça ne marche pas.
le problème que j'ai eu, le port série toujours envoi data-a quelle que soit la condition
Quelqu'un peut-il me dire si c'est la bonne façon de procéder?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| import os
import serial
class Gen:
def __init__(self, data_a = b'', data_b = b'', data_c =b''):
self.data_a = data_a
self.data_b = data_b
self.data_c = data_c
self.ser = ser = "/dev/ttyACM0"
def processus_a(self):
self.data_a = os.urandom(2)
self.send()
def processus_b(self):
self.data_b = os.urandom(3)
self.send()
def processus_c(self):
self.data_c = os.urandom(1)
self.send()
def send(self):
print("Envoi donnees")
print(":".join("{:02x}".format(c) for c in self.data_c))
print(":".join("{:02x}".format(c) for c in self.data_a))
print(":".join("{:02x}".format(c) for c in self.data_b))
try:
self.ser = serial.Serial( "/dev/ttyACM0", baudrate=115200, timeout= 32)
self.ser.isOpen()
print ("port is opened!")
except IOError:
self.ser.close()
self.ser.open()
print ("port was already open, was closed and opened again!")
while True:
if len(self.data_a) >= len(self.data_b):
self.ser.write(self.data_a)
print (self.ser.readline())
elif len (self.data_b) != 0:
self.ser.write(self.data_b)
else:
self.ser.write(self.data_c)
self.f = open('myfile.txt','wb')
self.f.write(self.ser.readline())
def main():
R = Gen()
R.processus_a()
R.processus_b()
R.processus_c()
R.send()
if __name__ == '__main__':
main() |