UART übrtragung über SerialPort reagiert erst beim Senden über ein Terminal

OP (Firma: HFu) #5027098
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.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.
OP (Firma: HFu) #5027118
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?
OP (Firma: HFu) #5027211
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.
Gast #5027217
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.
Gast #5027220
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?
OP (Firma: HFu) #5027235
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
Angehängte Dateien:
Gast #5027261
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.

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