import socket import binascii # 网络继电器的 IP 和端口 HOST = '192.168.20.18' PORT = 50000 valve_commands = { 1: { 'open': '00000000000601050000FF00', 'close': '000000000006010500000000', }, 2: { 'open': '00000000000601050001FF00', 'close': '000000000006010500010000', }, 3: { 'open': '00000000000601050002FF00', 'close': '000000000006010500020000', } } # 将十六进制字符串转换为字节数据并发送 def send_command(command): byte_data = binascii.unhexlify(command) # 创建套接字并连接到继电器 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.connect((HOST, PORT)) sock.send(byte_data) response = sock.recv(1024) return response # 控制电磁阀打开 def open(grasp, throw, shake): if grasp: print("打开电磁阀 1")#抓取 send_command(valve_commands[1]['open']) if throw: print("打开电磁阀 2")#扔袋 send_command(valve_commands[2]['open']) if shake: print("打开电磁阀 3")#震动 send_command(valve_commands[3]['open']) # 控制电磁阀关闭 def close(grasp, throw, shake ): if grasp: print("关闭电磁阀 1") send_command(valve_commands[1]['close']) if throw: print("关闭电磁阀 2") send_command(valve_commands[2]['close']) if shake: print("关闭电磁阀 3") send_command(valve_commands[3]['close']) close(True,True,True)#参数传True和False