Für ein Programm, das ich schreibe, um einen Scanner mit drei Ausgabefächern (Taschen) zu verbinden, muss ich ein SDK verwenden. Nach einem Aufruf an das SDK erhalte ich einen int, der den Status der Taschen darstellt. Um diesen "Taschen" Status zu bestimmen, finden Sie in der Dokumentation folgendes.Wie implementiert man dies mit der bitweisen & (und)?
Status der Ausgabefächer abrufen. Um festzustellen, ob eine Tasche voll oder leer ist, überprüfen Sie den Rückgabewert mit dem bitweisen AND-Operator (&). Gültige Werte sind:
- Csd.POCKET.P1_EMPTY Tasche 1 ist leer.
- Csd.POCKET.P2_EMPTY Tasche 2 ist leer.
- Csd.POCKET.P1_FULL Tasche 1 ist voll.
- Csd.POCKET.P2_FULL Tasche 2 ist voll.
- Csd.POCKET.P3_EMPTY Tasche 3 ist leer.
- Csd.POCKET.P3_FULL Tasche 3 ist voll.
Ich habe nie bitweise Operatoren verwendet, also bin ich ziemlich ratlos. Die Werte der oben genannten „Pocket“ Struktur sind wie folgt:
public struct POCKET
{
public const int P1_EMPTY = 1;
public const int P1_FULL = 16;
public const int P2_EMPTY = 2;
public const int P2_FULL = 32;
public const int P3_EMPTY = 4;
public const int P3_FULL = 64;
}
Ich habe auf Bitoperatoren lesen, und ich weiß, was sie tun, aber ich bin ratlos es für diesen speziellen Fall zu implementieren.
Vielen Dank im Voraus.
Werfen Sie einen Blick auf diese http: //stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c – DavidG
Eg 'if (returned_value & POCKET.P2_FULL == POCKET.P2_FULL) {...}' prüft, ob Tasche 2 voll ist –
Auch mag es erwähnenswert sein, dass Sie einen Enum-Wert für 8 vermissen. – DavidG