我正在尝试使用串行端口在我的 PC(使用 Netbeans 和 RXTX 的 Windows 7)与 Arduino Pro 之间进行通信。Arduino 实际上是使用 FTDI 电缆连接到 PC 的。
该代码基于此处找到的 Java SimpleRead.Java。
目前,Arduino 只是在启动时打印出一个字符串。我的 Java 程序应该打印已读取的字节数,然后打印出内容。Java程序可以工作,有点......
如果字符串很长(> 10 个字节左右),输出将被分解。
所以如果我在 Arduino 上打印
Serial.println("123456789123456789"); //20 bytes including '\r' and '\n'
我的 Java 程序的输出可能类似于:
Number of Bytes: 15
1234567891234
Number of Bytes: 5
56789
或者
Number of Bytes: 12
1234567891
Number of Bytes: 8
23456789
我认为这是一个时间问题,因为当我使用调试器手动检查代码时,结果字符串始终是它应该是的:一个 20 字节的字符串。
我一直在搞砸各种事情,但我无法解决问题。
这是给我带来问题的代码部分:
static int baudrate = 9600,
dataBits = SerialPort.DATABITS_8,
stopBits = SerialPort.STOPBITS_1,
parity = SerialPort.PARITY_NONE;
byte[] readBuffer = new byte[128];
...
...
public void serialEvent(SerialPortEvent event)
{
if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
if (input.available() > 0) {
//Read the InputStream and return the number of bytes read
numBytes = input.read(readBuffer);
String result = new String(readBuffer,0,numBytes);
System.out.println("Number of Bytes: " + numBytes);
System.out.println(result);
}
} catch (IOException e) {
System.out.println("Data Available Exception");
}
}