将串行数据从Python + Pyserial发送到Arduino时出错

时间:2016-05-11 17:00:56

标签: python python-2.7 arduino communication

对于所有这些,我使用的是Windows 7,Python 2.7.3和Pyserial 2.6。我正在使用COM6作为我的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);
}

}

以下是我在运行脚本时遇到的错误:

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中读取就好了,但不会写入它。

1 个答案:

答案 0 :(得分:1)

除了确保端口关闭外,还需要注意几个附加内容......

  • 使用PySerial发送的数据只能是byte类型(或bytestream以获取超过1个字节的数据)。您不能按原样发送用户输入。

  • 写完

  • 后的数据