Python pyserial - windows error(2)

时间:2013-11-02 01:09:47

标签: python arduino python-idle pyserial arduino-ide

我正在尝试使用pyserial库将我的arduino连接到python,但我一直收到错误。我连接了arduino,arduino程序的序列没有运行。我一直收到这个错误:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    j = arduino()
  File "C:\Users\Dhruv and Anuj\Documents\Dhruv K. Patel\Python Files\bitSnake_source\bitSnake\glove_input.py", line 9, in __init__
    ser = serial.Serial(port, 9600)
  File "C:\Python32\lib\site-packages\serial\serialwin32.py", line 38, in __init__
    SerialBase.__init__(self, *args, **kwargs)
  File "C:\Python32\lib\site-packages\serial\serialutil.py", line 282, in __init__
    self.open()
  File "C:\Python32\lib\site-packages\serial\serialwin32.py", line 66, in open
    raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM1': WindowsError(2, 'The system cannot find the file specified.')

这是我的arduino代码:

int speed = 10;

const int thumb = 2;
const int index = 3;
const int middle = 4;
const int ring = 5;
const int pinky = 6;

String out;


void setup(){
  pinMode(thumb,INPUT);
  pinMode(index,INPUT);
  pinMode(middle,INPUT);
  pinMode(ring,INPUT);
  pinMode(pinky,INPUT);
  Serial.begin(9600);
}

void loop(){
  boolean repeat = true;
  if(repeat == true){
    if(digitalRead(thumb) == HIGH){
      Serial.write(1);
      Serial.println(1);
      repeat = false;
    }
    if(digitalRead(index) == HIGH){
      Serial.write(2);
      Serial.println(2);
      repeat = false;
    }
    if(digitalRead(middle) == HIGH){
      Serial.write(3);
      Serial.println(3);
      repeat = false;
    }
    if(digitalRead(ring) == HIGH){
      Serial.write(4);
      Serial.println(4);
      repeat = false;
    }
    if(digitalRead(pinky) == HIGH){
      Serial.write(5);
      Serial.println(5);
      repeat = false;
    }
  }
  if(repeat == true){
    Serial.write(0);
    Serial.println(0);
  }
  delay(10);
}

我的python代码:

import serial
from serial import *
port = 0

class arduino:

    def __init__(self):
        #serial.tools.list_ports()
        ser = serial.Serial(port, 9600)
        self.port = str(port)

    def read(self):

        return ser.readline()

    def close(self):

        ser.close()

任何帮助都会很棒,谢谢!!

2 个答案:

答案 0 :(得分:2)

尝试另一个COM端口。你的arduino显然不在COM1

答案 1 :(得分:0)

您可以找到Windows硬件设备管理器中使用的COM。

在Win7中,我的USB转串口适配器将具有COM40 / COM41。