Ajuda com Serial.readString() - RX / TX

Bom dia.

Estou desenvolvendo do projeto onde uso uma placa Arduino Mega, Display Nextion, sensor HMC5883L e relé, além de um aplicativo instalado no computador que envia dados do tipo string para porta serial através do cabo usb.

Tudo funciona perfeitamente até o aplicativo começar a enviar os dados para porta serial. Nesse momento o Mega deixa de ler os dados do HMC5883L. O sensor só volta a ser lido quando desligo o aplicativo que envia dados para serial.

Observando a placa, vejo que quando o programa começa a enviar os dados para serial, o led RX que estava piscando, apaga e o led TX que estava apagado começa a piscar recebendo os dados pela serial.

Não estou conseguindo deixar as duas coisas funcionando ao mesmo tempo, ou seja, os dados enviados pela serial e os do sensor. Preciso dos dois dados em tempo real, pois tenho que compara-los e acionar outras funções.

Segue parte do código onde faço a leitura da serial:

void Read_AZ()
{
if (Serial.available() > 0){
s = Serial.readString(); // read the incoming data as string

   sAzimuth = s.substring(0, s.indexOf(";"));
   sAzimuth = sAzimuth.substring(0, sAzimuth.indexOf("."));
   int a = sAzimuth.toInt(); // toInt convert string to integer
   n2.setValue(a); //send azimuth to nextion
  }

}

Agradeço desde de já a quem poder ajudar.

Prezados,

Graças a Deus, acabei de conseguir resolver meu problema que já durava meses, da maneira mais simples possível e estou compartilhando.
Conheci a função Serial.setTimeout() que configura o número máximo de milissegundos a se esperar por dados seriais. Créditos ao vídeo: Arduino: Lendo palavras (STRINGS) pela serial, do Prof. Gabriel Maganha.

Um abraço a todos.

Boa noite N Costa

Peguei um código de exemplo para a leitura USB utilizando o modulo USB host, estou conseguindo realizar a leitura normalmente, porem não estou conseguindo realizar a comparação das informações que estão vindo da serial, por exemplo se a serial receber “concluido” acenda o led do pino 13.

Creio eu que o erro esteja nessa parte

if( rcvd ) {
for(uint16_t i=0; i < rcvd; i++ ) {
Serial.print((char)buf[i]);
dados = ((char)buf[i]);

if (dados == “Concluido”)
{
digitalWrite(13, HIGH);
}

}

Vc sabe o que eu estou fazendo de errado?