pyserial不接受脚本端口

时间:2017-01-12 14:23:04

标签: python serial-port pyserial

我有一个很好的小脚本,应该像往常一样在def serial_port(): '/dev/ttyACM0'给我一个开放的串口。但是我的下一个function def connect_phone():并不接受这个作为输入(给我一个serial.serialutil.SerialException:,但只有当它手动输入时。有人在这里得到什么问题吗?

完整的脚本是这样的:

import sys
import glob
import serial
import time

def serial_ports():
    """ Lists serial port names

        :raises EnvironmentError:
            On unsupported or unknown platforms
        :returns:
            A list of the serial ports available on the system
    """
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')

    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result

def connect_phone():
        ser = serial.Serial("'"+serial_ports()[0]+"'", #'/dev/ttyACM0',     (this is the problem here)          
                        460800,
                        timeout=5,
                        xonxoff = False,
                        rtscts = False,
                        bytesize = serial.EIGHTBITS,
                        parity = serial.PARITY_NONE,
                        stopbits = serial.STOPBITS_ONE)

        ser.write(bytes('AT+CGMI' + '\r\n'))
        ser.timeout = 1
        ser.write('AT+CGMM' + '\r\n')
        ser.timeout = 1
        time.sleep(2)
        ser.write('AT+CNMI=?\r') #checks whether mobile phone can receive delivery reports
        response = ser.read(999)
        return response

print("'"+serial_ports()[0]+"'")
time.sleep(1)
print(connect_phone())

0 个答案:

没有答案