www.mikrocontroller.net

Forum: PC-Programmierung C#: Über seriellen Port Hexzahl senden


Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe da ein Problem mit dem SerialPort in C#.

Mit der Anweisung:
SerialPort.Write("Hello");

kann ich problemlos Strings über die serielle Schnittstelle meines 
Computers senden. Nun habe ich jedoch das Problem, dass ich einen 
Hexwert senden will, das Argument der Methode Write() jedoch vom Typ 
String sein sollte (oder char[] / byte[] was mir auch nicht hilft).

Mit
SerialPort.Write("\x03");

kann ich zwar den Hexwert 0x03 senden, aber dieser Kniff funktioniert 
nur für fixe Werte. Wenn ich aber eine Integer (oder Byte) Variable 
senden will funktioniert das nicht mehr. Und eine Konvertierung mit
int Zahl = 5;
string Zeichen = Convert.ToString(Zahl);

liefert mir dann nicht die Hex5 sondern eine ASCII "5".


Wie ist sowas dennoch möglich?

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuchs mal mit einem cast, also z.B. (char)Zahl und dann dieses dem 
String hinzuzufügen.
Kannst natürlich auch mit Byte-Arrays arbeiten und dann diese mit der 
Write-Methode abschicken; würde ich empfehlen.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier übrigens noch was kleines aus der MSDN, wie Du mit Byte-Arrays und 
Strings hantieren kannst:
http://msdn.microsoft.com/en-us/library/system.tex...

Autor: bluppdidupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein dass du sowas suchst:
http://msdn.microsoft.com/en-us/library/system.bit...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solange du ein Byte-Array (byte[]) benutzen kannst, ist 
BitConverter.getBytes() dein Freund.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hexwert senden will, das Argument der Methode Write() jedoch vom Typ
>String sein sollte (oder char[] / byte[] was mir auch nicht hilft).

warum benutzt du nicht einfach Write(Byte[], Int32, Int32) mit einem 
Array mit einem Eintrag?

Keine Konvertierung, kein casten...

Gefunden unter:
http://msdn.microsoft.com/en-us/library/system.io....

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie so (C# ist bei mir schon was her - kann sein, dass die Syntax 
leicht anders ist)
int Zahl = 5;
SerialPort.Write(new Byte[]{(Byte) Zahl}, 0, 1);

Autor: Willivonbienemaya .. (willivonbienemaya)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is doch quatsch das als int anzulegen.

byte[] array = new byte[1];
array[0] = 0x55;
SerialPort.Write(array, 0, 1);

ist jetzt extra mal ausführlich geschrieben.

Autor: Stefan Wachter (arctic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von welchem typ ist denn das objekt SerialPort?

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe hier:
http://msdn.microsoft.com/en-us/library/system.io....

System.IO.Ports.SerialPort

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.