在使用c语音编写时候出现两个问题
1.将结构体中的数据存入数组中的动作,非常繁琐,有没有简便方法
2.根据ID调用多个方法的动作也非常繁琐,有没有可以简化的功能
ubyte a[26][8]={
{Ad0Demo_stAd_numAnPinCh1Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh1Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh1Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh1Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh1Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh2Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh2Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh2Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh2Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh2Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh3Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh3Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh3Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh3Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh3Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh4Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh4Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh4Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh4Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh4Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh5Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh5Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh5Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh5Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh5Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh6Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh6Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh6Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh6Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh6Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh7Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh7Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh7Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh7Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh7Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh8Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh8Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh8Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh8Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh8Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh11Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh11Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh11Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh11Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh11Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh13Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh13Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh13Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh13Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh13Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh14Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh14Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh14Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh14Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh14Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh15Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh15Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh15Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh15Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh15Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numChrMicAnPinCh18Result.Ad_numAdErr,Ad0Demo_stAd_numChrMicAnPinCh18Result.Ad_numAdPause,Ad0Demo_stAd_numChrMicAnPinCh18Result.Ad_numAdRecovery,Ad0Demo_stAd_numChrMicAnPinCh18Result.Ad_stAdStatus,Ad0Demo_stAd_numChrMicAnPinCh18Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numAnPinCh19Result.Ad_numAdErr,Ad0Demo_stAd_numAnPinCh19Result.Ad_numAdPause,Ad0Demo_stAd_numAnPinCh19Result.Ad_numAdRecovery,Ad0Demo_stAd_numAnPinCh19Result.Ad_stAdStatus,Ad0Demo_stAd_numAnPinCh19Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numT5v2AnPinCh21Result.Ad_numAdErr,Ad0Demo_stAd_numT5v2AnPinCh21Result.Ad_numAdPause,Ad0Demo_stAd_numT5v2AnPinCh21Result.Ad_numAdRecovery,Ad0Demo_stAd_numT5v2AnPinCh21Result.Ad_stAdStatus,Ad0Demo_stAd_numT5v2AnPinCh21Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numT5v1AnPinCh22Result.Ad_numAdErr,Ad0Demo_stAd_numT5v1AnPinCh22Result.Ad_numAdPause,Ad0Demo_stAd_numT5v1AnPinCh22Result.Ad_numAdRecovery,Ad0Demo_stAd_numT5v1AnPinCh22Result.Ad_stAdStatus,Ad0Demo_stAd_numT5v1AnPinCh22Result.Ad_valAd/1000,0,0,0},
{Ad0Demo_stAd_numBatAnPinCh23Result.Ad_numAdErr,Ad0Demo_stAd_numBatAnPinCh23Result.Ad_numAdPause,Ad0Demo_stAd_numBatAnPinCh23Result.Ad_numAdRecovery,Ad0Demo_stAd_numBatAnPinCh23Result.Ad_stAdStatus,Ad0Demo_stAd_numBatAnPinCh23Result.Ad_valAd/1000,0,0,0},
{Dio_valIo_stHiPwrAnPinCh20Result_LO.Dio_stErrIn,Dio_valIo_stHiPwrAnPinCh20Result_LO.Dio_valIn/1000,0,0,0},
{Dio_valIo_stInPinCh0Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh0Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh1Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh1Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh2Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh2Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh4Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh4Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh5Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh5Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh7Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh7Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh8Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh8Result_LO.Dio_valIn/1000,0,0,0,0,0,0},
{Dio_valIo_stInPinCh10Result_LO.Dio_stErrIn,Dio_valIo_stInPinCh10Result_LO.Dio_valIn/1000,0,0,0,0,0,0}
};
switch(Can_stSndMsg.Msg_Id)
{
case 1:Send_CANdata_NodeB_Chann1(&Can_stSndMsg);break;
case 2:Send_CANdata_NodeB_Chann2(&Can_stSndMsg);break;
case 3:Send_CANdata_NodeB_Chann3(&Can_stSndMsg);break;
case 4:Send_CANdata_NodeB_Chann4(&Can_stSndMsg);break;
case 5:Send_CANdata_NodeB_Chann5(&Can_stSndMsg);break;
case 6:Send_CANdata_NodeB_Chann6(&Can_stSndMsg);break;
case 7:Send_CANdata_NodeB_Chann7(&Can_stSndMsg);break;
case 8:Send_CANdata_NodeB_Chann8(&Can_stSndMsg);break;
case 9:Send_CANdata_NodeB_Chann9(&Can_stSndMsg);break;
case 10:Send_CANdata_NodeB_Chann10(&Can_stSndMsg);break;
case 11:Send_CANdata_NodeB_Chann11(&Can_stSndMsg);break;
case 12:Send_CANdata_NodeB_Chann12(&Can_stSndMsg);break;
case 13:Send_CANdata_NodeB_Chann13(&Can_stSndMsg);break;
case 14:Send_CANdata_NodeB_Chann14(&Can_stSndMsg);break;
case 15:Send_CANdata_NodeB_Chann15(&Can_stSndMsg);break;
case 16:Send_CANdata_NodeB_Chann16(&Can_stSndMsg);break;
case 17:Send_CANdata_NodeB_Chann17(&Can_stSndMsg);break;
case 18:Send_CANdata_NodeB_Chann18(&Can_stSndMsg);break;
case 19:Send_CANdata_NodeB_Chann19(&Can_stSndMsg);break;
case 20:Send_CANdata_NodeB_Chann20(&Can_stSndMsg);break;
case 21:Send_CANdata_NodeB_Chann21(&Can_stSndMsg);break;
case 22:Send_CANdata_NodeB_Chann22(&Can_stSndMsg);break;
case 23:Send_CANdata_NodeB_Chann23(&Can_stSndMsg);break;
case 24:Send_CANdata_NodeB_Chann24(&Can_stSndMsg);break;
case 25:Send_CANdata_NodeB_Chann25(&Can_stSndMsg);break;
case 26:Send_CANdata_NodeB_Chann26(&Can_stSndMsg);break;
}
extern void Send_CANdata_NodeB_Chann0(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann1(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann2(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann3(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann4(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann5(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann6(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann7(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann8(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann9(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann10(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann11(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann12(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann13(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann14(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann15(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann16(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann17(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann18(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann19(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann20(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann21(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann22(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann23(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann24(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann25(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann26(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann27(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann28(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann29(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann30(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann31(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann32(Can_sendObjNew *Can_valSendObjNew);
extern void Send_CANdata_NodeB_Chann33(Can_sendObjNew *Can_valSendObjNew);
第一个问题,我曾想到用工厂方法解决,并在尝试中
第二个问题,由于id和channel方法无任何关联,所以我暂时还没有想法