c - 串口数据解析

标签 c serial-port

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

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

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

Data10x7f 是什么意思?我知道 7F127,但除此之外我不明白与 And 语句的组合。

真正的公式是什么样的?

最佳答案

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

由于您的标记表明您正在使用 C 语言,因此您可以使用 & 运算符执行按位与。

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

关于c - 串口数据解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15565289/

相关文章:

c - 动态分配数组的新手。为什么我这里有段错误?

c++ - 如何使具有许多全局可重入的旧 C 代码库

c++ - Bison 解析器计算器

c# - 串行 COM 端口超时设置

c - 在 Xamarin 项目中绑定(bind) native C 库

c - Valgrind:未初始化的值

c# - 串行通信不通过 QSerialPort (Qt) 工作,但通过终端 (Termite) 工作

c# - 无法打开端口 Com

c - 在 linux : differences between canonical and non-canonical methods 中写入 C 中的串行端口

javascript - SerialPort 没有方法 'list'