我正在尝试使用 Python 控制继电器,但遇到了障碍。
不幸的是,我找不到该特定继电器的数据表,这意味着我没有要发送的正确命令。| ||这是我到目前为止所尝试过的:
计算机将该设备识别为 HID(人机接口设备)。 我尝试了各种命令,但似乎都不起作用。
我尝试了这段代码,但出现错误,因为我的继电器没有接受任何命令:
我的终端是这样的:
import hid
def list_hid_devices():
for device in hid.enumerate():
keys = list(device.keys())
keys.sort()
for key in keys:
print(f"{key}: {device[key]}")
print()
def send_hid_command(vendor_id, product_id, command):
try:
device = hid.device()
device.open(vendor_id, product_id)
print(f"Manufacturer: {device.get_manufacturer_string()}")
print(f"Product: {device.get_product_string()}")
print(f"Serial No: {device.get_serial_number_string()}")
device.write(command)
response = device.read(64)
print(f"Response: {response}")
device.close()
except Exception as e:
print(f"Error: {e}")
print(" HID devices:")
list_hid_devices()
VENDOR_ID = 0x16C0
PRODUCT_ID = 0x05DF
relay_commands = [
[0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
]
for command in relay_commands:
send_hid_command(VENDOR_ID, PRODUCT_ID, command)
制造商:
www.dcttech.com
产品:USBRelay4
序列号:
错误:读取错误
制造商:
www.dcttech.com 产品:USBRelay4
序列号否:
错误:读取错误
有人知道控制该继电器的正确命令吗? 在哪里可以找到该继电器的数据表?
Does anyone know the right commands for controlling this relay? Where can I find the datasheet for this relay?
由于没有该特定 4 通道 USB 继电器的精确数据表,让它工作可能会有些棘手,但我们来试试看!
以下是调试问题和查找正确命令的一些步骤:
1. 深入研究 USB 设备描述符:
-
使用
lsusb
(Linux)或设备管理器(Windows)获取详细信息: 记下的继电器的供应商 ID (VID) 和产品 ID (PID)。在代码中提供的 ID (0x16C0:0x05DF
) 看起来是正确的,但仔细检查一下总是好的。 - 使用 USB 分析工具: 像 Wireshark 或 USBPcap 这样的工具可以捕获计算机和设备之间的 USB 通信。运行这些工具,与的继电器交互(例如,插入和拔出它),并检查捕获的数据包。寻找与供应商/产品 ID 匹配并可能揭示一些通信协议的模式。
2. 逆向工程(如果绝对必要):
- 如果所有其他方法都失败,并且愿意投入时间,可以尝试逆向工程设备的通信协议。 这涉及到分析 USB 通信以了解命令是如何结构化的,以及设备如何响应不同输入的。这可能非常具有挑战性,需要对 USB 通信和协议有深入的了解。
3. 联系制造商或寻求在线资源:
- 联系 dcttech: 访问 dcttech 的网站 ( http://www.dcttech.com ) 或通过电子邮件与他们联系。他们可能有可用的文档或驱动程序,可以为提供有关设备控制方式的线索。
- 在线搜索: 使用继电器的确切型号名称(如果可能)或使用“dcttech USBRelay4 命令集”或“dcttech USB 继电器 Python 控制”等搜索词进行广泛的互联网搜索。其他用户可能遇到过类似的问题,并分享了解决方案或见解。
关于的 Python 代码:
-
的 Python 代码看起来是使用
hid
库与 HID 设备交互的良好起点。 - 主要挑战在于确定要发送的正确命令。HID 设备可以实现自定义协议,如果没有文档,破译这些协议可能会很困难。
附加提示:
- 检查设备上的物理按钮: 有时,设备上的物理按钮可以提供有关其工作原理的线索。尝试在按住按钮的同时运行 USB 分析工具,看看发送了什么命令。
- 在线社区: 在专门讨论电子产品、USB 通信或逆向工程的论坛或在线社区中寻求帮助。
请记住,在没有数据表的情况下,找到正确的命令可能会很困难。祝好运,如果有任何其他信息或问题,请告诉我!
标签:python,hid,serial-communication From: 78764984