Communication série entre Java RXTX et Arduino

Je suis en train de communiquer entre mon PC (Windows 7 à l'aide de Netbeans et RXTX) avec un Arduino Pro, en utilisant le port série. L'Arduino est en fait connecté à l'ordinateur à l'aide d'un câble FTDI.

Le code est basé sur le Java SimpleRead.Java trouvé ici.

Actuellement l'Arduino simplement imprime une chaîne de caractères lorsqu'il démarre. Mon programme Java doit imprimer le nombre d'octets qui ont été lus et ensuite imprimer le contenu. Le programme Java fonctionne, en quelque sorte...

Si la chaîne est longue (>10 octets), la sortie se casser.

Donc, si sur l'Arduino, j'ai l'impression

Serial.println("123456789123456789"); //20 bytes including '\r' and '\n'

La sortie de mon programme Java peut ressembler à quelque chose comme:

Number of Bytes: 15   
1234567891234  
Number of Bytes: 5  
56789

ou

Number of Bytes: 12   
1234567891  
Number of Bytes: 8  
23456789

Je pense que c'est un problème de synchronisation, parce que quand je aller manuellement dans le code en utilisant le débogueur, la chaîne de résultat est toujours ce qu'elle devrait être: un 20 chaîne d'octets.

Je me suis amusé avec diverses choses, mais je n'ai pas été en mesure de résoudre le problème.

Voici la partie du code qui me donne des problèmes:

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");
    }
}

source d'informationauteur SharpBarb