我正在尝试使用java将数据写入我的串口。现在我只能将数据填充到表格中。我能否知道有什么方法可以将短数据写入串口。
这是我的代码:
static short[] bytearray = {0x02, 0x08, 0x16, 0x00, 0x00, 0x33, 0xC6 , 0x1B};
outputStream = serialPort.getOutputStream();
outputStream.writeShort(bytearray);
outputStream.flush();
我无法在outputstream写入方法中使用write short。谁能帮我这个。谢谢。
答案 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
。