2014-07-17 3 views
2

J'essaye d'écrire une fonction qui lit continuellement l'entrée série. La fonction doit être capable de gérer les déconnexions inattendues du port série et de se reconnecter lorsque cela est possible. Malgré la lecture de plusieurs questions sur stackOverflow et la lecture de la documentation de pySerial, je n'ai pas encore trouvé de solution.Reconnexion avec pySerial

Voici mon code:

def serialRead(serialPort, queue): 
    """Adds serial port input to a queue.""" 

    ser = serial.Serial(serialPort - 1, timeout = 2) 

    ser.parity = "O" 
    ser.bytesize = 7 

    while(True): 
     try: 
      if(ser == None): 
       ser = serial.Serial(serialPort - 1, timeout = 2) 

       ser.parity = "O" 
       ser.bytesize = 7 

       print("Reconnecting") 

      queue.put(ser.read(27)) 
      ser.write(chr(6).encode()) 

      print("Writing Data...") 

     except: 
      if(not(ser == None)): 
       ser.close() 
       ser = None 
       print("Disconnecting") 

      print("No Connection") 
      time.sleep(2) 

Voici mon sortie:

Enter a Serial Port: 7 
Writing Data... 
Writing Data... 
Writing Data... 
Writing Data... 

Je commence par mon appareil connecté. Après avoir quitté le programme, ni "Disconnecting" ni "No Connection" n'apparaissent et le programme s'arrête (il ne plante pas).

+0

Comment sortez-vous du programme? – RageCage

+0

Je ne suis pas en train de quitter le programme. J'essaye d'écrire le programme pour qu'il continue à fonctionner, même si la connexion est perdue. – Raeven

+0

Désolé, j'ai mal compris "quitter le programme". Alors, que se passe-t-il lorsque vous déconnectez tout ce qui est connecté au port? – RageCage

Répondre

1

Ce code fonctionne. Batman a testé le programme sur une connexion Arduino et j'ai constaté que mon programme s'était reconnecté avec succès à l'appareil après un certain temps. J'espère que ce code sera utile pour ceux qui luttent avec quelque chose de similaire.