串行数据解析

时间:2013-03-22 07:48:22

标签: c serial-port

我有一个简单的问题,我似乎无法理解。

我正在为数据记录器创建一个串行解析器,它发送一个串行流。根据产品的文档,我会说明计算,我不明白。

Lateral = Data1 And 0x7F + Data2 / 0x100
If (Data1 And 0x80)=0 Then Lateral = -Lateral

Data10x7f的含义是什么?我知道7F127,但除此之外,我并不理解与And声明的结合。

真正的公式是什么样的?

2 个答案:

答案 0 :(得分:1)

按位与 - 当且仅当在两个输入中设置相应位时,才设置输出中的位。

由于您的代码表明您正在使用C语言,因此您可以使用&amp ;;执行按位AND。操作

(注意,0x7F是01111111,0x80是二进制的10000000,因此与它们的AND运算分别对应于提取低7位并提取字节的高位。)

答案 1 :(得分:0)

第一句话 Lateral = Data1 And(&) 0x7f + Data2/ 0x100

表示取Data1(数据和0x7f)的幅度并将Data2/256

的值加到其上 第二句话 检查符号od Data1并将其分配给Lateral