port='/dev/ttyUSBX' mit PORT1 odr Port2 usw...

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
SolarGuido
User
Beiträge: 21
Registriert: Donnerstag 17. August 2017, 07:10

Hallo,

bin leider nicht so fit mit python und hab ne Frage wegen der Möglichkeit den Port anstelle von USB0 oder USB1 ... Mit Port1 oder Port2 zu belegen.
Das doofe beim Rasbery ist das er hin und wieder die USB Zuordnung ändert, und ich habe das jetzt mit Ports gelöst.
KERNEL=="ttyUSB*", KERNELS=="1-1.1", SYMLINK+="ttyPORT1"
KERNEL=="ttyUSB*", KERNELS=="1-1.2", SYMLINK+="ttyPORT2"
Bei den meisten Anwendungen geht das jetzt perfekt, aber leider meine wenigen python scripte wollen das nicht.

Ich habe nirgends gefunden wie man das bei Python nutzen kann Beispiel:
Ich habe mein Gerät fest auf Port2 gemappt:

bisher war je nach Port:
ser = serial.Serial(port='/dev/ttyUSB0',baudrate=2400,timeout=2)
ser = serial.Serial(port='/dev/ttyUSB1',baudrate=2400,timeout=2)

Mit der Port zuweisung wäre das einfach
ser = serial.Serial(port='/dev/ttyPort2',baudrate=2400,timeout=2)

Aber mit Port kann phyton nix anfangen brauch man da was spezielles , ich hoffe das geht mit python.

Kann mir jemand hier auf die Sprünge helfen?
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das Linux des PI sollte eigentlich stabile Namen für USB Serial Ports vergeben. Siehe https://steigerbalett.wordpress.com/201 ... -zuordnen/

Wenn du aber darauf bestehst dein eigenen udev Kram zu machen, dann leg eine richtige Datei statt einem symlink an. Oder prüfen in Python, ob der Name ein symlink ist, und lös den auf. Aber das ist umständlicher und eigentlich total unnötig.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein Nachtrag: Linux filesystem ist case sensitiv. Wenn du deine Ports groß schreibst, musst du sie auch so in Python schreiben. Dem symlink sollte eigentlich gefolgt werden, mein Kommentar diesbezüglich war also Unfug.
SolarGuido
User
Beiträge: 21
Registriert: Donnerstag 17. August 2017, 07:10

Ja und ich hab null verstanden was du da schreibst...
Abgesehen von case sentitiv..
Heißt das ich kann das nutzen :

port='/dev/ttyPORT1'
?

OK ich werde mal das probieren was in dem verlinkten beitrag steht
Danke
SolarGuido
User
Beiträge: 21
Registriert: Donnerstag 17. August 2017, 07:10

So der Eintrag:

ser = serial.Serial(port='/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0',baudrate=2400,timeout=2)

War erfolgreich, vielen Dank!
Antworten