Доступ запрещен [ошибка 5] при попытке доступа к COM4 для связи Python / Arduino, другие попытки исправления не работают - PullRequest
0 голосов
/ 17 января 2019

Я создаю программу на Python, которая связывается с Arduino. У меня сложный проект, но мне просто нужно знать, как заставить Python 3 общаться с Arduino в первую очередь. Это дает мне код ошибки:

Traceback (most recent call last):
  File "C:\Users\caleb\Documents\Coding\Python\The Modern Python Bootcamp\first_program.py", line 4, in <module>
    s = serial.Serial('COM4', '9600' , timeout=0)
  File "C:\Users\caleb\AppData\Local\Programs\Python\Python37-32\lib\site-packages\serial\serialwin32.py", line 31, in __init__
    super(Serial, self).__init__(*args, **kwargs)
  File "C:\Users\caleb\AppData\Local\Programs\Python\Python37-32\lib\site-packages\serial\serialutil.py", line 240, in __init__
    self.open()
  File "C:\Users\caleb\AppData\Local\Programs\Python\Python37-32\lib\site-packages\serial\serialwin32.py", line 62, in open
    raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM4': PermissionError(13, 'Access is denied.', None, 5)

Я попытался перезагрузить компьютер, закрыть и открыть порт, попробовать разные COM-порты и завершить работу Arduino IDE. Я также сразу же открыл Sublime 3 после того, как мой компьютер перезапустил и запустил Python и все еще получил ошибку. Я попытался выполнить программу в IDLE и Sublime 3 в качестве администратора. Ничего не работает

Я просто пытаюсь прочесть "Привет, мир" из Arduino, чтобы посмотреть, сработает ли связь.

Это основа для проекта, который сканирует с RFID в качестве ключа для программы шифрования файлов. Недавно я сделал полностью независимый исполняемый файл Win 10.

Код Python:

import serial
import time

s = serial.Serial('COM4', '9600' , timeout=0)

while True:
    s.read()

Код Arduino:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.write("hello world\n");
  delay(100);
}
...