void *指针不能直接赋值给一个具体的数据类型
有以下结构体定义
typedef struct {
int bat; //电池电量百分比,如果设备无法提供,该值为-1。例如50,表示50%
int vol; //电池电压,如果设备无法提供,该值为-1。例如,43表示4.3V
int signal; //摄像头信号强度
char authstate; //设备授权状态 1-已授权 0-未授权
char tamperState; //设备的安装状态 1-被拆 0-安装
short vbat; //电池电压
short temp; //电量计温度
short reset_flag; //电量计复位
unsigned char uxUsbState; //usb状态 0:usb拔出 1:usb插入
unsigned char uxChargeFull; //0-充电不满 1-充电满
char reserve[10]; //保留数据
char hw_ver[12]; //型号信息
char sw_ver[32]; //871版本
char dsp_ver[32];//DSP版本信息
char xMcuVer[16];//MCU版本信息
}DeviceBaseInfo_t;
接收时,通过回调函数传来数据,消息放在了msgdata所指内存空间
int subdev_msgcallback(int msgtype, char *msgdata, int channel, long reserve);
错误的访问方法
DeviceBaseInfo_t *p = (void *)msgdata;
正确的访问方法
DeviceBaseInfo_t *p = (DeviceBaseInfo_t *)msgdata;