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.ports.serialport(v=vs.110).aspx 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.
port open? CR LF versucht?
Gast
#5027106
Ryan O. schrieb: > _serialPort.Write( > String.Format("Textübergabe")); das fehlt der Abschluss, woher soll der Controller wissen das die Zeile fertig ist?
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?
Gast
#5027124
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.
In der Console übergeb ich für den Zeilenabschluss \n daher bin ich davon augegangen das ich ein \n als abschluss übernehmen muss
Gast
#5027130
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 ?
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
Gast
#5027134
hast du denn nicht den Quellcode vom SamC21? Das muss man doch sehen was er erwartet.
Gast
#5027145
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.
Ja denn hab ich. Dort wird '\n' erwartet, da das aber nicht funktionirt hat hab ich hier nachgrfragt.
Gast
#5027165
> 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.
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.
Gast
#5027205
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
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.
Gast
#5027217
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.
Gast
#5027220
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?
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
Ryan O. schrieb: > StopBits One versuche doch mal 2
Gast
#5027261
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.
Leider ergibt das das selbe Ergebniss ja ich benutze virtuellen Com Port über EDBG Danke, Dtr war das Problem
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
