简体   繁体   中英

Python PySerial, How to Open Serial Ports?

I'm trying to run this example program from the PySerial Documentation for opening serial ports. Source: http://pyserial.sourceforge.net/shortintro.html I tried running the code in both python version 2.7 and 3.4 but still get same error.

>>> 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

I get the following error after running the second line of code:

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

It sounds like COM1 is not available (it doesn't exist or it's already being used). I made this little scripts for listing available COM ports.

import serial
ser=serial.Serial()
for ns in xrange(101): 
    try:
        ser.port=ns
        ser.open()
        print "COM"+str(ns+1)+" available"
        ser.close()

    except serial.SerialException:
        print "COM"+str(ns+1)+" NOT available"

Remember that the COM port number is the number you pass to serial +1 (serial.Serial(0) opens COM1, serial.Serial(1) opens COM2, etc.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM