Mam znak Prolite LED, który chcę skonfigurować, aby wyświetlał przewijanie zapytań z dzienników apache i innych zabawnych statystyk. Problem polega na tym, że mój G5 nie ma portu szeregowego, więc muszę użyć klucza USB do klucza szeregowego. Pojawia się jako /dev/cu.usbserial i /dev/tty.usbserial.Programowo rozmawia z portem szeregowym w systemie OS X lub Linux
gdy zrobić to wszystko wydaje się być klawy:
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
Wszystko działa również podczas korzystania z serial port tool rozmawiać z nim.
Jeśli uruchomię ten fragment kodu podczas korzystania z wyżej wymienionego narzędzia portu szeregowego, wszystko będzie działać. Ale zaraz po odłączeniu narzędzia połączenie zostanie utracone.
#!/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()
Pytanie więc, jakie magie muszę wykonać, aby rozpocząć rozmowę z portem szeregowym bez narzędzia portu szeregowego? Czy to jest problem z uprawnieniami? Jaka jest różnica między /dev/cu.usbserial i /dev/tty.usbserial?
Nie, bez numerów seryjnych. Problem w tym, że problem utrzymuje się nawet po uruchomieniu sudo skryptu Pythona, a jedyna rzecz, która go powoduje, to jeśli otworzę połączenie w narzędziu GUI, o którym wspomniałem.
W zeszłym tygodniu napisałem małe narzędzie Pythona, które pomaga mi debugować osadzoną aplikację C, odczytując informacje debugowania z klucza USB-Serial, więc chciałbym myśleć, że rozumiem PySerial całkiem dobrze. Niektóre dodatkowe informacje mogą pomóc w zdiagnozowaniu problemu: * Jakiego sterownika USB-Serial używasz? * Czy jesteś pewien, że poprawnie skonfigurowałeś wszystkie opcje szeregowe (szybkość transmisji, kontrola przepływu, parzystość, stop bit, itd.) Przed przystąpieniem do otwierania połączenia szeregowego z Pythona? * Z jakiej wersji PySerial korzystasz? – Matt
Nie widzisz po nich numerów seryjnych? Takich jak: /dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB Moje inne może być istnieje problem z uprawnieniami python rozmawia z Port szeregowy. Czy wiesz, z jakiego użytkownika działa Twoja instancja pythona? A może jakie ma role? –