我无法搞清楚这一点,我可以使用一些帮助。因此,某些硬件的数据表显示“报告的错误代码是每个检测到的错误的OR'd结果。错误代码在表3中给出。”
表3是
0x00 -> No error
0x01 -> Power error
0x02 -> Receiver error
0x03 -> Transmitter error
然后数据表显示了一个例子。
Example :
(ETV001T0C) + checksum -> Test status 0x0C (Rx and Tx error)
0C是错误字节。 所以我的第一个问题是 - 我的数学错了吗?我不知道他们从哪里获得0C。我很确定0x02 | 0x03 = 0x03。第二,即使它是0C,你怎么弄清楚那里有什么错误?
答案 0 :(得分:2)
该表实际上给出了位移位,正如<<
运算符所使用的那样。
1 << 0x00 = 0001b (?) -> No error
1 << 0x01 = 0010b -> Power error
1 << 0x02 = 0100b -> Receiver error
1 << 0x03 = 1000b -> Transmitter error
使用python作为计算器:
>>> (1 << 2) | (1 << 3)
12
>>> hex((1 << 2) | (1 << 3))
'0xc'