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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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()