Autor Beitrag
Eggae
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 07.12.11 16:31 
Hallo Miteinander,

ich soll ein Programmierbares Netzteil über ein C# Programm steuern.
Hierzu muss ich einen Befehl (z.B. AA0FA0h) über den COM-Port senden.
Dies funktioniert auch ohne Probleme.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
netzteil.Open();
byte[] test = new byte[3];
test[0] = 0xaa;
test[1] = 0x0f;
test[2] = 0xa0;
netzteil.Write(test,0,1);
netzteil.Close();

FA0 steht für die Ausgangsspannung, auf die sich das Netzteil einstellen soll (hier 40.00V).
Nun möchte ich gerne die Ausgangsspannung in eine TextBox eingeben und mein Programm soll nun den eingegebenen Wert in ein Byte umwandeln und an die Serielle Schnittstelle senden.
Nun ist hier das Problem, dass die ersten 1,5 Bytes fest sind (hier die AA0) und die nächsten 1,5Bytes legen dann die Ausgangsspannung fest.
Ich kann den eingegebenen Wert auch in Hex umrechnen lassen. (aus 4000 in der Textbox wird nun fa0(string))
Jetzt muss ich diesen String zerteilen, da das f ja in das Byte test[1] und das a0 in das Byte test[2] muss. -> auch kein Problem
Nur wie Convertiere ich nun diese Strings in ein Byte um, damit ich diese in dem Byte-Array speichern und über die Serielle Schnittstelle senden kann???
Ich habe google schon 5 Stunden lang durchsucht, jedoch noch keine passende Lösung gefunden.
Ich hoffe ihr könnt mir dabei helfen.

Gruß

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
ujr
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 102
Erhaltene Danke: 12



BeitragVerfasst: Mi 07.12.11 17:47 
user profile iconEggae hat folgendes geschrieben Zum zitierten Posting springen:

Nun ist hier das Problem, dass die ersten 1,5 Bytes fest sind (hier die AA0) und die nächsten 1,5Bytes legen dann die Ausgangsspannung fest.
Ich kann den eingegebenen Wert auch in Hex umrechnen lassen. (aus 4000 in der Textbox wird nun fa0(string))


Wie kommst Du darauf? Vermutung?

Ist es nicht eher so, dass 0xaa ein "Kommando" ist und 0x0fa0 der zugehörige Parameter (0x0fa0 == 0xfa0)?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 07.12.11 17:56 
Zitat:
Nur wie Convertiere ich nun diese Strings in ein Byte um, damit ich diese in dem Byte-Array speichern und über die Serielle Schnittstelle senden kann???


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
Int16 value = Int16.Parse("4000");

byte[] test = new byte[3];
test[0] = 0xaa;
test[1] = (byte)(value >> 8);
test[2] = (byte)(value);


Als Anregung. Im richtigen Code solltest du Parse durch TryParse ersetzen und prüfen das man nur irgendwas zwischen 0 und 4095 eingibt.
12bit Parameter sind tatsächlich merkwürdig.