首页 > 编程问答 >12 V USB 4 通道继电器控制

12 V USB 4 通道继电器控制

时间:2024-07-20 20:57:00浏览次数:12  
标签:python hid serial-communication

我正在尝试使用 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

相关文章

  • 用于检查 Google Gemini 支持的所有 GenerativeAI 模型的 Python 代码是什么?
    作为GenerativeAI世界的新手,我正在尝试加载预先训练的文本生成模型并做一些不起作用的事情。这就是我加载GenerativeAI模型的方式。fromvertexai.generative_modelsimportGenerativeModelgeneration_model=GenerativeModel("gemini-pro")由于它不......
  • 想让字典操作更优雅?自定义Python字典类型,简化你的代码库!
    目录1、继承dict类......
  • Vispy,一个专门用于创建交互式可视化的python库
    目录什么是Vispy?为什么选择Vispy?安装Vispy基础概念创建第一个Vispy可视化2D图形的进阶使用3D图形的绘制交互性结论什么是Vispy?Vispy是一个高性能的Python库,专门用于创建交互式可视化。它支持2D和3D数据的可视化,并且可以轻松地集成到各种应用程序中。Vispy的核心优......
  • python 复制 excel 保留文档中完全相同的参数(样式、单元格大小和融合、边框...)
    我正在寻找一种在其他文件中复制和excel的方法。我有一个“file_1.xlsx”,但我想要一个不存在的“file_1_copy.xlsx”。副本必须与原始文件完全相同,这意味着单元格大小、它们的融合、单元格中文本的颜色、背景、如果有边框,就好像我用右键单击。我有:importopenpyxlfromope......
  • python查看某个包的当前安装版本以及最新版本
    方法1:使用pip和--outdated参数你可以使用piplist--outdated命令来查看哪些包有更新版本可用。这个命令会列出所有安装的包以及它们在PyPI上的最新版本。piplist--outdated这将输出一个包列表,包含当前版本和最新版本,例如:PackageVersionLatestTyp......
  • 【python】错误 SyntaxError: invalid syntax的解决方法总结
    【python】错误SyntaxError:invalidsyntax的解决方法总结在Python编程中,SyntaxError:invalidsyntax是一个常见的错误,通常表示Python解释器在尝试解析代码时遇到了语法错误。这种错误可能由多种原因引起,包括拼写错误、缺少关键字、不恰当的缩进等。本文将深入探讨......
  • MiniQMT国债逆回购策略Python代码全解析
    文章目录......
  • python—爬虫的初步了解
    Python爬虫(WebScraping)是一种自动化从网站上提取数据的技术。Python由于其简洁的语法、丰富的库和强大的社区支持,成为了实现网络爬虫的首选语言之一。下面是一些Python爬虫的基本概念和步骤:1.爬虫的基本概念请求(Request):爬虫向服务器发送的请求,通常包括URL、HTTP方法(如......
  • Python集合的概念与使用
      在Python中,集合(set)是一种无序且不包含重复元素的数据结构。集合对象由一组大括号 或 函数创建,但请注意,大括号 在没有元素的情况下会创建一个空字典,而不是空集合。因此,当你想创建一个空集合时,应该使用 set()函数而不是 set{}集合的特点无序:集合中的元素没有特定的......
  • python——面向对象(2)继承与多态
    文章目录继承的基本语法继承的特点继承的类型多态在Python中,继承是一种基于已存在的类来创建新类的方式。这种机制允许我们定义一个通用的类,然后基于这个类来定义一些特定的类,这些特定的类将继承通用类的属性和方法,同时也可以添加或覆盖一些新的属性和方法。这种方式......