主要的问题在于命令的发送,最后通过wireeshark抓包找到了真实的命令;
import ctypes
import os
import time
current_dir = os.path.dirname(os.path.abspath(__file__))
ctypes.CDLL(os.path.join(current_dir, "hidapi.dll"))
# 接下来可以继续使用hid模块
import hid
# 定义 HID 设备的厂商 ID 和产品 ID,需要根据实际继电器修改
VENDOR_ID = 0x5131 #0x140b #
PRODUCT_ID = 0x2007 #0x7d7 #
try:
#ret = hid.enumerate(VENDOR_ID, PRODUCT_ID)
#print(ret)
#for device_info in hid.enumerate():
# print(device_info)
# 打开 HID 设备
device = hid.Device(vid=VENDOR_ID, pid=PRODUCT_ID)
print("成功连接到 HID 继电器")
# 示例:发送命令打开继电器(命令需要根据实际继电器协议修改)
open_command = bytes([0x00,0xa0,0x01,0x01,0xa2] + [0x00]* 60 ) # 调整命令格式以适应你的设备
print(f"Sending command: {open_command.hex()}")
device.write(open_command)
print("已发送打开继电器命令")
# 尝试读取设备响应
try:
response = device.read(64) # 读取最大64字节的数据,根据设备调整
print(f"Received response: {response}")
#response_str = response.decode('utf-8')
#print(f"Response as string: {response_str}")
except Exception as e:
print(f"Failed to read from device: {e}")
time.sleep(5)
close_command = bytes([0x00,0xa0,0x01, 0x00, 0xa1] + [0x00]* 60 )
print(f"Sending command: {close_command.hex()}")
device.write(close_command)
print("已发送关闭继电器命令")
except Exception as e:
print(f"连接或操作 HID 继电器时出错: {e}")
finally:
try:
# 关闭设备
device.close()
except NameError:
pass
open命令主要时如下数据:
open_command = bytes(0x00,0xa0,0x01,0x01,0xa2) # 调整命令格式以适应你的设备
其中第一位为标识符;第二位开始为抓包时获取的命令;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。