我试图通过Socket命令控制继电器板。
我能够创建一个可以正常运行的小型Python程序:
import socket
HOST = '192.168.1.1'
PORT = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
DATA = '\x58\x01\x12\x00\x00\x00\x05\x70'
s.send(DATA)
data = s.recv(4096)
s.close()
d = data.encode('hex').upper()
print 'Received', repr(d)
现在我想把它切换到Java但是我在发送我知道的java中的HEX字符串时遇到问题应该写成: 0x58,0x01,0x12 ........ 任何人都可以帮助我在一个有效的Java例程中转换这几行吗?
答案 0 :(得分:1)
在Java中,如果您编写String command = ("0x58, 0x01, 0x12, 0x00, 0x00, 0x00, 0x04, 0x6F");
,command
将是一个仅包含您输入的字符的字符串。如果要使用byte
数组,然后使用该字节数组初始化字符串,则需要做什么。像这样:
byte[] buffer = new byte[]{
(byte)0x58,
(byte)0x01,
(byte)0x12,
(byte)0x00,
(byte)0x00,
(byte)0x00,
(byte)0x04,
(byte)0x6F
};
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
String command = new String(buffer);
wr.write(command);
System.out.println(command);
// Flushing the writer
wr.flush();