我无法设置一个向量值,该值位于作为void指针给出的向量内的struct内的struct中。有点复杂。
这些是定义:
typedef struct
{
unsigned short int sensor_value[3];
double accelerometer[3];
} Accelerometer_t;
typedef struct
{
unsigned short int sensor_value[3];
double magnetometer[3];
} Magnetometer_t;
typedef struct
{
unsigned short int sensor_value[3];
double gyroscope[3];
} Gyroscope_t;
typedef struct
{
unsigned short int roll;
unsigned short int pitch;
unsigned short int yaw;
} IGRF_diff_t;
typedef struct
{
Magnetometer_t mag;
Gyroscope_t gyr;
Accelerometer_t acc;
IGRF_diff_t state;
} Attitude_t;
我想用文件中的数据设置传感器的值。我正在使用这个:
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].acc.sensor_value[0], &((Attitude_t *)buffer)[i].acc.accelerometer[0]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].acc.sensor_value[1], &((Attitude_t *)buffer)[i].acc.accelerometer[1]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].acc.sensor_value[2], &((Attitude_t *)buffer)[i].acc.accelerometer[2]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].mag.sensor_value[0], &((Attitude_t *)buffer)[i].mag.magnetometer[0]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].mag.sensor_value[1], &((Attitude_t *)buffer)[i].mag.magnetometer[1]);
fscanf(filefd, "%hx %le", &((Attitude_t *)buffer)[i].mag.sensor_value[2], &((Attitude_t *)buffer)[i].mag.magnetometer[2]);
缓冲区是一个空的*正确分配为Attitude_t * 1,在这种情况下(但是1可以变化),我的值为0,并且数据正在被正确读取(使用“正常”变量进行测试)。但是指针,转换,向量和结构的迷宫不起作用。它只设置acc.sensor_value [0],acc.accelerometer [0],mag.sensor_value [0],mag.magnetometer [0],依此类推。其余的是零或奇怪的值(默认情况下我假设值)。
答案 0 :(得分:0)
几乎总是如此,经过数小时的挣扎,当我到达这里并问,我有突然的实现和解决方案。这一次是打印功能(我有一个阅读和打印这个结构的“通用”功能),这是不能正常工作,让我发疯。现在它完美无缺(即使在可怕的版本中)。
感谢您的评论。