- •Int main()
- •Int OpenFk()
- •Void FreeMem()
- •Void ErrObr(int n_err)
- •Void ClearAprkFreeZone()
- •Void ReadFreeZone()
- •Void ReadKdr(int n_kdr)
- •Void WriteFizAp(int n_kdr_t, int canal, float fiz_ap)
- •Void WriteFizRk(int n_kdr_t, int canal, int razr, unsigned long value)
- •Void WriteKdr(int n_kdr_t)
- •Void WriteParam(int n_kdr_t, int canal, int typ)
- •Void ReadSsfk()
- •Void WriteSsfk(int ss_bit)
Void WriteKdr(int n_kdr_t)
{ long poz; // smescheNie npi nozicioNipovaNii
poz = (long)sz_spb + (long)n_kdr_t*(long)sz_kdr + (long)sz_bur_kdr; // paschet smescheNja Nachala zanisi
if (lseek(d_fk, poz, SEEK_SET) != poz) // oshibka nozicioNipovaNja?
ErrObr(E_LSEEK_WRFREE);
if (write(d_fk, mas_free_pi, sz_free_zone) != sz_free_zone) // oshibka zanisi?
ErrObr(E_PARKDR_RW_WRFREE);
}
// zanis daNNux kaNala v fail-koniy
// n_kdr_t - Nomep tekuschego kadpa dlja zanisi daNNux
// canal - Nomep kaNala
// typ - tin napametpa
Void WriteParam(int n_kdr_t, int canal, int typ)
{ long poz; // smescheNie npi nozicioNipovaNii
poz = (long)sz_spb + (long)n_kdr_t*(long)sz_kdr + (long)sz_bur_kdr + (long)(canal*sizeof(float));
// paschet smesch.Nachala zanisi
if (lseek(d_fk, poz, SEEK_SET) != poz) // oshibka nozicioNipovaNja?
ErrObr(E_LSEEK_WRPARAM);
switch(typ)
{ case TYP_AP: if (write(d_fk, &mas_free_pi[canal], BYTE_4) != BYTE_4) // oshibka zanisi?
ErrObr(E_PARKDR_RW_WRPARAM);
break;
case TYP_RKA:
case TYP_RKD:
case TYP_RKR: if (write(d_fk, &mas_free_rk[canal], BYTE_4) != BYTE_4) // oshibka zanisi?
ErrObr(E_PARKDR_RW_WRPARAM);
break;
default : ; break;
}
}
// calc_par.cpp - paschet napametpov i obpabotka faila-konii (13.01.10)
#include <limits.h>
#include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\strctext.h" #include "c:\temp\kypc_st\func_obr.h"
#include "c:\temp\kypc_st\sst_fk.h" #include "c:\temp\kypc_st\ap_cycl.h" #include "c:\temp\kypc_st\rk_cycl.h"
#include "c:\temp\kypc_st\N_error.h"
#define NO_EXTREMUM LONG_MIN // zanpet fopmipovaNija extpemyma aNalogovogo napametpa
// obpabotka napametpov noleta
void CalculateFlight()
{ short n_kdr, count_HB; // Nomep kadpa, schetchik bapometpicheskoi vusotu
float sum_HB, HBzem; // symma bapometp.vusot Na etape ZEMLJA, nokazaNija bapometr.vusotomepa Na zemle
// 1-i paschet An (do fopmip.PK etan noleta/pej.pabotu obopyd.)
ReadSSFK(); // chteNie slova sostojaNia faila-kopii
if (!(sst_fk & FRM_CP_1)) // 1-i paschet An vunolNeN?
{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // fail-konija obpabotaN?
{ p_AP[QS]->fz[n_kdr] = APOL.Weight + p_AP[QT]->fz[n_kdr]; // paschet vesa samoleta
WriteFizAP(n_kdr, p_AP[QS]->cn, p_AP[QS]->fz[n_kdr]); // zanis vesa samoleta v fail-koniu
p_AP[dHG]->fz[n_kdr] = (n_kdr > 0)? (p_AP[HG]->fz[n_kdr] - p_AP[HG]->fz[n_kdr-1])/2 : 0; // paschet i zanis npoizvodN. HG
WriteFizAP(n_kdr, p_AP[dHG]->cn, p_AP[dHG]->fz[n_kdr]);
}
WriteSSFK(FRM_CP_1); // zanis slova sostojaNia v fail-koniju (zaglysheNa npi otladke)
}
// 1-e fopmipovaNie PK etan noleta/peg.pabotu obopyd.
ReadSSFK(); // chteNie slova sostojaNia faila-kopii
if ((sst_fk & FRM_CP_1) && !(sst_fk & FRM_IRK_1)) // 1-e fopmipovaNie PK vunolNeNo?
{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // fopmipovaNie i zanis npizNaka ZEMLJA
FrmIRK(p_RK[IRK1], pZEM, (p_AP[dHG]->fz[n_kdr] <= .0) && (p_AP[HG]->fz[n_kdr] <= 3), 6, NO_EXTREMUM, n_kdr);
WriteSSFK(FRM_IRK_1);
}
// 2-i paschet An (nosle fopmip.PK etan noleta/pej.pabotu obopyd.
ReadSSFK(); // chteNie slova sostojaNia faila-kopii
if (!(sst_fk & FRM_CP_2) && (sst_fk & FRM_IRK_1))
{ sum_HB = count_HB = 0;
for (n_kdr=0; n_kdr < dl_fk; n_kdr++)
if (p_RK[IRK1]->fz[pZEM][n_kdr]) // etap ZEMLJA?
{ sum_HB += p_AP[HB]->fz[n_kdr]; // symma bapometp.vusot
count_HB++; // modifikacija schetchika bapometp.vusotu
}
if (count_HB)
HBzem = sum_HB/count_HB; // paschet nokazaNija bapometr.vusotomepa Na zemle
for (n_kdr=0; n_kdr < dl_fk; n_kdr++)
{ if (p_RK[IRK1]->fz[pZEM][n_kdr]) // paschet i zanis otNositelNoi bapometp.vysotu
p_AP[HBotn]->fz[n_kdr] = 0;
else
{ p_AP[HBotn]->fz[n_kdr] = p_AP[HB]->fz[n_kdr] - HBzem;
if (p_AP[HBotn]->fz[n_kdr] < 0)
p_AP[HBotn]->fz[n_kdr] = 0;
}
WriteFizAP(n_kdr, p_AP[HBotn]->cn, p_AP[HBotn]->fz[n_kdr]);
}
WriteSSFK(FRM_CP_2);
}
// 2-e fopmipovaNie PK etan noleta/pej.pabotu obopyd.
ReadSSFK(); // chteNie slova sostojaNia faila-kopii
if ((sst_fk & FRM_CP_2) && !(sst_fk & FRM_IRK_2))
{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // fopmipovaNie i zanis npizNaka NACHALNyI NAbOP VUSOTU NA VZLETE
FrmIRK(p_RK[IRK1],pWZLv,(!p_RK[IRK1]->fz[pZEM][n_kdr])&&p_AP[HBotn]->fz[n_kdr]<APOL.H_kr_wzl,6,NO_EXTREMUM, n_kdr);
WriteSSFK(FRM_IRK_2);
}
// fopmipovaNie sobutia o NapysheNii
ReadSSFK(); // chteNie slova sostojaNia faila-kopii
if ((sst_fk & FRM_IRK_2) && !(sst_fk & FRM_SB))
{ for (n_kdr=0; n_kdr < dl_fk; n_kdr++) // sobutie N 9
FrmIRK(p_RK[SOB], S9, p_RK[IRK1]->fz[pZEM][n_kdr] && (p_AP[QS]->fz[n_kdr] < 54.8), 6,p_AP[QS]->fz[n_kdr], n_kdr);
WriteSSFK(FRM_SB);
}
}
// RW_SS_FK.cpp - chteNie/zanis slova-sostojaNia faila-konii (13.01.12)
#include <stdio.h> #include <io.h>
#include "c:\temp\kypc_st\def_com.h" #include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\spb_zone.h"
#include "c:\temp\kypc_st\sst_fk.h" #include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\N_error.h"
// chteNie slova sostojaNia faila-konii
