3つの出力トレイ(ポケット)を備えたスキャナに接続するためのプログラムについては、SDKを使用する必要があります。 SDKへの呼び出しの後、私はポケットの状態を表すintを受け取ります。この「ポケット」状態を判断するために、以下がドキュメントに記載されています。ビット単位の&(および)を使用してこれを実装する方法は?
出力ポケットのステータスを取得します。ポケットがいっぱいであるか空であるかを判断するには、ビット単位のAND(&)演算子を使用して戻り値を確認します。有効な値は次のとおりです。
- Csd.POCKET.P1_EMPTYポケット1が空です。
- Csd.POCKET.P2_EMPTYポケット2は空です。
- Csd.POCKET.P1_FULLポケット1がいっぱいです。
- Csd.POCKET.P2_FULLポケット2がいっぱいです。
- Csd.POCKET.P3_EMPTYポケット3は空です。
- Csd.POCKET.P3_FULLポケット3がいっぱいです。
私はビット演算子を使用していないので、私はかなり迷っています。次のように上記の「ポケット」構造体の 値は次のとおりです。
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;
}
私はビット演算子をよく読んでいると私は、彼らが何をすべきか知っているが、私は、この特定のケースのためにそれを実装する損失でいます。
ありがとうございます。テストビットフラグの
このHTTPを見てみましょう: //stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c – DavidG
例'if(returned_value&POCKET.P2_FULL == POCKET.P2_FULL == POCKET.P2_FULL){...}'はポケット2がいっぱいであるかどうかを確認します –
また、8の列挙値がないことに言及する価値があります。 – DavidG