Problem mit RS232 in C#

OP #1632967
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:
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 #1633289
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
Persönliche Seite #1633325
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:
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

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