Hallo...
Programmiersprache: C
Programm: cvi
Folgendes Problem habe ich:
Ich verfüge über ein Benutzerpanel mit diveresen Togglebuttons, welche
mit Callbacks hinterlegt sind.
Ich habe ein Array:
cuPP[1]cM1[4]cM2[4]cHWY1[3]cHWY1[3]cAmp[3]
Nun möchte ich auf meine Benutzerpanel entsprechend den gedrückten
Tasteneinen binären String ausgeben. D. h. ich möchte die aktuellen
Werte aus dem Array auslesen und binär anzeigen. Dieser String sollte
sich immer ändern, wenn Tasten zurückgesetzt oder gedrückt werden....
Kann mir jemand weiterhelfen...?!
Ziel ist es Relais schlaten zu können, verteilt auf zwei Printe.
Nun ist beispielsweise der uP-Print mit vier Relais bestückt.
Dafür habe ich ein Byte vergeben. -> cuPP[1]
Wenn ich nun auf der Benutzeroberfläche ein oder mehrere dieser vier
Relais
mit den Togglebuttons aktiviere, sollte der String (des Befehls) auf dem
Panel ausgegeben werden, binär.
Code habe ich dazu noch keinen. :)
In deiner Fragestellung widerspricht sich zb. die Verwendung der
Begriffe "String" und "binär". Zum einen könnte man sagen, dass in einem
Computer grundsätzlich alles binär ist, auf der anderen Seite wird der
Begriff "String" praktisch ausschliesslich für Bytesequenzen verwendet,
die einen Text ergeben, wenn man eine bestimmte Codierung (zb. ASCII)
zugrundelegt.
Dein Frage ist ziemlich konfus. Wir wissen zwar was du tun willst, aber
es ist nicht wirklich ersichtlich, wobei du nun konkret Schwierigkeiten
hast.
Alles in allem klingt deine Frage (wie auch bei vielen anderen Fragern
hier) wie: Ich hab zwar keine Ahnung von Programmierung, möchte aber ein
Programm schreiben. Und zwar ohne, dass ich erst mal die Grundlagen
lerne.
Ok, danke für deine Erläuterungen.
Grundsätzlich mötchte ich nur wissen, wie ein solcher String
ausgegeben werden kann. Mir fehlt tatsächlich das Wissen bezüglich
Programmierung etc....
hier mein Versuch:
char CheckString()
{
char string [10];
char buffer [100];
char tmp [100];
char b = 0;
sprintf(buffer,"%d", UMM.cuPP[x]);
SetCtrlVal (panelHandle, PANEL_String_Ausgabe, buffer);
return 0;
}
Mit "%d" wird doch bestimmt, dass dezimal ausgegeben wird, welcher
Befehlt ist hier für binär?!
Mein UserInterface besteht aus 32 Togglebuttons. Jeder Button = 1bit,
deshalb habe ich die vier Bit vergeben für cuPP[4].
Vielen Dank....
Joss wrote:
> Mit "%d" wird doch bestimmt, dass dezimal ausgegeben wird, welcher> Befehlt ist hier für binär?!
Es gibt keinen.
Und das ist kein Befehl, sondern eine Formatierangabe im Formatstring
für printf (und nein: printf ist auch kein Befehl. printf ist eine
Funktion)
Joss wrote:
> okey...>> somit kann auf diese Wiese nicht binär angezeigt werden?!
Genau.
Aber da du dich hartnäckig weigerst, mal einen einigermassen
vollständigen Code anzugeben, in dem man auch erkennen kann, welchen
Datentyp deine 'Arrays' haben, kann man dir auch nicht sagen welche der
Funktionen aus der xtoa Familie (so sie auf deinem System verfügbar
sind) dafür geeignet sei
itoa wandelt einen Integer in seine Stringreräsentierung
ltoa wandelt einen Long in seine Stringrepräsentierung
utoa wandetl einen unsigned Integer
ultoa wandelt einen unsigne Long
allen Funktionen gemeinsam ist, dass man als letztes Argument angeben
kann, zu welcher Basis man die Stringrepräsentierung haben will. Und
wenn man da dann 2 angibt .....
Pro byte
void atobin(unsigned char byte)
{
for(char i=0; i<8; i++)
{
printf("%u",(byte>>(7-i))& 0x01);
}
}
Das gibt jeweils ein byte binaer in der form 10110011
aus.
Danke, habe es für hex folgendermassen gemacht.
Mir ist noch nicht ganz klar wie ich deine Angaben nun einfüge?!
char CheckString()
{
char string [10] = {0,0,0,0,0,0,0,0,0,0};
char buffer [100];
char tmp [10];
char i = 0;
strcpy (buffer,"S");
for (i=0; i<1; ++i)
{
sprintf (tmp,"x%02X", UMM.cuPP[i]);
strcat (buffer, tmp);
}
SetCtrlVal (panelHandle, PANEL_String_Ausgabe, byte);
return 0;
}