Problem mit RS232 in C#

OP #1632967
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:
1
115500
2

3
Empfangen: 150
so funktionierts auch.

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

5
            // Open the port
6
            port.Open();
7

8
            port.Write("150");
9

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

12

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

wenn ich nochmal sende steht direkt dahinter wieder 150
1
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
OP
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
Persönliche Seite
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:
1
Port.NewLine = "\r\n";
2
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.