我有一块使用modbus通讯的电路板,我希望与Android智能手机建立连接。 使用jamod库它不会创建连接,所以我使用了标准的tcp套接字。 通过这种方式,我可以创建连接,我可以向板上发送一个字节数组。 当我想阅读董事会的回复时,问题就出现了。
这是代码:
byte[] asdo = {(byte)0x01, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0xff, (byte)0xff};
DataOutputStream scrittura = new DataOutputStream(socket.getOutputStream());
scrittura.flush();
scrittura.write(asdo);
scrittura.flush();
这段代码是我在main上调用的一个帖子。 该板的回复是一个字节数组,如'asdo',有六个十六进制字节。
如何阅读回复并将其转换为字符串,以便我可以阅读?
谢谢!
答案 0 :(得分:2)
由于您拥有byte[]
数据(数组),因此可以通过简单的方式将数据直接读入byte[]
。
InputStream stream = socket.getInputStream();
byte[] data = new byte[30];
int count = stream.read(data);
这会立即读取并返回读取的出现次数。
答案 1 :(得分:2)
如果您事先知道预期回复的大小,则应使用DataInputStream.readFully();
,否则DataInputStream.read(byte[]),
将返回实际读取的字节数。