String senden

Gast #177864
Lesenswert?
• ▲
▼
Hallo zusammen

Ich versuche einen String über den UART zu senden. Er kommt heraus,
aber am Schluss des Strings kommen noch kosmische Zeichen. Der zu
sendene ist:
"$PSRF103,01,01,01,01*25"
Herauskommt jedoch, wobei beim $ der nächste wieder beginnt:
"$PSRF103,01,01,01,01*25<0>ÃA"¥%5´3£#ÆÆÆ¦&VlS"‚š’3‹ƒšbƒŠcƒŠcƒŠc 
ƒŠS“«6$PSRF103,01,01,01,01*25"

Ausserdem sollte der String mit CR und LF terminiert sein, dies
funktioniert jedoch nicht :-(.

kann mir jemand helfen?? übrigens die routine ist im file sendstrng.c
angehängt.

besten Dank und Gruss Martial
Angehängte Dateien:
Gast #177866
Lesenswert?
• ▲
▼
Hallo OldBug
ich habe diese Transmit funktion eigentlich getestet und sie hat
funktioniert, aber evt. war das ja zufall das es funktioniert hat.
Darum gebe ich sie dir mal.
Gruss Martial

void USART_Transmit( unsigned char data )
{
   // ueberprüfung ob register leer
   while ( !( UCSRA & (1<<UDRE)) );

   // daten in das register schreiben um zu senden
   UDR = data;
}
Gast #177867
Lesenswert?
• ▲
▼
Hi

oder an falsch berechnetem length. Warum denn nicht:

void USART_SendString(unsigned char* data)
{
   //Alle zeichen nacheinander ausgeben
   while (*data)
   {
  USART_Transmit(*data++);
   }

   USART_Transmit(0x0D); //CR
   USART_Transmit(0x0A); //LF
}

Solte für 0-terminierten String problemlos funktionieren.

Matthias
Gast #177869
Lesenswert?
• ▲
▼
Hm, scheint dann wohl doch an der Länge zu liegen!?!?

Wenn Du Matthias Variante verwenden möchtest, dann musst Du das so
machen:

USART_SendString("\"$PSRF103,01,01,01,01*25\"");

Die "" terminieren den String entsprechend...
Gast #177875
Lesenswert?
• ▲
▼
hallo zusammen

sorry das ich das nicht gleich geschrieben habe :o)..

Ich musste den Sendstring folgendermassen ausführen:

USART_SendString("$PSRF103,01,01,01,01*25 \n\r\0");

eigentlich sollte das \n den cr und lf machen, doch dies ging nicht
darum noch den \r.

Das \0 ist die 0 ternimierung.

Gruss Martial

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren