【发布时间】:2016-12-14 09:38:48
【问题描述】:
对于我的数据记录器项目,我将数据记录到 SD 卡中。在这里,我以二进制格式存储数据。我正在记录加速度计和温湿度传感器。我可以逐字节读取数据。因此,为了打印 ADXL 数据(两个字节),我将每两个字节数据组合在一起。因此,必须组合四个字节才能获得温度数据。不幸的是,对于温度,我未能打印实际数据。有一些转换问题。我正在寻找有关如何将数据转换为浮点数的帮助。
读取二进制文件并将其打印到 uint16_t(加速度计数据)的代码:工作
while ((nr = fgetc(logFile)) != EOF){
pc.printf(" \r\n %d ",nr);
acc_con[i] = nr;
if (i == 1){
acc = (acc_con[1]<<8) | acc_con[0];
pc.printf(" \r\n %i ",acc);
i = 0;}
else i++;
}
读取和打印二进制到浮点数的代码(温度数据):不工作
while ((nr = fgetc(logFile)) != EOF){
pc.printf(" \r\n %d ",nr);
humicon[i] = nr;
if (i == 3){
hum = (humicon[0] << 24) | (humicon[1] << 16) | (humicon[2] << 8) | humicon[3];
pc.printf(" \r\n %f ",hum);
i = 0;}
else i++;
}
变量nr的逐字节原始数据为:24、58、46、66,变量hum的输出为:406466112.000000。
我可以用 fread 读取湿度或温度(浮动)。不幸的是,使用 fread 我必须知道文件中存储的字节数。 使用下面的代码,我也可以打印浮点数。 int main() {
int nr;
FILE *fp = fopen("/sd/PCE000.bin", "rb");
float read[1];
fread(read,sizeof(float),1,fp);
pc.printf("\r\n %f",read[0]);
fclose(fp);
}
我想知道转换公式,例如 (acc_con[1]
【问题讨论】:
-
这是一个 python 还是 C 的问题?
-
它是 C。按照下面的答案完成。
标签: c++ c microcontroller