采用TCP/IP上报采集数据,用结构体的形式建立数据缓冲区。在对结构体整体赋初值(比如帧头之类的可以先赋值)时,发现结构体只能在定义时整体赋初值,而不能在初始化语句中赋。
比如我定义的结构体为:
//帧格式结构体
typedef struct
{
uint32_t frame_head; //帧标志
uint16_t frame_len;//帧长
stcSystemTime frame_time;//帧时间
stcFrameParameter frame_parameter;//参数列表
uint8_t frame_head_check;//帧头校验码
uint8_t frame_total_check;//整帧校验码
stcADSData frame_data[CHANEL_NUM][CHANEL_DATA_NUM];//帧数据
}stcDataFrame;
可以这样在定义时赋初值:
stcDataFrame TCPTxBuff[TX_BUFF_SIZE] ={0} ;
当然,也可以写成{0,0,0,....}之类的形式,对结构体中的每个元素分别赋初值。
但是,下面的做法错误,会报错。即使对每个结构体中的元素分别赋值(采用{0,0,0.....}的形式)也是错的。
void Sys_InfoInit( void )
{
//2路数据缓冲初始化
TCPTxBuff[0] = {0};
TCPTxBuff[1] = {0};
return;
}
如果在定义时没有赋初值,初始化还是要老