Binär SerialPort schreiben
-
Hallo,
ich versuche gerade Binär Daten an den ComPort zu senden.
Hierzu rechne ich die Daten erstmal in Binär um:
long bitWert = long.Parse(textBox2.Text); string bitString; bitString = Convert.ToString(bitWert, 2); // Wert -> BinärString this.textBox2.Text = bitString;
Sende ich diese Daten, kommt logischer weise Ascii an. Könnt ihr mir hier nen Tipp geben?
Gruß
-
Ja das ist ziemlicher Unsinn, eine Bitkette als string zu senden.
Du hast jetzt auch nicht gesagt, welche Daten Du senden möchtest, Binärdaten ist eine Nullaussage.Die Serialportklasse erlaubt Dir direkt das Senden von byte[], char[] und strings. Da Deine Eingabe aus einer Textbox kommt, wäre das Problem damit schon erschlagen. Oder?
Um andere primitive Datentypen zu senden, kannst du
byte[] b = BitConverter.GetBytes(...)
verwenden.Bei komplexen Typen solltest Du mal einen Blick auf das Thema Serialisierung werfen, um eine Klasse in ein byte[] umzuwandeln.
Happy Coding
-
Hallo,
im Grunde will ich Befehle über den ComPort Binär an den uController schicken. Sprich 001 an, 010 aus und sowas in der Art.
-
Ja, is ja schön.
Machst du halt, wo is das Problem?
-
private void button_Click(object sender, EventArgs e) { byte[] b = ... this.serialPort.WriteLine("Daten die ich senden will"); }
Wenn ich z.b. ein Byte senden will 00000001
Wie würde das klappen? Ich komm hier nicht weiter.
-
CreativeLabs hat es dir doch schon geschrieben...
long bitWert = long.Parse(textBox2.Text); byte[] b = BitConverter.GetBytes(bitWert); serialPort.Write(b, 0, b.Length);
Um nur genau 1 Byte zu senden reicht
byte[] b = new byte[] { (byte)0x01 }; // edit: bin mir nicht sicher, ob hier der Cast (byte) hin muss serialPort.Write(b, 0, b.Length);
-
Hallo,
das habe ich versucht.
Hier erhalte ich (erste Version) wenn ich z.b. 25 sende beim Empfänger 8 Byte wobei die ersten 8 Bit die 25 darstellen. Im Grunde will ich aber nur die 25 senden und nicht den ganzen Rest.
Bei der zweiten Version kommt garnix an.
public void Write( byte[] buffer, int offset, int count )
wenn ich den count auf 1 setze, kommt Müll raus. Ich weiß nit so recht weiter?!
Gruß
Chris
-
ok, habs .. danke
-
Kannst du bitte deinen Lösungsweg kurz vorstellen?