一种用指针简化添加数据的方法
for (u8 id=0; id<P_DEV_NUM;id++)//添加4个间隔YX和YC数据
{
for (u8 sw=0; sw<AP_SW_NUM;sw++)
{
data[id][sw][0] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Fault);
data[id][sw][1] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.SwJuDong);
data[id][sw][2] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Urec);
data[id][sw][3] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.isolation_suc);
data[id][sw][4] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.excision_suc);
data[id][sw][5] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Loopban);
data[id][sw][6] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Protect);
data[id][sw][7] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.branch_exc_suc);
data[id][sw][8] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.pow_fa_end);
data[id][sw][9] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Loop_hz_suc);
data[id][sw][10] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Loop_hz_fail);
data[id][sw][11] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Reserve1);
data[id][sw][12] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Reserve2);
data[id][sw][13] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.load_value);
data[id][sw][14] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.lock_value);
data[id][sw][15] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.revert_value);
data[id][sw][16] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.udid_offside);
data[id][sw][17] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.Reserve3);
for(int datasize = 0 ; datasize < DATASIZE;datasize++)
{
LinkedList_add(dataSetValues, (data[id][sw][datasize]));
}
}
}
优点:清晰。
缺点:冗余。
简化方法—指针
通过指针偏移的方式巧妙解决了冗余问题
//添加18个间隔数据
void AddGooseData(LinkedList dataSetValues)
{
for (u8 id = 0; id < K_UINT_NUM;id++)
{
for (int i = 0; i < 13; i++)
{
g_Goosedata[id][i] = MmsValue_newBoolean(*(((bool*)&goose_info.send[id].node_yx)+i));
}
for (int i = 0; i < 5; i++)
{
g_Goosedata[id][i + 13] = MmsValue_newUnsignedFromUint32(*(((u32*)&goose_info.send[id].node_yc) + i));
}
for(int datasize = 0 ; datasize < INTERVAL_NUM;datasize++)
{
LinkedList_add(dataSetValues, g_Goosedata[id][datasize]);
}
}
}