2008-08-06 6 views
14

J'ai un signe LED Prolite que j'aime configurer pour afficher les requêtes de recherche défilantes à partir de journaux apache et d'autres statistiques amusantes. Le problème est, mon G5 n'a pas de port série, donc je dois utiliser un USB pour dongle série. Il apparaît comme /dev/cu.usbserial et /dev/tty.usbserial.Parler à un port série sous OS X ou Linux

Quand je fais tout semble 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 aussi quand je l'utilise serial port tool pour lui parler.

Si j'exécute ce morceau de code alors que l'outil port série mentionné ci-dessus, everthing 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, ce que magies dois-je faire pour commencer à parler au port série sans l'outil de port série? Est-ce un problème de permissions? Aussi, quelle est la différence entre /dev/cu.usbserial et /dev/tty.usbserial?


Non, aucun numéro 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 gui que j'ai mentionné.

+0

La semaine dernière, j'ai écrit un petit utilitaire Python pour m'aider à déboguer une application C embarquée en lisant les informations de débogage d'un dongle USB-Serial, donc je pense que je comprends assez bien PySerial. Des informations supplémentaires peuvent aider à diagnostiquer le problème: * Quel pilote USB-Serial utilisez-vous? * Etes-vous certain que vous avez correctement configuré toutes les options série (débit en bauds, contrôle de flux, parité, bits d'arrêt, etc.) avant d'ouvrir la connexion série à partir de Python? * Quelle version de PySerial utilisez-vous? – Matt

+0

Vous ne voyez pas de numéros de série après eux? Tels que: /dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB Mon autre par était peut-être il y a un problème de permissions de python parler à la port série. Savez-vous quel utilisateur utilise votre instance python? Et peut-être quels rôles il a? –

Répondre

0

Avez-vous essayé d'observer le trafic entre l'interface graphique et le port série pour voir si une commande spéciale est envoyée? Aussi juste curieux, Python envoie ASCII et non UTF-8 ou autre chose? La raison pour laquelle je demande est parce que j'ai remarqué vos changements de citation pour les chaînes et dans certaines langues qui est en fait la différence entre ASCII et UTF-8.

4

/dev/cu.xxxxx est le périphérique "légende", c'est ce que vous utilisez lorsque vous établissez une connexion au périphérique série et commencez à lui parler. /dev/tty.xxxxx est le dispositif de "numérotation", utilisé pour surveiller un port pour les appels entrants, par ex. un écouteur de fax.

+2

Est-ce juste une convention, ou y a-t-il une différence tangible entre eux? –

Questions connexes