www.mikrocontroller.net

Forum: PC-Programmierung Problem mit RS232 in C#


Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin, ich versuch grad mit Bascom ne Servostererung zu basteln die über 
RS232 gesteuert wird, bin ziemlich am Anfang.

Über en normales Terminal (z.b. das von Bascom sende ich z.b 150, der 
Servo fährt dann auf den linken Anschlag), Problem is nur ich möchte das 
ganze mit nem C# Programm steuern, erstmal möchte ich nur ne Zahl 
senden, z.B. 150.

Ich hab das ganze mal mit nem Sniffer aufgezeichnet:
Wenn ich mit dem Bascom-Terminal sende kommt das:
115500

Empfangen: 150
so funktionierts auch.

Wenn ichs mit folgendem C# send:
            // Instantiate the communications
            // port with some basic settings 
            SerialPort port = new SerialPort("COM3", 4800, Parity.None, 8, StopBits.One); // Open the port for communications port.Open(); 

            // Open the port
            port.Open();

            port.Write("150");

            //port.Write(new byte[] {0x0A, 0xE2, 0xFF}, 0, 3);


            // Close the port
            port.Close();
seh ich im Sniffer folgendes:
150

wenn ich nochmal sende steht direkt dahinter wieder 150
150150
wenn ich mit nem "normalen" Terminal was send kommt das inner neuen 
Zeile, aber das tut glaub nichts zur Sache.

Hab vorhin mit meim Dad telefoniert, der meinte ich muss bevor ich das 
sende die Zahl in ASCII Zeichen umwandeln.

Hab aber nirgends gefunden wie das geht, find immer nur ASCII in HEX 
umwandeln, weis von euch Jemand wie das geht?

Freu mich jetz schon über Antworten :)

Gruss
David

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann es sein das das neue Zeile doch wichtig ist? Wenn das gerät das als 
OK erst animmt dann teste mal so.

port.Write("150\n");

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ersmal Danke für die Antwort!

Ne da tut sich auch nix und es wird auch keine neue Zeile im Sniffer 
angefangen, ich glaub das es auchnich der Punkt, ich sehe wie mein Dad 
schon sagte das Problem darin dass ich die Zahl in ASCII umwandeln muss, 
sende ich das was das Bascom-Terminal sendet (115500) tut sich am servo 
auch nix.

Weis jmd wo der Fehler steckt?

Gruss
David

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
David S. schrieb:
> ich sehe wie mein Dad
> schon sagte das Problem darin dass ich die Zahl in ASCII umwandeln muss

> port.Write("150");

Jetzt rate mal, was da gesendet wird...

Was Peter schrieb, geht evtl. doch in die richtige Richtung. Teste mal 
das:
Port.NewLine = "\r\n";
Port.WriteLine("150");

Allerdings liegt das Problem hier wohl nicht auf der Seite von C#, 
sondern eher beim Empfänger, der eben auf einen Linefeed oder auf was 
auch immer wartet. Ohne Quellcode -> stochern im Nebel.

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort! Funktioniert, bzw hat funktioniert.
Im Moment geht garnix mehr, wenn der Chip wieder das macht was ich will 
stell ich nacher mal den Bascom Code ein.


Gruss
David

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.