EndsWith("\n") est lent

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Frederic
Messages : 36
Inscription : 24 Déc 2021 18:25

EndsWith("\n") est lent

Message par Frederic » 30 Jan 2022 15:20

Bonjour

Je travail avec une communication Bluetooth BLE sur Android ,

J’envoie plusieurs longs message terminés par un saut de ligne à la suite à partir de l’arduino et d’un module HM-10 .
Je reçois seulement des bout de message fragmentés, ce qui est normal, je les place dans un tampon fifo avec Enqueue(), ça fait bien le job tout seul

Code : Tout sélectionner

BoutDeMessageRecu =   Encoding.ASCII.GetString (bytes); //Reception ici ,   ca change rien >>   Encoding.UTF8  ou Encoding ASCII 
stringFifoBoutDeMessage.Enqueue(BoutDeMessageRecu); // FIFO
Mon problème est quand je concatène ces fragments de messages,

Code : Tout sélectionner

MessageTemp = String.Concat(MessageTemp, Temp);
la méthode EndsWith("\n") détecte seulement le saut de ligne quand j’espace mes messages arduino de 150 millisecondes et de plus mon string MessageTemp ne se remet pas à zéro

Code : Tout sélectionner

public void IMPORTFIFO()
{
    		FifoCount = stringFifoBoutDeMessage.Count; // nombre de fragments
		
		if (FifoCount > 0)
		{	
			Temp = stringFifoBoutDeMessage.Dequeue() ; // extrait le premier message de FIFO et décrémente FifoCount tout seul
			MessageTemp = String.Concat(MessageTemp, Temp);
			Debug.Log(Temp);
			Debug.Log("______________________________MessageTemp    "  + MessageTemp);

			if( Temp.EndsWith("\n") == true)
			{
				Debug.Log("CRLF OK");
				SerialCOM.Parse(MessageTemp);
				//Debug.Log("------------------------------------MessageTemp    "  +   MessageTemp);
				//MessageTemp = ("");
				temp = ("");
				PanEcran.AjoutObjet();
				MessageTemp.Remove(0);
				Debug.Log("______________________________MessageTemp  VIDE    "  +   MessageTemp);
			}

		}

}
150 milliseconde, c'est pas normal avec un tampon FIFO

Frederic
Messages : 36
Inscription : 24 Déc 2021 18:25

Re: EndsWith("\n") est lent

Message par Frederic » 24 Fév 2022 22:25

ca fonctionne avec ça

Code : Tout sélectionner

IndexSautDeLigne = StringComplet.IndexOf("\n"); //'\n'

Répondre

Revenir vers « Scripting »