Er will sicher etwas in der Richtung ( siehe unten ) sehen.
Würde ich mir aber nochmal überlegen.
Du kannst dann die Funktion setPicData nur noch für genau das eine
PicData array benutzen, dass Du in SetPicFirstData angibst.
Sollte es später mal eine weiteres Array mit anderen PicData's geben,
dann kannst Du je kein Ptr auf das andere Array mehr übergeben und somit
nicht mit dem anderen Array arbeiten.
Ausserdem könntest Du nocht eine Fehlerbehandlung einbauen, wenn
setPicData aufgerufen wird,SetPicFirstData aber nocht nicht aufgerufen
wurde.
---- pic.c
static PicData *picDataPtr;
void setPicData(Uint16 voltage,Uint16 current,Uint8 activeBattCharger)
{
Uint8 Count =0;
for(; Count < activeBattCharger; Count++)
{
picDataPtr[Count].config = 0x00;
picDataPtr[Count].Usoll_2 = voltage / 100;
picDataPtr[Count].Usoll_1 = (((voltage % 100) *10) /4);
picDataPtr[Count].Isoll_2 = current / 1000;
picDataPtr[Count].Isoll_1 = ((current % 1000) / 4);
picDataPtr[Count].NewData ++;
}
}
void SetPicFirstData(PicData *pPicData)
{
Uint8 Count =0;
picDataPtr = pPicData; // Statischen Datenpointer belegen.
for(; Count < MAX_SLAVE; Count++)
{
picDataPtr [Count].config = 0x00;
picDataPtr [Count].Usoll_1 = 0x00;
picDataPtr [Count].Usoll_2 = 0x00;
picDataPtr [Count].Isoll_1 = 0x00;
picDataPtr [Count].Isoll_2 = 0x00;
picDataPtr [Count].Psoll_1 = 0x08;
picDataPtr [Count].Psoll_2 = 0x07;
picDataPtr [Count].TempKor = 0x00;
picDataPtr [Count].BatTemp = 0x14;
picDataPtr [Count].LSKor = 0x00;
picDataPtr [Count].UsollRed = 0x00;
picDataPtr [Count].NewData = 0x00;
}
}