python - 获取连接到端口/dev/ttyACM0的设备名称

标签 python pyserial

有没有办法获取连接到串口的设备名称?

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

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

最佳答案

是的,当然。

但这与串口本身没有严格的联系。这取决于设备使用的协议(protocol)。

本质上,您向设备发送一些预设的初始数据,设备会以制造商、名称、型号和版本或这些的某种组合进行响应。

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

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

1. Open the port with 9600 baud rate
2. Send the request for info
3. Use info to reset the port etc.

我知道有些程序会这样做。当检测算法询问他们是谁时,您甚至可以听到旧的 56K 调制解调器对查询的 react 。

现在,您必须搜索这是标准过程还是每个设备都有自己的过程。

如果您正在搜索手机,那么很可能有一个针对手机版本的手机版本,也许每种操作系统都有,例如 iOS、Symbian、Android、Windows *...

如果您在互联网上找不到该协议(protocol),请为串行端口安装虚拟卡,在循环端口上执行中间人以查看与手机应用程序初始通信时发送的数据。

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

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

附注我发现了一些东西!

尝试发送:

"\x02S\x00\x00\x00\x00\x03"

您应该返回一些包含设备数字标识符的数据。就像序列号一样。

关于python - 获取连接到端口/dev/ttyACM0的设备名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41521034/

相关文章:

python - pandas datetimeindex Between_time函数(如何获取not_ Between_time)

python - 如何设置环境变量 TF_Keras = 1 进行 onnx 转换?

python - 像在 Excel 中一样添加 pandas 数据框计算列

python - 文档中令人困惑的 'readline' 警告

python - 如何读取Python Arduino Uno的多个条件

python - 如何提高 PySerial 读取速度

python - 关于Python Flask "BuildError: Could not build url for endpoint '索引'。你的意思是 'main.index' 吗?”

python - Python list.extend() 是 Order Presserving 吗?

python-serial OSError : [Errno 11] Resource temporarily unavailable