【发布时间】:2016-11-17 11:57:14
【问题描述】:
对于我正在编写的用于连接到具有三个输出托盘(口袋)的扫描仪的程序,我需要使用 SDK。在调用 SDK 后,我收到一个表示口袋状态的 int。要确定此“口袋”状态,文档中有以下内容。
获取输出口袋的状态。要确定口袋是满的还是空的,请使用按位与 (&) 运算符检查返回值。有效值为:
- 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 已满。
我从来没有使用过位运算符,所以我很茫然。 上述“Pocket”结构的值如下:
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;
}
我已经阅读了按位运算符,并且知道它们的作用,但是对于这种特定情况,我无法实现它。
提前谢谢大家。
【问题讨论】:
-
例如
if (returned_value & POCKET.P2_FULL == POCKET.P2_FULL) {...}检查口袋 2 是否已满 -
另外值得一提的是,您缺少 8 的枚举值。
-
@DavidG,我也这么想。但是 imo 写的 SDK 不是很好。
-
我认为这是因为曾经有一个 P4(或者他们计划稍后添加它)
标签: c# bitwise-operators bitwise-and