2015-01-02 139 views
2

我想从PySerial文档中运行这个示例程序来打开串口。来源:http://pyserial.sourceforge.net/shortintro.html 我试着在Python 2.7和3.4版本中运行代码,但仍然得到相同的错误。Python PySerial,如何打开串行端口?

>>> import serial 
>>> ser = serial.Serial(0) # open first serial port 
>>> print ser.name   # check which port was really used 
>>> ser.write("hello")  # write a string 
>>> ser.close()    # close port 

我收到以下错误运行代码的第二行之后:

Traceback (most recent call last): 
    File "<pyshell#2>", line 1, in <module> 
    ser = serial.Serial(0) 
    File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 38, in __init__ 
    SerialBase.__init__(self, *args, **kwargs) 
    File "C:\Python27\lib\site-packages\serial\serialutil.py", line 282, in __init__ 
    self.open() 
    File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 66, in open 
    raise SerialException("could not open port %r: %r" % (self.portstr,  ctypes.WinError())) 
SerialException: could not open port 'COM1': WindowsError(2, 'The system cannot find the file specified.') 
+0

试过数使用另一个程序,如超级终端或附带的MiniTerm连接到串行端口,以确保它们可用?你在使用什么操作系统? – skrrgwasme

+2

您的系统实际上是否有COM1端口? –

+0

我如何知道我的系统是否有COM1端口? – George

回答

0

这听起来像COM1不可用(它不存在,或者它已被使用)。 我做了这个小脚本列出可用的COM端口。

import serial 
ser=serial.Serial() 
ns=0 
while True : 
    try: 
     ser.port=ns 
     ser.open() 
     print "COM"+str(ns+1)+" avaible" 
     ser.close() 

    except serial.SerialException: 
     print "COM"+str(ns+1)+" NOT avaible" 
    ns=ns+1 
    if(ns>100): 
     break 

记住COM端口号是你通过串行你+1(serial.Serial(0)打开COM1,serial.Serial(1)打开COM2等)

+1

通过使用“for xrange(101):”in“while True:”中的ns,可以使循环更加pythonic,并消除循环中所需的手动初始化,递增和测试/中断行。 – RufusVS