2014-07-25 1 views
0

Je rencontre des problèmes pour parler à un périphérique Cisco via série en utilisant pyserial. Je reçois la réponse que j'attends parfois, mais pas toujours, et je n'ai aucune idée de ce que je fais de mal. Parfois, je reçois des réponses vides plusieurs fois de suite. Je cours Windows 7, python 2.7, pyserial 2.7.PySerial avec des appareils Cisco ne répond parfois que

Voici un exemple de code pour obtenir une réponse.

ser = serial.Serial("COM20") 
ser.timeout = 2 
ser.parity = 'N' 
ser.write("\nenable\nsh ip int brief\n") 
print ser.read(10**8) 

Les réponses je reçois ressembler à quelque chose comme ça, comme prévu: Router(config)#

Les paramètres requis par cisco:

Bits per sec : 9600 
Data bits  :  8 
Parity   : none 
Stop bits  :  1 
Flow control : none 

Pour autant que je peux dire, ils correspondent aux valeurs par défaut pour pyserial .

Répondre

0

Peut-être le baudrate est incorrect? Il est par défaut à 9600. Si tel est incorrect, il essayez de régler avec l'argument mot-clé:

ser = serial.Serial("COM20", baudrate=<baud rate here>) 

Une baudrate incorrecte peut effectuer des lectures de façon étrange.

+0

édité pour ajouter plus d'informations, 9600 est correct. –

+0

Il y a une chance que l'appareil fonctionne lentement sur série? Que se passe-t-il si vous ajoutez un appel time.sleep (1) entre l'écriture et la lecture? C'est cohérent alors? Qu'en est-il de time.sleep (10)? Le fait qu'il retourne plusieurs fois donne l'impression que vous essayez de lire avant que le tampon ne soit rempli, puis lorsque vous lisez une seconde fois vous obtenez les deux. –

+0

J'envoie plusieurs commandes, pour me connecter et autres. Je l'ai eu à travailler avec telnet, mais la connexion série est toujours comme ça. Il faut environ 0,3 secondes pour recevoir la réponse que j'attends, donc les 5 secondes avec lesquelles j'ai essayé devraient être suffisantes. En outre, je reçois des réponses vides plusieurs fois de suite pour différentes commandes. –