使用java编写简短的数据

时间:2015-06-23 08:12:12

标签: java bytearray short

我正在尝试使用java将数据写入我的串口。现在我只能将数据填充到表格中。我能否知道有什么方法可以将短数据写入串口。

这是我的代码:

    static short[] bytearray = {0x02, 0x08, 0x16, 0x00, 0x00, 0x33, 0xC6 , 0x1B};
    outputStream = serialPort.getOutputStream();
    outputStream.writeShort(bytearray);
    outputStream.flush();

我无法在outputstream写入方法中使用write short。谁能帮我这个。谢谢。

2 个答案:

答案 0 :(得分:0)

据我所知,writeShort将一个参数作为一个整数,并向端口发送两个短路。因此,您所要做的就是将两个short转换为int并使用它调用该方法。

outputStream = serialPort.getOutputStream();
for (int i = 0; i < bytearray.length; i+=2) {
   outputStream.writeShort((bytearray[i + 1] << 16) | bytearray[i]);
}
outputStream.flush();

请注意,此代码尚未经过测试 - 仅用作灵感!特别是bytearray[i + 1]位可以使索引超出范围!

答案 1 :(得分:0)

它应该取决于谁正在读取您正在写入串行端口的数据。如果它也是您正在开发的java程序,最简单的方法是使用ObjectOutputStream编写您的短裤数组,并使用ObjectInputStream在另一侧读取它。另一方面,如果另一方是设备,您需要担心它是否接受BigEndian或LittleEndian格式的数字。您可以编写一个方法将short数组转换为字节数组并使用OutputStream#write