我正在进行一个项目,在该项目中提取从全球定位系统接收到的数据,并将其保存在名为rx_data_buffer的数组中:
uint8_t rx_data_buffer[84] = {0};我得到的结果如下(参见rx_data_buffer):在这里输入图像描述
然后,我从rx_data_buffer中提取以下数组中的数据:
uint8_t lattitude[10] = {0};
uint8_t longitude[10] = {0};
uint8_t altitude[5] ={0};数据提取如下:
for (uint8_t i =0; i < 10; i++)
{
lattitude[i] = rx_data_buffer[i+17];
}
for (uint8_t j =0; j < 10; j++)
{
longitude[j] = rx_data_buffer[j+31];
}
for (uint8_t k =0; k < 5; k++)
{
altitude[k] = rx_data_buffer[k+56];
}结果如下:
直到这里,一切都正常,但是当我将纬度、经度和高度数据放在一个数组中时,使用%s将它们保存在SD卡中,如下所示:
snprintf(mystring, sizeof(mystring), "\n%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%d,%s,%s,%s", readAccelerometer(X_AXIS),readAccelerometer(Y_AXIS),readAccelerometer(Z_AXIS),readGyro(X_AXIS), readGyro(Y_AXIS),readGyro(Z_AXIS),readMagnetometer(X_AXIS),readMagnetometer(Y_AXIS), readMagnetometer(Z_AXIS),heart_rate,longitude,lattitude,altitude);我很好地得到了经度和高度值,但从某种意义上说,它显示了两个值的组合,这是错误的纬度值,如下所示:在这里输入图像描述。
有什么问题吗?
发布于 2022-02-17 12:20:55
为了用作字符串,数组需要一个空终止符。由于要将数组初始化为零,最简单的解决方案是使它们比所需的要大。例:
uint8_t lattitude[11] = {0};
uint8_t longitude[11] = {0};
uint8_t altitude[6] ={0};只要不对数组中的最后一个元素进行写入,它将保持为'\0',并且可以使用字符串函数。
https://stackoverflow.com/questions/71157220
复制相似问题