从Python发送串行数据时出错+;阿杜伊诺酒店

从Python发送串行数据时出错+;阿杜伊诺酒店,python,python-2.7,arduino,communication,Python,Python 2.7,Arduino,Communication,对于所有这些,我使用的是Windows7、Python2.7.3和PySerial2.6。我的Arduino使用COM6 我试图将数据从Python程序发送到Arduino进行读取,它不断返回“SerialException”错误 以下是Python代码: import serial import time ser = serial.Serial('COM6', 9600, timeout=0) var = raw_input("Enter something: ") ser.write(var

对于所有这些,我使用的是Windows7、Python2.7.3和PySerial2.6。我的Arduino使用COM6

我试图将数据从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.
回溯(最近一次呼叫最后一次):
文件“C:/Users/admin/Desktop/test”,第3行,在
ser=serial.serial('COM6',9600,超时=0)
文件“C:\Python27\lib\site packages\serial\serialwin32.py”,第34行,在\uuu init中__
SerialBase.\uuuu init\uuuu(self,*args,**kwargs)
文件“C:\Python27\lib\site packages\serial\serialutil.py”,第261行,在\uuu init中__
self.open()
打开文件“C:\Python27\lib\site packages\serial\serialwin32.py”,第62行
引发SerialException(“无法打开端口%s:%s”%(self.portstr,ctypes.WinError()))
SerialException:无法打开端口COM6:[错误5]访问被拒绝。

如何解决该错误?Python将很好地从Arduino读取数据,但不会对其进行写入。

除了确保端口已关闭外,还需要注意一些其他事项

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

  • 写入后刷新()数据


需要检查的几件事:*端口未被其他程序打开*端口未被隐藏在后台的python进程打开(检查任务管理器)*如果需要UAC权限访问串行端口,则应在程序结束时使用ser.close()关闭串行连接。您可能需要重新启动计算机或终止后台运行python实例才能释放端口。谢谢!这解决了问题。