有没有办法让设备名称连接到串口?
这段代码只给出了串口的名称。但我需要连接到它的设备名称,即诺基亚手机
import serial
import time
ser = serial.Serial('/dev/ttyACM0',
460800,
timeout=5,
xonxoff = False,
rtscts = False,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE)
sere = ser.name
print (ser, sere)
我一直在检查像gammu-detect
这样的其他可能性,但我希望有一个自立的python脚本来执行此操作。有没有办法用pyserial完成它?
答案 0 :(得分:1)
是的,当然。
但这与串口本身没有严格的联系。这取决于设备使用的协议。
在必要时,您将一些预设的初始数据发送到设备,它会响应制造商,名称,型号和版本或这些的一些组合。
我不确定这是否标准化,你必须搜索它。
如果它是标准化的,很可能是这样的:
1. Open the port with 9600 baud rate
2. Send the request for info
3. Use info to reset the port etc.
我知道有些程序会这样做。当检测算法询问他们是谁时,您甚至可以听到旧的56K调制解调器对查询作出反应。
现在,您必须搜索这是标准程序还是每个设备都有自己的程序。
如果您正在搜索手机,那么很可能有一款适用于手机版本,也许每台操作系统都有,如iOS,Symbian,Android,Windows * ......
如果在互联网上找不到协议,则在串口安装虚拟卡,在环路端口中间执行man,查看与手机应用程序初始通信时发送的数据。
注意:连接到互联网时请勿查看数据,即将手机用作调制解调器。您将只看到AT& T协议,这对您没什么帮助。
如果您想了解它是如何普遍使用的,请使用与虚拟串行卡相同的技术,但是当新设备向导检测到新硬件时。
P.S。我找到了什么!
尝试发送:
"\x02S\x00\x00\x00\x00\x03"
您应该返回一些包含设备数字标识符的数据。像序列号一样。
答案 1 :(得分:1)
现在情况很好!我不得不输入.read命令。这是解决方案:
import serial
import time
ser = serial.Serial('/dev/ttyACM0',
460800,
timeout=5,
xonxoff = False,
rtscts = False,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE)
#s = input('Enter AT command --> ')
#print ('AT command = ' + s)
ser.write(bytes('AT+CGMI' + '\r\n'))
ser.timeout = 1
response = ser.read(999)
print(response)
ser.close()