我有一个很好的小脚本,应该像往常一样在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())