Python PySerial,如何打开串口?

时间:2015-01-02 21:52:34

标签: python pyserial

我试图从PySerial Documentation运行此示例程序以打开串行端口。资料来源:http://pyserial.sourceforge.net/shortintro.html 我尝试在python版本2.7和3.4中运行代码,但仍然得到相同的错误。

>>> 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.')

1 个答案:

答案 0 :(得分: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等)