Arduino получает данные от клиента и пересылает другому клиенту (в целом) - PullRequest
0 голосов
/ 22 марта 2020

Я отправляю данные с заголовком (содержит размер сообщения) от клиента node.js в arduino, как показано ниже

socket.on('datos', function (data){

        var msg = JSON.stringify(data);
        var size = msg.length;

        encrypted_msg = new Uint8Array(size +1);

        encrypted_msg[0] = size;
        console.log('Header:'+ encrypted_msg[0]);
        for(var i = 0; i < size; i++) {
            encrypted_msg[i+1] = msg.charCodeAt(i);
            console.log(encrypted_msg);     // copy the rest of the body
          }                                    // after header

        client.write(encrypted_msg); // Sending message with header to arduino

      });

В Arduino я получаю данные, как показано ниже, байт на байт, проблема в том, что когда я пытаюсь отправить эти данные другому моему клиенту node.js, Arduino отправляет данные байт за байт, поэтому я не получаю их целиком. Интересно, есть ли способ прочитать заголовок на Arduino, поэтому теперь он будет иметь длину сообщения и отправлять его как одно сообщение. Любые идеи, пожалуйста, помогите?

void loop()
{

     EthernetClient clientA = serverA.available();
     if (clientA) {
         Serial.println("Client A connected.");
         while(clientA.available() > 0) {
             char dataA= clientA.read(); // 
             Serial.print(dataA);
             serverB.write(dataA); // serverB is the other node.js client
         }


     }
}
...