python - Parler par programme à un port série sous OS X ou Linux

Translate

J'ai un panneau LED Prolite que j'aime configurer pour afficher les requêtes de recherche défilantes à partir des journaux Apache et d'autres statistiques amusantes. Le problème est que mon G5 n'a pas de port série, donc je dois utiliser une clé USB vers série. Il apparaît comme /dev/cu.usbserial et /dev/tty.usbserial.

Quand je fais cela, tout semble être hunky-dory:

stty -f /dev/cu.usbserial
speed 9600 baud;
lflags: -icanon -isig -iexten -echo
iflags: -icrnl -ixon -ixany -imaxbel -brkint
oflags: -opost -onlcr -oxtabs
cflags: cs8 -parenb

Tout fonctionne également lorsque j'utilise leoutil de port sériepour lui parler.

Si j'exécute ce morceau de code avec l'outil de port série mentionné ci-dessus, tout fonctionne également. Mais dès que je déconnecte l'outil, la connexion est perdue.

#!/usr/bin/python

import serial

ser = serial.Serial('/dev/cu.usbserial', 9600, timeout=10) 
ser.write("<ID01><PA> \r\n") 
read_chars = ser.read(20)
print read_chars

ser.close()

La question est donc de savoir quelles magies dois-je effectuer pour commencer à parler au port série sans l'outil de port série? Est-ce un problème d'autorisations? Aussi, quelle est la différence entre /dev/cu.usbserial et /dev/tty.usbserial?


Non, pas de numéros de série. Le problème est que le problème persiste même avec sudo-exécutant le script python, et la seule chose qui le fait passer si j'ouvre la connexion dans l'outil d'interface graphique que j'ai mentionné.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

/dev/cu.xxxxxest le périphérique "appel", c'est ce que vous utilisez lorsque vous établissez une connexion avec le périphérique série et commencez à lui parler./dev/tty.xxxxxest le dispositif "dialin", utilisé pour surveiller un port pour les appels entrants pour par exemple un écouteur de fax.

La source
Translate

avez-vous essayé de regarder le trafic entre l'interface graphique et le port série pour voir s'il y a une sorte de commande spéciale envoyée? Aussi juste curieux, Python envoie de l'ASCII et non de l'UTF-8 ou autre chose, non? La raison pour laquelle je pose la question est que j'ai remarqué que votre devis change pour les chaînes et dans certaines langues, c'est en fait la différence entre ASCII et UTF-8.

La source
prochain:
php - Multi