62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
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 |