mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART übrtragung über SerialPort reagiert erst beim Senden über ein Terminal


Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich Arbeite an einem Projekt wo ich über SerialPort eine SamC21 
ansprechen soll, die Übrtragung meiner Daten über UART funktioniert 
auch, nur leider nicht direkt. Bisher hab ich es nur über die Vorgabe 
von Micosoft Probiert, aber selbst da funktioniert es nicht.
Link diesbezüglich:
https://msdn.microsoft.com/de-de/library/system.io...

Ich kann über ein Terminal (Docklight wurd mir empfohlen) befehle 
senden.
Wenn ich über SerialPort alles Probier reagiert der Controller ertmal 
garnicht, sobald ich dann hergehe und über mein Terminal irgendetwas 
sende übernimmt mein Controller die Daten die ich vorher über SerialPort 
versucht habe zu senden.
Weiß jemand welche (vermutlich) Zeichen ich vergesse zu senden das mein 
Controller nicht direkt reagiert?


            _serialPort.Write(
                String.Format("Textübergabe"));

 "Textübergabe" = das was hinterher eingelsesn werden soll.

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
port open?
CR LF versucht?

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> _serialPort.Write(
>                 String.Format("Textübergabe"));

das fehlt der Abschluss, woher soll der Controller wissen das die Zeile 
fertig ist?

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den abschluss der Zeile hab ich mit \r\n gemacht, das ist in der 
Übergabe enthalten
            _serialPort.Write(
                String.Format("COLOR1X={0}\r\n", FloatTo14Bits(a)));

der Port ist offen, das hab ich auch überptüft, dazu müsste wenn der 
Port nicht offen ist meises wissens ein fehler kommen und er könnte 
garnicht übertragen oder?

: Bearbeitet durch User
Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> Den abschluss der Zeile hab ich mit \r\n

die frage ist doch was der Controller erwartet und nicht was du gemacht 
hast.

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Console übergeb ich für den Zeilenabschluss \n daher bin ich 
davon augegangen das ich ein \n als abschluss übernehmen muss

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> In der Console übergeb ich für den Zeilenabschluss \n daher bin ich
> davon augegangen das ich ein \n als abschluss übernehmen muss

und warum machst du dann ein \r\n ?

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit ich alles abgedeckt hab, ich hab bisher alle möglichen 
kobinationen versucht (\r\n \n\r \r \n \n\n \r\r) und \r\n hab ich 
momenten noch drin.

Sorry, hab mich falsch ausgedrückt

: Bearbeitet durch User
Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du denn nicht den Quellcode vom SamC21? Das muss man doch sehen was 
er erwartet.

Autor: ge-nka (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> _serialPort.Write(
>                 String.Format("Textübergabe"));

Serialport Sniffer drauf um anzusehen ob es auch gesendet wird, bei 
Terminal kann man davon ausgehen, dass da alles funktioniert.

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja denn hab ich. Dort wird '\n' erwartet, da das aber nicht funktionirt 
hat hab ich hier nachgrfragt.

: Bearbeitet durch User
Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Serialport Sniffer

Wenn man ganz niedrige Baudraten verwendet (z.B. 300 oder 2400) genügt 
sogar eine simple LED, um zu erkennen ob und wann etwas übertragen wird.

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die bisherige hilfe.
Hab jetzt mal nen Monitorprogram verwendet, dieses sagt die Daten werden 
direkt gesendet, nur leider hab ich immernoch das Problem, das meine 
Daten nicht ausgewertet werden bis ich wieder über das Terminal etwas 
sende.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> nur leider hab ich immernoch das Problem, das meine
> Daten nicht ausgewertet werden bis ich wieder über das Terminal etwas
> sende.

dann liegt wohl der Fehler im SAM

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mich halt wundert ist, dass ich exakt das gleich übergebe und im 
einen Fall reagiert er und im anderen nicht. Ich hab jetzt mal den 
Hex-Code der übertragenwird überprüft und er ist 1 zu 1 der selbe. nur 
im Terminal reagiert er direkt und über SerialPort.Write[Line] reagiert 
er erst wenn ich was neues über das Terminal sende.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> Was mich halt wundert ist, dass ich exakt das gleich übergebe und im
> einen Fall reagiert er und im anderen nicht. Ich hab jetzt mal den
> Hex-Code der übertragenwird überprüft und er ist 1 zu 1 der selbe. nur
> im Terminal reagiert er direkt und über SerialPort.Write[Line] reagiert
> er erst wenn ich was neues über das Terminal sende.

das kann einfach nicht sein - irgendwo gibt es einen unterschied und 
wenn es nur das Timing ist.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du vielleicht die Stop-Bits oder das Paritätsbit anders 
konfiguriert als im Terminal? So dass er noch auf ein weiteres Bit 
wartet, er aber erst beim 2. Aufruf, das letzte fehlende Bit bekommt?

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetz mal ein Bild von meinem Hex-Code gemacht was mir das 
Monitorprogramm angibt, ich seh aber absolut keinen Unterschide.

Das ober ist der Part bei dem es Funktionier.
Der Untere Teil ist der Teil bei dem es nicht Funktioniert.

Parity  ist in beiden Fällen auf None
DataBits auf 8
StopBits One

: Bearbeitet durch User
Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ryan O. schrieb:
> StopBits One

versuche doch mal 2

Autor: Kai (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hi,

Benutzt Du den virtuellen Com Port über EDBG? Also z.B. SamC21 Explained 
?

Dann ließ Dir mal die User Guide durch.

Du musst noch ein serielles Signal (Dtr?) setzen...

Manche Terminalprogramme machen das automatisch...dann läuft es, 
spätestens ein Neustart setzt das Signal aber wieder zurück...evt. auch 
schon ein Schließen des Terminals.

Autor: Ryan O. (Firma: HFu) (gorfindel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider ergibt das das selbe Ergebniss
ja ich benutze virtuellen Com Port über EDBG

Danke, Dtr war das Problem

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.