我从串口获得温度,而不是数字。
try {
while (inputStream.available() > 0) {
int n = inputStream.available();
readBuffer = new byte[n];
inputStream.read(readBuffer, 0, n);
}
int i=1;
String y = new String(readBuffer, StandardCharsets.ISO_8859_1);
String str = new String(readBuffer, "UTF-8");
String ye = new String(readBuffer);
String b = new BigInteger(1, readBuffer).toString();
jTextField3.setText(" " + str + " ");
答案 0 :(得分:2)
将Difference.DiffFiles
换成DataInputStream
,然后根据需要使用readByte()
,readInt()
方法从流中读取正确的数据类型。
答案 1 :(得分:1)
这是因为串口为您提供二进制而不是文本的值。您需要找到值的确切格式(2或4个字节,有符号或无符号,...)才能将它们正确转换为字符串。
答案 2 :(得分:0)
现在available()
用于asychrone轮询,在产生正数之前可能为0。最好是以阻塞方式读取缓冲区。
byte[] readBuffer = new byte[0];
try {
for (;;) {
int n = inputStream.available();
if (n <= 0) {
break;
}
readBuffer = new byte[n];
inputStream.read(readBuffer, 0, n);
break;
}
String y = new String(readBuffer, StandardCharsets.ISO_8859_1);
jTextField3.setText(" \"" + y + "\" ");
jTextField3.setText(Arrays.toString(readBuffer)));
}
您的字节缺少编码。最好的可能是将数据保持为字节数组。