2016-05-11 3 views
0

Для этого я использую Windows 7, Python 2.7.3 и Pyserial 2.6. Я использую COM6 для своего Arduino.Ошибка отправки серийных данных из Python + Pyserial в Arduino

Я пытаюсь отправить данные из программы Python, к Arduino читать, и он продолжает возвращать «ошибка SerialException

Вот код Python:.

import serial 
import time 
ser = serial.Serial('COM6', 9600, timeout=0) 
var = raw_input("Enter something: ") 
ser.write(var) 
while 1: 
    try: 
     print ser.readline() 
     time.sleep(1) 
    except ser.SerialTimeoutException: 
     print('Data could not be read') 

Вот Arduino код:

int incomingByte = 0; 

void setup(){ 
// Open serial connection. 
Serial.begin(9600); 

} 

void loop(){ 
if (Serial.available() > 0) { 
// read the incoming byte: 
incomingByte = Serial.read(); 

// say what you got: 
Serial.print("I got: "); // ASCII printable characters 
Serial.println(incomingByte, DEC); 
} 

} 

Здесь ошибка я получаю в Python, когда я бегу сценарий:

Traceback (most recent call last): 
    File "C:/Users/admin/Desktop/test", line 3, in <module> 
    ser = serial.Serial('COM6', 9600, timeout=0) 
    File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 34, in __init__ 
    SerialBase.__init__(self, *args, **kwargs) 
    File "C:\Python27\lib\site-packages\serial\serialutil.py", line 261, in __init__ 
    self.open() 
    File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 62, in open 
    raise SerialException("could not open port %s: %s" % (self.portstr, ctypes.WinError())) 
SerialException: could not open port COM6: [Error 5] Access is denied. 

Как устранить эту ошибку? Python будет читать из Arduino просто отлично, но не писать на него.

+0

несколько вещей, чтобы проверить: * Порт не открыт другой программой * Порт не открыт процессом питона, скрывающийся в фоновом режиме (check task manager) * Если вам нужны права UAC для доступа к последовательному порту –

+0

Вы должны закрыть последовательное соединение в конце своей программы, используя ser.close(). Возможно, вам придется перезагрузить компьютер или отключить фоновый запуск экземпляров python, чтобы освободить порт. –

+0

Спасибо за это! Это решило проблему. – bhssinger3

ответ

0

Помимо обеспечения, что порт закрыт, несколько дополнительных вещей, чтобы отметить ...

  • Данные, отправленные с помощью PySerial может быть только типа byte (или bytestream более 1 байт данных). Вы не можете отправлять пользовательский ввод, как есть.

  • заподлицо() данные после записи