Forum: Mikrocontroller und Digitale Elektronik Stringende bei UART Übertragung wird nicht erkannt [stm32f4]]


von Philipp B. (phill4563)


Angehängte Dateien:

Lesenswert?

Hallo liebe User,
Ich habe eine Serielle Schnitstelle zwischen PC/Matlab und dem STM32F4 
Discovery Board hergestellt.
Jetzt möchte ich Daten von Matlab an den Controller senden, was soweit 
auch einwandfrei funktioniert.
Um Float Zahlen zu übertragen, habe ich diese zuvor in Matlab in einen 
String gewandelt.
Mein Problem besteht nun darin, dass ich im µc kein Stringende erkennen 
kann.
Hier der Code im Controller, sowie der Matlab-Code und der Arr-Inhalt 
nach einem "Sendebefehl" in Matlab als .png

Das Array sollte eigentlich mit jeden 'Sendebefehl überschrieben werden.
Momenan allerdings werden die beiden Strings einfach hintereinander in 
das arr geschrieben.
Ich hoffe jemand kann mir da ein wenig weiter helfen.
Vielen Dank im Voraus
Grüße Phil

1
  extern "C" void USART3_IRQHandler()
2
  {  
3
    static uint8_t count=0;                  
4
    char reciever;
5
 
6
      reciever=USART3->DR;
7
      if(reciever != '\n')
8
      {
9
      usartarr[count]=reciever;
10
      count++;
11
      }
12
      else
13
      {
14
      count=0;
15
      }
16
17
  }

von Peter II (Gast)


Lesenswert?

Philipp Bauer schrieb:
> if(reciever != '\n')

du wartest auf ein ENTER - es wird aber keines gesendet. Es wird ein \0 
am ende gesendet.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Philipp Bauer schrieb:
> Mein Problem besteht nun darin, dass ich im µc kein Stringende erkennen
> kann.
Sendet dein Matlab am Stringende ein New Line?

> reciever
Es spricht sich zwar so, schreibt sich aber anders...

> matlabcode.png
Ist Matlab ein grafisches Programmiertool? Oder warum macht man 
Screenshots von 6 Zeilen Quelltext?


Peter II schrieb:
> Es wird ein \0 am ende gesendet.
Das möchte ich sehen! Ich behaupte: da wird einfach nur der 
nullterminierte String ohne die Null am Ende gesendet.

von Karl H. (kbuchegg)


Lesenswert?

Peter II schrieb:
> Philipp Bauer schrieb:
>> if(reciever != '\n')
>
> du wartest auf ein ENTER - es wird aber keines gesendet. Es wird ein \0
> am ende gesendet.


Wobei mich beim geposteten Matlab Code auch das wundern würde.
Oder wird vom Matlab wahlweise
* nach einem fwrite autoatsch ein \0 eingeschoben?
* die Stringlänge inklusive \0 angegeben?

(kenn die Matlab-Details da nicht)


Wie kommt man eigentlich auf die Idee, Code als PNG zu posten. Da kann 
man sich so wunderbar auf diesen Code beziehen! (Sarkasmus off)

von Philipp B. (phill4563)


Lesenswert?

Hallo Peter,
zunächst einmal vielen Dank für deine Antwort, leider führt ein '\0' in 
der Abfrage zum gleichen Ergebnis.

Grüße Phil

von Jonas B. (jibi)


Lesenswert?

>zunächst einmal vielen Dank für deine Antwort, leider führt ein '\0' in
>der Abfrage zum gleichen Ergebnis.

Ja weil matlab nichts einfügt. Also am ende deine ausgabe in matlab den 
string terminieren in dem du ein '\n' ausgibst.

Gruß Jonas

von Philipp B. (phill4563)


Lesenswert?

> Ja weil matlab nichts einfügt. Also am ende deine ausgabe in matlab den
> string terminieren in dem du ein '\n' ausgibst.

Vielen Dank Jonas, ich werde das gleich probieren.





>Wie kommt man eigentlich auf die Idee, Code als PNG zu posten. Da kann
>man sich so wunderbar auf diesen Code beziehen!

Ich wollte die beiden verschiedenen Programme der Übersicht wegen 
trennen, wusste aber nicht das dies so eine Lawine lostritt.

Grüße Phil

von Karl H. (kbuchegg)


Lesenswert?

Philipp Bauer schrieb:

> Ich wollte die beiden verschiedenen Programme der Übersicht wegen
> trennen, wusste aber nicht das dies so eine Lawine lostritt.

Für die Zukunft:

In einer Antwort zu einem Programmproblem möchte ein Antworter meistens 
einen Codeausschnitt in die Antwort einbauen, auf den er sich bezieht.
Wenn er den Code in Textform hat, dann geht das ganz einfach: Code 
markieren - Strg-C - an die bewusste Stelle in der Antwort springen - 
Strg-V - und der Codeausschnitt steht in der Antwort.
Postest du deinen Code (oder sonst irgendeine Text-Sache) als PNG (also 
als Bild), dann muss ich als Antworter alles neu tippen. Das kann man in 
Ausnahmefällen als Helfer schon mal machen, aber wenn du nett bist, dann 
machst du es mir leicht, dir zu helfen und schmeisst mir keine Prügel in 
Form von Mehrarbeit zwischen die Beine.

von Philipp B. (phill4563)


Lesenswert?

>Ja weil matlab nichts einfügt. Also am ende deine ausgabe in matlab den
>string terminieren in dem du ein '\n' ausgibst.

Danke für den Tipp Jonas, hat wunderbar funktioniert.


>In einer Antwort zu einem Programmproblem möchte ein Antworter meistens
>einen Codeausschnitt in die Antwort einbauen, auf den er sich bezieht.
>Wenn er den Code in Textform hat, dann geht das ganz einfach: Code
>markieren - Strg-C - an die bewusste Stelle in der Antwort springen -
>Strg-V - und der Codeausschnitt steht in der Antwort.
>Postest du deinen Code (oder sonst irgendeine Text-Sache) als PNG (also
>als Bild), dann muss ich als Antworter alles neu tippen. Das kann man in
>Ausnahmefällen als Helfer schon mal machen, aber wenn du nett bist, dann
>machst du es mir leicht, dir zu helfen und schmeisst mir keine Prügel in
>Form von Mehrarbeit zwischen die Beine.

Jup, das verstehe ich natürlich
Werde mich in Zunkunft daran halten
Grüße Phil

von Jonas B. (jibi)


Lesenswert?

>Danke für den Tipp Jonas, hat wunderbar funktioniert.

Gerne.

...

>Jup, das verstehe ich natürlich
>Werde mich in Zunkunft daran halten

Ja, aber Satzzeichen gehören auch dazu mein Bester. :D

Gruß Jonas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.