PDA

View Full Version : [C#] problema con stringhe provenienti da Arduino


AngryAlex
22-08-2011, 23:36
Salve, ho la necessita' di leggere dei dati tramite porta seriale che mi vengono inviati da una scheda Arduino. Il problema e' che la variabile stringa del programmino c# che uso, invece di immagazzinare una stringa alla volta, ne immagazzina una, due....quattro o cinque alla volta creandomi notevoli problemi. Il numero di stringhe nella variabile sembra essere random.

Allego un po di codici.
Arduino:

void loop () {

if(PSButton(PSB_PAD_RIGHT))
Serial.println("Right");
}

Programma in C#:

private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(RxString);


}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

RxString = serialPort1.ReadExisting();


this.Invoke(new EventHandler(DisplayText));
}

Nella textbox mi stampa una cosa del genere:

Right
RightRightRight
RightRight
RightRight
Right
RightRight
RightRightRight
RightRightRightRightRight
RightRight
Right
RightRightRightRight
RightRight
RightRight
RightRightRight

In pratica ad ogni riga qui sopra corrisponde il contenuto della variabile RxString.

Come posso ottenere sempre e solo una stringa nella variabile?
Grazie!:p

ESSE-EFFE
23-08-2011, 09:28
void loop () {

if(PSButton(PSB_PAD_RIGHT))
Serial.println("Right");
}


Non conosco l'hardware e non so cosa faccia la PSButton, ma se si limita a ritornare lo stato del pulsante, direi che potrebbe servirti un sistema di antirimbalzo.

AngryAlex
23-08-2011, 10:07
Non conosco l'hardware e non so cosa faccia la PSButton, ma se si limita a ritornare lo stato del pulsante, direi che potrebbe servirti un sistema di antirimbalzo.

Sei gia' il secondo a dirmelo...mi sa che provero' questa strada ;) Thanks!

U235
23-08-2011, 13:42
Salve, ho la necessita' di leggere dei dati tramite porta seriale che mi vengono inviati da una scheda Arduino. Il problema e' che la variabile stringa del programmino c# che uso, invece di immagazzinare una stringa alla volta, ne immagazzina una, due....quattro o cinque alla volta creandomi notevoli problemi. Il numero di stringhe nella variabile sembra essere random.

Allego un po di codici.
Arduino:

void loop () {

if(PSButton(PSB_PAD_RIGHT))
Serial.println("Right");
}

Programma in C#:

private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(RxString);


}

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

RxString = serialPort1.ReadExisting();


this.Invoke(new EventHandler(DisplayText));
}

Nella textbox mi stampa una cosa del genere:

Right
RightRightRight
RightRight
RightRight
Right
RightRight
RightRightRight
RightRightRightRightRight
RightRight
Right
RightRightRightRight
RightRight
RightRight
RightRightRight

In pratica ad ogni riga qui sopra corrisponde il contenuto della variabile RxString.

Come posso ottenere sempre e solo una stringa nella variabile?
Grazie!:p
ciao,
hai provato a far scrivere la stringa ad arduino aggiungendo un carattere di fine riga? tipo un NewLine
(quello da te definito) e per leggere usi .ReadLine()

AngryAlex
23-08-2011, 22:56
Ho risolto usando ReadLine() anziche' ReadExisting(), mi perdevo in un bicchiere d'acqua....:O

Comunque il problema era quello, ci hai preso :D

Grazie ciao!!

U235
24-08-2011, 09:15
Ho risolto usando ReadLine() anziche' ReadExisting(), mi perdevo in un bicchiere d'acqua....:O

Comunque il problema era quello, ci hai preso :D

Grazie ciao!!
:)

di nulla.

Ciao.