Я пытаюсь установить связь между моим ПК (Windows 7 с использованием Netbeans и RXTX) с Arduino Pro, используя последовательный порт. Arduino фактически подключен к ПК с помощью кабеля FTDI.
Код основан на 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");
}
}