9 Stimmen

PySerial [Fehler 5] Zugriff wird verweigert

Ich versuche, ein Programm in Python zu schreiben, das in einer Schleife die serielle Schnittstelle (COM4) überprüft und eine Meldung ausgibt, wenn das Zeichen "1" von der seriellen Schnittstelle gelesen wird. Ich möchte die "1" über die serielle Schnittstelle von einem Arduino-Gadget auf Knopfdruck senden.

Ich erhalte jedoch die Fehlermeldung "[Error 5]: Access is Denied", wenn ich versuche, eine Instanz eines seriellen Objekts zu erstellen. (Es wird automatisch versucht, bei der Instanziierung zu öffnen, wo der Fehler liegt, wie ich aus der Datei im PySerial-Paket ersehen kann, die dies behandelt).

Mein Code:

c = serial.Serial('COM4', 9600)
while True:
    signal = c.read()
    print signal
    print "running"
    time.sleep(2)
    c.flushOutput()

Es kommt jedoch nie über "c = serial.Serial('COM4', 9600)" hinaus. An dieser Stelle erscheint der Fehler. Wie kann ich das beheben?

8voto

Lucas B Punkte 338

Bei mir funktionierte die Lösung nicht, aber was funktionierte, war das Schließen aller Anwendungen, die mit dem gegebenen Com-Port interagierten.

3voto

David K. Hess Punkte 15622

UPDATE: Dies ist in PySerial 3.0 offenbar nicht mehr möglich.

Unter Windows habe ich immer den Ansatz port=<int> mit Erfolg verwendet.

D.h. ändern Sie Ihren Code in:

c = serial.Serial(3, 9600)

2voto

Dhomo Punkte 61

Bitte seien Sie vorsichtig mit den Python-Versionen.

Aus dem pyserial-Handbuch über: class serial.Serial https://pyserial.readthedocs.io/en/latest/pyserial_api.html#classes

...........

Der Port wird sofort bei der Objekterstellung geöffnet, wenn ein Port angegeben wird. Er wird nicht geöffnet, wenn port None ist und ein aufeinanderfolgender Aufruf von open() erforderlich ist.

port ist ein Gerätename: je nach Betriebssystem, z. B. /dev/ttyUSB0 unter GNU/Linux oder COM3 unter Windows.

............

Geändert in Version 3.0: Zahlen als Port-Argument werden nicht mehr unterstützt

2voto

Seongjoon Park Punkte 39

Schließen Sie Ihren seriellen Monitor, der von der Arduino IDE aus geöffnet wurde.

1voto

Jakub Czaplicki Punkte 1649

Für Python 2.6 den auf Null basierenden COM-Port-Index verwenden. Für Python 2.7.x können Sie den vollständigen Namen "COM4" verwenden. Nach meiner Erfahrung ist es besser, die Version 2.7 zu verwenden. installieren Python 2.7.x y Setup-Tools (auch bekannt als Easy Install) . Sobald Sie dies haben, installieren Sie das Modul pyserial durch Eingabe von easy_install -U pyserial (siehe pyserial installation doc ).

Denken Sie daran, den Python-Pfad zu PATH Umweltvariable.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X