Go Down

Topic: C#, Arduino und ein Byte dazwischen (Read 700 times) previous topic - next topic

Metti

Hey ihr,

ich google mir seit Ewigkeiten einen Wolf und komme nicht weiter. Dabei ist das Problem so simpel:

Ich möchte in C# ein Byte an meinen Arduino Uno schicken.

Was mir zuerst im Magen liegt: Ich kann mit serial.Write() wohl nur eine String-Variable verschicken. Oder ich bin zu dumm einen anderen Datentyp in die Klammer einzutragen.

Nehme ich jedenfalls String, sind es ja Buchstaben, die nach ASCII decodiert und als Byte versendet werden. Aus meiner 0 wird also eine 48, aha. Wär mir ja auch recht, dann nennt er im String meine "01000000" halt "@", was solls. Nur blöd, dass ASCII nur 7Bit kann. Ich also nicht mehr, als 127 darstellen kann.

Es kann doch nicht so schwer sein ein blödes Byte zu verschicken und im Arduino zu empfangen, mein Problem scheint so trivial zu sein, dass es denen dies können so wenig auffällt, dass niemand im großen Internet darüber stolpert :-(

Ich hoffe ihr habt die Lösung für mich und mein Problem.

Metti

mkl0815

Evtl. so?
Code: [Select]

byte[] data = new byte[1];
data[0] = 0x42;
serial.Write(data, 0, 1);

Metti

Klasse, das funktioniert, danke!

Kannst du mir vllt auch in Stichworten schreiben, was hier passiert?

mkl0815

Na dann beschreibt der Linux Admin mal auf seinem Mac was bei C# passiert  XD

Also:
Code: [Select]

byte[] data = new byte[1];

Deklariert ein Array mit nur einem Eintrag vom Typ Byte.

Code: [Select]

data[0] = 0x42;

Hier wird in das einzige Feld des Arrays das Byte 0x42 (HEX 42) geschrieben

Code: [Select]

serial.Write(data, 0, 1);

Hier sagen wir dem serial-Objekt das es bitte das Array "data" mit nur einem Byte zur Ausgabe verwenden soll.

Das Ganze ist leider daher so umständlich, weil die Firma Winzig-Weich vergessen hat, die Methode Write() auch für ein einfaches Byte zu definieren :-)


Metti

Super, vielen Dank! Es hätte wohl noch "ein wenig" gedauert, bis ich selbst auf so eine Lösung gekommen wäre :-(

Go Up