【发布时间】:2015-03-18 19:52:46
【问题描述】:
我正在制作一个适用于串行端口的应用程序。问题是我正在控制的设备接收无符号字节范围,正如我所见,java 只接受有符号字节范围。
我已经用谷歌搜索了如何发送,但我只知道如何接收无符号字节。
谢谢 编辑 2:@durandal 对我的代码提出的修复:
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.DATA_AVAILABLE: {
System.out.println("Datos disponibles");
try {
int b;
int disponibles = input.available();
byte[] rawData = new byte[disponibles];
int count = 0;
while ((b = input.read()) != -1) {
if (count == disponibles - 1) {
break;
}
rawData[count] = (byte) b;
count++;
}
serial.serialDataReceived(bytesToHex(rawData), rawData);
} catch (IOException ex) {
Logger.getLogger(PuertoSerie.class.getName()).log(Level.SEVERE, null, ex);
}
}
break;
}
【问题讨论】:
-
尝试按照stackoverflow.com/questions/7401550/…进行转换,然后发送你得到的值。
-
您可以将有符号字节视为无符号字节,反之亦然。这只是一个小心的问题。
-
@soong 我已经尝试了你所说的我在第一篇文章中输入了一个用于测试接收的代码,我收到了 00。谢谢
-
@LouisWasserman 怎么样?谢谢
-
@soong 谢谢它的工作