0

我有一块使用 modbus 通信的电路板,我想与安卓智能手机建立连接。使用 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();

这段代码进入了我在主线程中调用的线程。板子的回复是一个字节数组,如“asdo”,有六个十六进制字节。

如何阅读回复并将其转换为字符串以便阅读?

谢谢!

4

2 回答 2

3

由于您有byte[]数据(数组),因此有一种简单的方法可以将数据直接读入byte[].

InputStream stream = socket.getInputStream();
byte[] data = new byte[30];
int count = stream.read(data);

这将立即读取并返回读取的出现次数。

于 2014-02-13T19:56:35.753 回答
2

如果您事先知道预期回复的大小,则应使用DataInputStream.readFully();否则DataInputStream.read(byte[]),将返回实际读取的字节数。

于 2014-02-13T22:39:02.647 回答