Vorbiți programatic cu un port serial în OS X sau Linux

Am un semn Prolite cu LED-uri pe care îmi place să-l configurez pentru a afișa interogări de căutare derulante dintr-un jurnal apache și alte statistici distractive. Problema este că G5 nu are un port serial, așa că trebuie să folosesc un usb pentru a dongle serial. Apare ca /dev/cu.usbserial și /dev/tty.usbserial.

Când fac acest lucru, totul pare a fi un obosit:

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

Totul funcționează și atunci când folosesc instrumentul portului serial pentru a vorbi cu el.

Dacă am rula această bucată de cod în timp ce instrumentul de port serial menționat mai sus, totul funcționează. Dar de îndată ce deconectez instrumentul, conexiunea se pierde.

#!/usr/bin/python

import serial

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

ser.close()

Deci, întrebarea este, ce magicks am nevoie pentru a efectua pentru a începe să vorbesc cu portul serial, fără instrumentul de port serial? Este o problemă de permisiuni? De asemenea, care este diferența dintre /dev/cu.usbserial și /dev/tty.usbserial?


Nu, nu există numere de serie. Problema este că problema persistă chiar și cu sudo-rulează scriptul python și singurul lucru care o face să treacă prin deschiderea conexiunii în instrumentul gui pe care l-am menționat.

0
fr hi bn
Nu se întâmplă să vezi numere de serie după ei? Cum ar fi: /dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB Celălalt prin intermediul meu a fost poate că există o problemă de permisiuni a lui python vorbind cu port serial. Știți ce utilizator utilizează instanța dvs. Python? Și poate ce roluri are?
adăugat autor Nick Berardi, sursa
Doar săptămâna trecută am scris un mic utilitar Python care să mă ajute să depanez o aplicație C încorporată prin citirea informațiilor de depanare de pe un dongle USB-Serial, așadar aș vrea să cred că înțeleg foarte bine PySerial. Unele informații suplimentare ar putea ajuta la diagnosticarea problemei: * Ce conducător auto USB-serial folosiți? * Sunteți sigur că ați configurat corect toate opțiunile de serie (rata baud, controlul fluxului, paritatea, biți stop, etc.) înainte de a încerca să deschideți conexiunea serială din Python? * Ce versiune de PySerial folosiți?
adăugat autor Matt, sursa

2 răspunsuri

ați încercat să urmăriți traficul între GUI și portul serial pentru a vedea dacă există o anumită comandă specială trimisă? De asemenea, doar curios, Python trimite ASCII și nu UTF-8 sau altceva corect? Motivul pentru care vă întreb este că am observat că modificările dvs. de cotate pentru șiruri și în unele limbi sunt de fapt diferența dintre ASCII și UTF-8.

0
adăugat

/dev/cu.xxxxx is the "callout" device, it's what you use when you establish a connection to the serial device and start talking to it. /dev/tty.xxxxx is the "dialin" device, used for monitoring a port for incoming calls for e.g. a fax listener.

0
adăugat
Este această convenție justă sau există o anumită diferență tangibilă între ei?
adăugat autor Peter Gibson, sursa
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.