将设备名称连接到端口/dev/ttyACM0

2024-09-29 19:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法把设备名称连接到串行端口?在

这个代码只告诉我串行端口的名称。但我需要连接到它的设备名称,即诺基亚手机

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完成它?在


Tags: 端口代码devimport名称falsetimetimeout
2条回答

是的,当然。在

但这并不是严格地连接到串行端口本身。这取决于设备使用的协议。在

基本上,你向设备发送一些预设的初始数据,它会以制造商、名称、型号和版本或这些内容的某种组合来响应。在

我不确定这是否是标准化的,你必须搜索它。在

如果是标准化的,它很可能是:

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*。。。在

如果在因特网上找不到协议,那么安装串行端口的虚拟卡,在循环端口上执行中间人操作,以查看在与电话应用程序进行初始通信时发送的数据。在

注意:连接到internet时,即使用手机作为调制解调器时,不要监视数据。您将只看到AT&T协议,这对您没有多大帮助。在

如果您想了解它是如何普遍工作的,请使用相同的技术与虚拟串行卡,但当新设备向导检测到新硬件。在

另外,我发现了一些东西!在

尝试发送:

^{pr2}$

您应该获取一些包含设备数字标识符的数据。比如序列号。在

现在一切顺利!我不得不输入.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()

相关问题 更多 >

    热门问题