- •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)
Int OpenFk()
{ //char name_cop[] = "c:\\temp\\C_rul"; // zadaNie imeNi faila-konii
char name_cop[] = "c:\\temp\\C_wzl";
//char name_cop[] = "c:\\temp\\C_uhf";
//char name_cop[] = "c:\\temp\\C_pos";
int desc_fl; // deskpintop faila
//cout << "Vvedi imja faila-konii <disk:\\katalog\\file>\n";
//cin >> name_cop;
printf("Imja faila-konii %s \n",name_cop);
if ((desc_fl=open(name_cop, O_RDWR | O_BINARY, 0)) == -1) // otkputie faila-konii
ErrObr(E_OPEN_FK);
return(desc_fl);
}
// Memory.cpp - zanpos i osvobojdeNie namjati (13.01.13)
#include <alloc.h>
#include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\strctext.h" #include "c:\temp\kypc_st\func_obr.h"
// osvobojdeNie vudeleNNoi namjati
Void FreeMem()
{ short i, k;
if (mas_bur_pi != (short *)0) // namjat nod byfep kadpa faila-konii vudeleNa?
free(mas_bur_pi); // osvobojdeNie namjati
for (i=0; i < dl_bur_kdr; i++) // kadp nposmotpeN?
{ if (p_AP != (struct AP **)0) // namjat nod massiv yKZT Na stpyktypu An vudeleNa?
if (p_AP[i] != (struct AP *)0) // namjat nod stpyktypy An vudeleNa?
{ if (p_AP[i]->p_id != (char *)0) // namjat nod ideNtifikatop An vudeleNa?
free(p_AP[i]->p_id); // osvobojdeNie namjati
if (p_AP[i]->p_nm != (char *)0) // namjat nod Naimenovanie An vudeleNa?
free(p_AP[i]->p_nm); // osvobojdeNie namjati
if (p_AP[i]->fz != (float *)0) // namjat nod massiv fiziki An vudeleNa?
free(p_AP[i]->fz); // osvobojdeNie namjati
free(p_AP[i]); // osvobojdeNie namjati
}
if (p_RK != (struct RK **)0) // namjat nod massiv yKZT Na stpyktypu PK vudeleNa?
if (p_RK[i] != (struct RK *)0) // namjat nod stpyktypy PK vudeleNa?
{ for (k=0; k < 32; k++) // PK v stpyktype PK nposmotpeNu?
{ if (p_RK[i]->p_id[k] != (char *)0) // namjat nod ideNtifikatop PK vudeleNa?
free(p_RK[i]->p_id[k]); // osvobojdeNie namjati
if (p_RK[i]->p_nm[k] != (char *)0) // namjat nod Naimenovanie PK vudeleNa?
free(p_RK[i]->p_nm[k]); // osvobojdeNie namjati
if (p_RK[i]->fz[k] != (char *)0) // namjat nod massiv fiziki PK vudeleNa?
free(p_RK[i]->fz[k]); // osvobojdeNie namjati
}
free(p_RK[i]); // osvobojdeNie namjati
}
}
if (p_AP != (struct AP **)0) // namjat nod massiv yKZT Na stpyktypu An vudeleNa?
free(p_AP); // osvobojdeNie namjati
if (p_RK != (struct RK **)0) // namjat nod massiv yKZT Na stpyktypu PK vudeleNa?
free(p_RK); // osvobojdeNie namjati
}
// ErrObr.cpp - okoNchaNie pabotu no oshibke (13.01.12)
// n_err - Nomep Oshibki
#include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <io.h>
#include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\N_error.h"
Void ErrObr(int n_err)
{ if (n_err >= E_ATR_FK_BASE && n_err <= E_ATR_POL_BASE)
PrintAtrFK();
if (n_err>=E_ATR_POL_BASE && n_err <= E_ATR_OD_BASE)
PrintAtrFlight();
if (n_err >= E_ATR_OD_BASE && n_err <= E_ATR_CYCL_BASE)
PrintOD();
printf("\nERROR_%d ", n_err);
switch (n_err)
{ case E_OPEN_FK : printf("otkputia faila-kopii (OpenFK)"); break;
case E_OPEN_CYCL : printf("otkputia faila ciklogpammu (ReadCyclogram)"); break;
case E_MEM_BUFKADR : printf("vudeleNia namjati nod byfep kadpa faila-konii (main)"); break;
case E_MEM_MASCODPAR : printf("vudeleNia namjati Na massiv kodov napametpa (PrintParam)"); break;
case E_ATR_FK_POZSPB : printf("pozicioNipovaNija Na Nachalo synepbloka"); break;
case E_ATR_FK_RD_SSFK : printf("chteNija slova sostojaNia"); break;
case E_ATR_FK_SSFK : printf("slova sostojaNia"); break;
case E_ATR_FK_RD_SZKDR : printf("chteNija pazmepa kadra"); break;
case E_ATR_FK_SZKDR : printf("pazmepa kadra"); break;
case E_ATR_FK_RD_DLFK : printf("chteNija dliNu faila-konii"); break;
case E_ATR_FK_DLFK : printf("dliNu faila-konii"); break;
case E_ATR_FK_RD_DLBURKDR : printf("chteNija dliNu kadpa BYP"); break;
case E_ATR_FK_DLBURKDR : printf("dliNu kadpa BYP"); break;
case E_ATR_FK_RD_SZBURKDR : printf("chteNija pazmepa kadpa BYP"); break;
case E_ATR_FK_SZBURKDR : printf("pazmepa kadpa BYP"); break;
case E_ATR_FK_RD_SZFREEZONE : printf("chteNija pazmepa free-zoNu"); break;
case E_ATR_FK_SZFREEZONE : printf("pazmepa free-zoNu"); break;
case E_ATR_FK_POZSZSPB : printf("pozicioNipovaNija Na pazmep synepbloka"); break;
case E_ATR_FK_RD_SZSPB : printf("chteNija pazmepa synepbloka"); break;
case E_ATR_FK_SZSPB : printf("pazmepa synepbloka"); break;
case E_ATR_POL_POZAPOL : printf("pozicioNipovaNija Na atpibytu noleta"); break;
case E_ATR_POL_RD_WEIGHT : printf("chteNija vesa samoleta"); break;
case E_ATR_POL_WEIGHT : printf("vesa samoleta"); break;
case E_ATR_POL_RD_SAX : printf("chteNija SAX"); break;
case E_ATR_POL_SAX : printf("SAX"); break;
case E_ATR_POL_RD_PRESW : printf("chteNija davleNia a/n vzleta"); break;
case E_ATR_POL_PRESW : printf("davleNia a/n vzleta"); break;
case E_ATR_POL_RD_NAMEAP : printf("chteNija NazvaNija a/n vzleta/nosadki"); break;
case E_ATR_POL_RD_UNBBP : printf("chteNija kypsa Vnn"); break;
case E_ATR_POL_UNBBP : printf("kypsa Vnn"); break;
case E_ATR_POL_RD_LBBP : printf("chteNija dliNu Vnn"); break;
case E_ATR_POL_LBBP : printf("dliNu Vnn"); break;
case E_ATR_POL_RD_HKR : printf("chteNija vusotu kpyga"); break;
case E_ATR_POL_HKR : printf("vusotu kpyga"); break;
case E_ATR_POL_RD_HE : printf("chteNija vusotu esheloNa"); break;
case E_ATR_POL_HE : printf("vusotu esheloNa"); break;
case E_ATR_POL_RD_HTVG : printf("chteNija vusotu vhoda v glisady"); break;
case E_ATR_POL_HTVG : printf("vusotu vhoda v glisady"); break;
case E_ATR_POL_RD_LTVG : printf("chteNija passtojaNia do tochki vhoda glissady"); break;
case E_ATR_POL_LTVG : printf("passtojaNia do tochki vhoda glissady"); break;
case E_ATR_POL_RD_HBPRM : printf("chteNija vusotu npoleta BnPM"); break;
case E_ATR_POL_HBPRM : pri ntf("vusotu npoleta BnPM"); break;
case E_ATR_POL_RD_LBPRM : printf("chteNija passtojaNia ot Vnn do BnPM"); break;
case E_ATR_POL_LBPRM : printf("passtojaNia ot Vnn do BnPM"); break;
case E_ATR_POL_RD_HDPRM : printf("chteNija vusotu npoleta DnPM"); break;
case E_ATR_POL_HDPRM : printf("vusotu npoleta DnPM"); break;
case E_ATR_POL_RD_LDPRM : printf("chteNija passtojaNia ot Vnn do BnPM"); break;
case E_ATR_POL_LDPRM : printf("passtojaNia ot Vnn do BnPM"); break;
case E_ATR_POL_RD_HVPR : printf("chteNija vusotu piNjatia pesheNia"); break;
case E_ATR_POL_HVPR : printf("vusotu piNjatia pesheNia"); break;
case E_ATR_OD_POZOD : printf("pozicioNipovaNija Na atpibytu noleta"); break;
case E_ATR_OD_RD_HOUR : printf("chteNija chasov"); break;
case E_ATR_OD_HOUR : printf("chasov"); break;
case E_ATR_OD_RD_MINUTE : printf("chteNija miNut"); break;
case E_ATR_OD_MINUTE : printf("miNut"); break;
case E_ATR_OD_RD_SECOND : printf("chteNija sekuNd"); break;
case E_ATR_OD_SECOND : printf("sekuNd"); break;
case E_ATR_OD_RD_DATE : printf("chteNija datu"); break;
case E_ATR_OD_DATE : printf("datu"); break;
case E_ATR_OD_RD_MONTH : printf("chteNija mesjaca"); break;
case E_ATR_OD_MONTH : printf("mesjaca"); break;
case E_ATR_OD_RD_YEAR : printf("chteNija goda"); break;
case E_ATR_OD_YEAR : printf("goda"); break;
case E_ATR_OD_RD_REIS : printf("chteNija Nomepa peisa"); break;
case E_ATR_OD_REIS : printf("Nomepa peisa"); break;
case E_ATR_OD_RD_BORT : printf("chteNija Nomepa bopta"); break;
case E_ATR_OD_BORT : printf("Nomepa bopta"); break;
case E_ATR_CYCL_ATRFILE : printf("nolycheNia atpibytov faila ciklogpammu"); break;
case E_ATR_CYCL_EMPTYFILE : printf("nystoi fail ciklogpammu"); break;
case E_ATR_CYCL_MEMFILE : printf("vudeleNia namjati nod fail ciklogpammu"); break;
case E_ATR_CYCL_FILETOMEM : printf("chteNia v namjat faila ciklogpammu"); break;
case E_ATR_CYCL_NOLINE : printf("Net strok v faile ciklogpammu"); break;
case E_ATR_CYCL_MEMLINE : printf("vudeleNia namjati nod massiv yKZT Na stpoki ciklogpammu"); break;
case E_ATR_CYCL_MEMMASAn : printf("vudeleNia namjati nod massiv yKZT Na stpyktypu An ciklogpammu"); break;
case E_ATR_CYCL_MEMMASPK : printf("vudeleNia namjati nod massiv yKZT Na stpyktypu PK ciklogpammu");break;
case E_ATR_CYCL_BORT : printf("N bopta onozNavatelNux daNNux i ciklogpammu"); break;
case E_ATR_CYCL_MEMSTPKTAn : printf("vudeleNia namjati Na stpyktypy An faila ciklogpammu"); break;
case E_ATR_CYCL_IDAn : printf("vudeleNia namjati nod ideNtifikatop An faila ciklogpammu"); break;
case E_ATR_CYCL_NAMEAn : printf("vudeleNia namjati nod NaimeNovaNie An faila ciklogpammu"); break;
case E_ATR_CYCL_FIZAn : printf("vudeleNia namjati nod massiv fiziki v stpyktype An"); break;
case E_ATR_CYCL_MEMSTPKTRK : printf("vudeleNia namjati Na stpyktypy PK faila ciklogpammu"); break;
case E_ATR_CYCL_IDRK : printf("vudeleNia namjati nod ideNtifikatop PK faila ciklogpammu"); break;
case E_ATR_CYCL_NAMERK : printf("vudeleNia namjati nod NaimeNovaNie PK faila ciklogpammu"); break;
case E_ATR_CYCL_FIZRK : printf("vudeleNia namjati nod massiv fiziki v stpyktype PK"); break;
case E_PARKDR_RW_NOFIZ : printf("fail-konia v kodax (ReadFreeZone)"); break;
case E_PARKDR_RW_READKDR : printf("chteNia daNNux kadpa faila-konii (ReadKdr)"); break;
case E_PARKDR_RW_WRFIZAP : printf("zanisi fiziki An v free-zony kadpa (WriteFizAP)"); break;
case E_PARKDR_RW_WRFIZRK : printf("zanisi fiziki PK v free-zony kadpa (WriteFizRK)"); break;
case E_PARKDR_RW_WRFREE : printf("zanisi free-zoNu kadpa v file-koniy (WriteKdr)"); break;
case E_PARKDR_RW_WRPARAM : printf("zanis daNNux kaNala v kadp file-koniy (WriteParam)"); break;
case E_ATRFK_RW_RDPOZSPB : printf("pozicioNipovaNija Na Nachalo synepbloka (ReadSSFK)"); break;
case E_ATRFK_RW_RD_RDSSFK : printf("chteNia slova sostojaNia faila-konii (ReadSSFK)"); break;
case E_ATRFK_RW_RDSSFK : printf("slova sostojaNia faila-konii (ReadSSFK)"); break;
case E_ATRFK_RW_WRPOZSPB : printf("pozicioNipovaNija Na Nachalo synepbloka (WriteSSFK)"); break;
case E_ATRFK_RW_RD_WRSSFK : printf("chteNia slova sostojaNia faila-konii (WriteSSFK)"); break;
case E_ATRFK_RW_WR_WRSSFK : printf("zanisi slova sostojaNia faila-konii (WriteSSFK)"); break;
case E_LSEEK_READKDR : printf("nozicioNipovaNija Na kadp faila-konii (ReadKdr)"); break;
case E_LSEEK_WRFIZAP : printf("nozicioNipovaNija Na kaNal kadpa faila-konii (WriteFizAP)"); break;
case E_LSEEK_WRFIZRK : printf("nozicioNipovaNija Na kaNal kadpa faila-konii (WriteFizRK)"); break;
case E_LSEEK_WRFREE : printf ("nozicioNipovaNija Na free-zoNy kadpa faila-konii (WriteKdr)"); break;
case E_LSEEK_WRPARAM : printf("nozicioNipovaNija Na kaNal kadpa faila-konii (WriteParam)"); break;
default : ; break;
}
if (n_err >= E_ATR_FK_BASE && n_err < E_ATR_POL_BASE)
printf(" faila-konii v atpibytax faila-konii (PrintAtrFK)");
if (n_err >= E_ATR_POL_BASE && n_err < E_ATR_OD_BASE)
printf(" v atpibytax noleta (PrintAtrFlight)");
if (n_err >= E_ATR_OD_BASE && n_err < E_ATR_CYCL_BASE)
printf(" v atpibytax onozNavatelNux daNNux (PrintOD)");
if (n_err >= E_ATR_CYCL_BASE && n_err < E_PARKDR_RW_BASE)
printf(" (ReadCyclogram)");
printf("\nNajmi ENTER\n");
getchar();
exit(n_err);
}
// AtrFK.c - atpibytu faila-konii (13.01.13)
#include <stdio.h> #include <io.h> #include <sys/stat.h>
#include "c:\temp\kypc_st\def_com.h" #include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\sst_fk.h"
#include "c:\temp\kypc_st\size_def.h" #include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\spb_zone.h"
#include "c:\temp\kypc_st\N_error.h"
// chteNie atpibytov faila-konii
void ReadAtrFK()
{ int dl_fk_clc; // dliNa faila-konii paschetNaj
struct stat statbuff; // onisaNie stpyktypu stat
if (lseek(d_fk, POZ_SZSPB, SEEK_SET) != POZ_SZSPB) // oshibka pozicioNipovaNija Na pazmep synepbloka?
ErrObr(E_ATR_FK_POZSZSPB);
if (read(d_fk, &sz_spb, BYTE_2) != BYTE_2) // chteNie i npovepka gpaNic pazmepa synepbloka?
ErrObr(E_ATR_FK_RD_SZSPB);
if (sz_spb < MIN_SZ_SPB || sz_spb > MAX_SZ_SPB)
ErrObr(E_ATR_FK_SZSPB);
if (lseek(d_fk, POZ_SPB, SEEK_SET) != POZ_SPB) // oshibka pozicioNipovaNija Na Nachalo synepbloka?
ErrObr(E_ATR_FK_POZSPB);
if (read(d_fk, &sst_fk, BYTE_2) != BYTE_2) // chteNie i npovepka gpaNic atpibutov faila-konii
ErrObr(E_ATR_FK_RD_SSFK);
if (sst_fk < MIN_SS_FK)
ErrObr(E_ATR_FK_SSFK);
if (read(d_fk, &sz_kdr, BYTE_2) != BYTE_2)
ErrObr(E_ATR_FK_RD_SZKDR);
if (sz_kdr < MIN_SZ_KDR || sz_kdr > MAX_SZ_KDR)
ErrObr(E_ATR_FK_SZKDR);
if (read(d_fk, &dl_fk, BYTE_2) != BYTE_2)
ErrObr(E_ATR_FK_RD_DLFK);
fstat(d_fk, &statbuff);
dl_fk_clc = (statbuff.st_size - (long)sz_spb)/sz_kdr;
if ((dl_fk_clc != dl_fk) || (dl_fk<MIN_DL_FK || dl_fk > MAX_DL_FK))
ErrObr(E_ATR_FK_DLFK);
if (read(d_fk, &dl_bur_kdr, BYTE_2) != BYTE_2)
ErrObr(E_ATR_FK_RD_DLBURKDR);
if (dl_bur_kdr < MIN_DL_BUR_KDR || dl_bur_kdr > MAX_DL_BUR_KDR)
ErrObr(E_ATR_FK_DLBURKDR);
if (read(d_fk, &sz_bur_kdr, BYTE_2) != BYTE_2)
ErrObr(E_ATR_FK_RD_SZBURKDR);
if (sz_bur_kdr < MIN_SZ_BUR_KDR || sz_bur_kdr > MAX_SZ_BUR_KDR)
ErrObr(E_ATR_FK_SZBURKDR);
if (read(d_fk, &sz_free_zone, BYTE_2) != BYTE_2)
ErrObr(E_ATR_FK_RD_SZFREEZONE);
if (sz_free_zone < MIN_SZ_FREE_ZONE || sz_free_zone > MAX_SZ_FREE_ZONE)
ErrObr(E_ATR_FK_SZFREEZONE);
}
// nechat atpibytov faila-konii
void PrintAtrFK()
{ printf("\n ATPIBYTU FAILA-KOnII"); printf("\n SostojaNie faila-konii (%o):", sst_fk);
printf("\n atpibytu : konii - %d, ", (sst_fk||AFK_INP)? 1 : 0); printf("OD - %d, ", (sst_fk&OD_INP)? 1 : 0);
printf("poleta - %d", (sst_fk&APOL_INP)? 1 : 0);
printf("\n pestpyktypizacia PK - %d, ", (sst_fk&FRM_BP)? 1 : 0); printf("fizika An - %d", (sst_fk&FIZ_AP)? 1 : 0);
printf("\n fopmipovaNie Pn npoxod: 1 - %d, ", (sst_fk&FRM_CP_1)? 1 : 0);
printf("2 - %d, ", (sst_fk&FRM_CP_2)? 1 : 0); printf("3 - %d", (sst_fk&FRM_CP_3)? 1 : 0);
printf("\n fopmipovaNie IPK npoxod: 1 - %d, ", (sst_fk&FRM_IRK_1)? 1 : 0);
printf("2 - %d, ", (sst_fk&FRM_IRK_2)? 1 : 0); printf("3 - %d", (sst_fk&FRM_IRK_3)? 1 : 0);
printf("\n fopmipovaNie Sb - %d", (sst_fk&FRM_SB)? 1 : 0);
printf("\n Pazmep kadpa (2..400) %5d (byte)", sz_kdr);
printf("\n DliNa faila-konii (1..1000) %5d (kadp)", dl_fk);
printf("\n DliNa kadpa bYP (2..128) %5d (slov)", dl_bur_kdr); printf("\n Pazmep kadpa bYR (2..128) %5d (byte)", sz_bur_kdr);
printf("\n Pazmep FREE-zonu (2..400) %5d (byte)", sz_free_zone);
printf("\n Pazmep synepbloka (1024..4096) %5d (byte)\n", sz_spb);
}
// Atr_Pol.cpp - atpibytu noleta (13.01.12)
#include <stdio.h> #include <io.h> #include <sys/stat.h>
#include "c:\temp\kypc_st\def_com.h" #include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\strctext.h"
#include "c:\temp\kypc_st\APOL_lim.h" #include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\spb_zone.h"
#include "c:\temp\kypc_st\N_error.h"
// chteNie atpibytov noleta iz synepbloka
void ReadAtrFlight()
{ if (lseek(d_fk, POZ_APOL, SEEK_SET) != POZ_APOL) // oshibka pozicioNipovaN.Na atpibytu noleta?
ErrObr(E_ATR_POL_POZAPOL);
if (read(d_fk, &APOL.Weight, BYTE_4) != BYTE_4) // vzletNui ves bez tonliva Na vzlete, t
ErrObr(E_ATR_POL_RD_WEIGHT);
if (APOL.Weight < MIN_VES_VZLET || APOL.Weight > MAX_VES_VZLET)
ErrObr(E_ATR_POL_WEIGHT);
if (read(d_fk, &APOL.CAX, BYTE_4) != BYTE_4) // SAX Na vzlete, %
ErrObr(E_ATR_POL_RD_SAX);
if (APOL.CAX < MIN_SAX_VZLET || APOL.CAX > MAX_SAX_VZLET)
ErrObr(E_ATR_POL_SAX);
if (read(d_fk, &APOL.Pressure, BYTE_2) != BYTE_2) // davleNie, mm.pt.st.
ErrObr(E_ATR_POL_RD_PRESW);
if (APOL.Pressure < MIN_DAVLENIE || APOL.Pressure > MAX_DAVLENIE)
ErrObr(E_ATR_POL_PRESW);
if (read(d_fk, &APOL.name_apwzl, BYTE_16) != BYTE_16) // imja a/n vzleta
ErrObr(E_ATR_POL_RD_NAMEAP);
if (read(d_fk, &APOL.UN_BPP_wzl, BYTE_2) != BYTE_2) // ygol kypsa Vnn vzleta
ErrObr(E_ATR_POL_RD_UNBBP);
if (APOL.UN_BPP_wzl < MIN_UN_Vnn || APOL.UN_BPP_wzl > MAX_UN_Vnn)
ErrObr(E_ATR_POL_UNBBP);
if (read(d_fk, &APOL.L_BPP_wzl, BYTE_2) != BYTE_2) // dliNa Vnn vzleta, m
ErrObr(E_ATR_POL_RD_LBBP);
if (APOL.L_BPP_wzl < MIN_L_Vnn || APOL.L_BPP_wzl > MAX_L_Vnn)
ErrObr(E_ATR_POL_LBBP);
if (read(d_fk, &APOL.H_kr_wzl, BYTE_2) != BYTE_2) // vusota kpyga Na vzlete, m
ErrObr(E_ATR_POL_RD_HKR);
if (APOL.H_kr_wzl < MIN_Hkp || APOL.H_kr_wzl > MAX_Hkp)
ErrObr(E_ATR_POL_HKR);
if (read(d_fk, &APOL.name_appos, BYTE_16) != BYTE_16) // imja a/n nosadki
ErrObr(E_ATR_POL_RD_NAMEAP);
if (read(d_fk, &APOL.UN_BPP_pos, BYTE_2) != BYTE_2) // ygol kypsa Vnn nosadka
ErrObr(E_ATR_POL_RD_UNBBP);
if (APOL.UN_BPP_pos < MIN_UN_Vnn || APOL.UN_BPP_pos > MAX_UN_Vnn)
ErrObr(E_ATR_POL_UNBBP);
if (read(d_fk, &APOL.L_BPP_pos, BYTE_2) != BYTE_2) // dliNa Vnn nosadka, m
ErrObr(E_ATR_POL_RD_LBBP);
if (APOL.L_BPP_pos < MIN_L_Vnn || APOL.L_BPP_pos > MAX_L_Vnn)
ErrObr(E_ATR_POL_LBBP);
if (read(d_fk, &APOL.H_ep_pos, BYTE_2) != BYTE_2) // vusota esheloNa nepexoda Na nosadke, m
ErrObr(E_ATR_POL_RD_HE);
if (APOL.H_ep_pos < MIN_Hep_POS || APOL.H_ep_pos > MAX_Hep_POS)
ErrObr(E_ATR_POL_HE);
if (read(d_fk, &APOL.H_kr_pos, BYTE_2) != BYTE_2) // vusota kpyga Na nosadke, m
ErrObr(E_ATR_POL_RD_HKR);
if (APOL.H_kr_pos < MIN_Hkp || APOL.H_kr_pos > MAX_Hkp)
ErrObr(E_ATR_POL_HKR);
if (read(d_fk, &APOL.H_tvg, BYTE_2) != BYTE_2) // vusota tochki vhoda v glissady, m
ErrObr(E_ATR_POL_RD_HTVG);
if (APOL.H_tvg < MIN_Htvg || APOL.H_tvg > MAX_Htvg)
ErrObr(E_ATR_POL_HTVG);
if (read(d_fk, &APOL.L_tvg, BYTE_2) != BYTE_2) // passtojaNie ot topca Vnn do tochki vhoda v glissady, m
ErrObr(E_ATR_POL_RD_LTVG);
if (APOL.L_tvg < MIN_Ltvg || APOL.L_tvg > MAX_Ltvg)
ErrObr(E_ATR_POL_LTVG);
if (read(d_fk, &APOL.H_dprm, BYTE_2) != BYTE_2) // vusota npoleta DnPM, m
ErrObr(E_ATR_POL_RD_HDPRM);
if (APOL.H_dprm < MIN_Hdprm || APOL.H_dprm > MAX_Hdprm)
ErrObr(E_ATR_POL_HDPRM);
if (read(d_fk, &APOL.L_dprm, BYTE_2) != BYTE_2) // passtojaNie ot topca Vnn do DnPM, m
ErrObr(E_ATR_POL_RD_LDPRM);
if (APOL.L_dprm < MIN_Ldprm || APOL.L_dprm > MAX_Ldprm)
ErrObr(E_ATR_POL_LDPRM);
if (read(d_fk, &APOL.H_bprm, BYTE_2) != BYTE_2) // vusota npoleta bnPM, m
ErrObr(E_ATR_POL_RD_HBPRM);
if (APOL.H_bprm < MIN_Hbprm || APOL.H_bprm > MAX_Hbprm)
ErrObr(E_ATR_POL_HBPRM);
if (read(d_fk, &APOL.L_bprm, BYTE_2) != BYTE_2) // passtojaNie ot topca Vnn do bnPM, m
ErrObr(E_ATR_POL_RD_LBPRM);
if (APOL.L_bprm < MIN_Lbprm || APOL.L_bprm > MAX_Lbprm)
ErrObr(E_ATR_POL_LBPRM);
if (read(d_fk, &APOL.H_vpr, BYTE_2) != BYTE_2) // vusota npiNjatia pesheNia, m
ErrObr(E_ATR_POL_RD_HVPR);
if (APOL.H_vpr < MIN_Hvpr || APOL.H_vpr > MAX_Hvpr)
ErrObr(E_ATR_POL_HVPR);
}
// nechat atpibytov noleta
void PrintAtrFlight()
{ printf("\n ATPIBYTU nOLETA");
printf("\nWZL:%s ", APOL.name_apwzl);
printf("Ves(20-40) %3.1f ", APOL.Weight);
printf("CAX(10-30) %3.1f ", APOL.CAX);
printf("DavleN(700-780) %3d\n", APOL.Pressure);
printf(" UNvnn(0-360) %3d ", APOL.UN_BPP_wzl);
printf("Lvnn(1-4km) %5d ", APOL.L_BPP_wzl);
printf(" Hkr(300-900) %3d\n", APOL.H_kr_wzl);
printf("POS:%s ", APOL.name_appos);
printf(" UNvnn(0-360) %3d ", APOL.UN_BPP_pos);
printf("Lvnn(1-4km) %5d ", APOL.L_BPP_pos);
printf(" Hep(800-1500) %4d\n", APOL.H_ep_pos);
printf(" H_kr(300-900) %4d\n", APOL.H_kr_pos);
printf(" Ltvg(4-12km) %4d ", APOL.L_tvg);
printf("Htvg(300-900) %4d\n ", APOL.H_tvg);
printf(" Ldprm(2-5km) %4d ", APOL.L_dprm);
printf("Hdprm(150-300) %3d\n", APOL.H_dprm);
printf(" Lbprm(.8-1.5km) %4d ", APOL.L_bprm);
printf("Hbprm(50-100) %3d\n", APOL.H_bprm);
printf(" Hvpr(20-100) %5d\n", APOL.H_vpr); getchar();
}
// ATR_OD.cpp - atpibytu onozNavatelNux daNNux (13.01.12)
#include <stdio.h> #include <io.h> #include <sys/stat.h>
#include "c:\temp\kypc_st\def_com.h" #include "c:\temp\kypc_st\var_ext.h" #include "c:\temp\kypc_st\strctext.h"
#include "c:\temp\kypc_st\OD_lim.h" #include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\spb_zone.h"
#include "c:\temp\kypc_st\N_error.h"
// chteNie onozNavatelNux daNNux iz synepbloka
void ReadOD()
{ if (lseek(d_fk, POZ_OD, SEEK_SET) != POZ_OD) // oshibka pozicioNipovaNija Na atpibytu OD?
ErrObr(E_ATR_OD_POZOD);
if (read(d_fk, &OD.Hour, BYTE_2) != BYTE_2) // chasu
ErrObr(E_ATR_OD_RD_HOUR);
if (OD.Hour < MIN_TIME || OD.Hour > MAX_HOUR)
ErrObr(E_ATR_OD_HOUR);
if (read(d_fk, &OD.Minute, BYTE_2) != BYTE_2) // miNytu
ErrObr(E_ATR_OD_RD_MINUTE);
if (OD.Minute < MIN_TIME || OD.Minute > MAX_MIN)
ErrObr(E_ATR_OD_MINUTE);
if (read(d_fk, &OD.Second, BYTE_4) != BYTE_4) // sekyNdu
ErrObr(E_ATR_OD_RD_SECOND);
if (OD.Second < MIN_TIME || OD.Second > MAX_SEC)
ErrObr(E_ATR_OD_SECOND);
if (read(d_fk, &OD.Date, BYTE_2) != BYTE_2) // data
ErrObr(E_ATR_OD_RD_DATE);
if (OD.Date < MIN_DATE || OD.Date > MAX_DATE)
ErrObr(E_ATR_OD_DATE);
if (read(d_fk, &OD.Month, BYTE_2) != BYTE_2) // mesjac
ErrObr(E_ATR_OD_RD_MONTH);
if (OD.Month < MIN_MONTH || OD.Month > MAX_MONTH)
ErrObr(E_ATR_OD_MONTH);
if (read(d_fk, &OD.Year, BYTE_2) != BYTE_2) // god
ErrObr(E_ATR_OD_RD_YEAR);
if (OD.Year < MIN_YEAR || OD.Year > MAX_YEAR)
ErrObr(E_ATR_OD_YEAR);
if (read(d_fk, &OD.Reis, BYTE_2) != BYTE_2) // N peisa
ErrObr(E_ATR_OD_RD_REIS);
if (OD.Reis < MIN_REIS || OD.Reis > MAX_REIS)
ErrObr(E_ATR_OD_REIS);
if (read(d_fk, &OD.Bort, BYTE_4) != BYTE_4) // N bopta
ErrObr(E_ATR_OD_RD_BORT);
if (OD.Bort < MIN_BORT || OD.Bort > MAX_BORT)
ErrObr(E_ATR_OD_BORT);
}
// nechat onozNavatelNux daNNux
void PrintOD()
{ printf("\n OnOZNAVATELNUE DANNUE nOLETA");
printf("\nHour %d ", OD.Hour);
printf(" Min %d ", OD.Minute);
printf(" Sec %f", OD.Second);
printf("\nDate %d ", OD.Date);
printf(" Mes %d ", OD.Month);
printf(" Year %d", OD.Year);
printf("\nReis %d ", OD.Reis);
printf("\nBort %ld\n", OD.Bort);
}
// Cyclogra.cpp - fyNkcii pabotu s cyklogpammoi faila-konii (13.01.10)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #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\typ_par.h" #include "c:\temp\kypc_st\cycl_fld.h" #include "c:\temp\kypc_st\sst_fk.h"
#include "c:\temp\kypc_st\N_error.h"
#define INI_NK_IRK -1
// chteNie i pazbop ciklogpammu napametpov, iNicializacia stpyktyp An i PK
// reg_rab - pejim pabotu
void ReadCyclogram(short reg_rab)
{ char *p_flmem_b, *p_flmem_e, *p_flmem_t, // yKZT file-memory (Nachalo/koNec/tekysch)
*p_txt, *p_txt_t, // Nachalo/tekysch yKZT Na tekst
**p_ln, **p_ln_t, // Nachalo/tekysch yKZT stpoky teksta
*p_fld[10], // massiv yKZT Na nolja stpoki ciklogpammu
str[80]; // stpiNg dlja vpemeNNogo xpaNeNia teksta
char name_CYCL[] = "c:\\temp\\CB_4z"; // imja cyklogpammu (CB_4z)
short kn, tp, fo, rz; // kaNal/tin/chastota/pazpjad
int sz_file, // pazmep faila
n_rd, // pazmep chteNija (bait)
n_ln, // kolichestvo simvolov v stroke faila
n_fld = 0, // kolichestvo nolei v stpoke
i, k, m;
long bort_tmp; // Nomep bopta
FILE *pf_file; // yKZT Na fail
struct stat stat_fl; // stpyktypa dlja fyNkcii stat
size_t sz_tmp;
// cout << "Input name of file-CYCL <disk:\\katalog\\file>\n"; cin >> name_CYCL;
printf("Imja faila ciklogpammu -> %s\n", name_CYCL);
if ((pf_file = fopen(name_CYCL, "r")) == NULL) // symvolN.fail ciklogpammu otkput?
ErrObr(E_OPEN_CYCL);
if (stat(name_CYCL, &stat_fl) < 0) // atpibytu faila ciklogpammu nolycheNu?
ErrObr(E_ATR_CYCL_ATRFILE);
sz_file = stat_fl.st_size; // dliNa faila ciklogpammu
if (!sz_file) // fail ciklogpammu nystoi?
ErrObr(E_ATR_CYCL_EMPTYFILE);
if ((p_flmem_b = (char *)malloc(sz_file)) == (char *)0) // namjat nod fail ciklogpammu vudeleNa?
ErrObr(E_ATR_CYCL_MEMFILE);
p_flmem_e = p_flmem_b + sz_file; // yKZT Na koNec svob.namjati
n_rd = fread(p_flmem_b, sz_file, 1, pf_file); // chteNie v namjat faila ciklogpammu
fclose(pf_file); // zakputie faila ciklogpammu
for (n_ln=0,p_flmem_t=p_flmem_b; p_flmem_t < p_flmem_e; p_flmem_t++) //KoNec namjati s tekstom?
if (*p_flmem_t == '\n') // Simvol "\n"?
n_ln++; // modifikacia Nomepa stpoki
if (!n_ln) // Net stpok v faile ciklogpammu?
ErrObr(E_ATR_CYCL_NOLINE);
if ((p_ln=(char **)malloc(n_ln*sizeof(char **))) == (char **)0) // namjat nod massiv yKZT Na stpoki ciklogpam. vudeleNa?
ErrObr(E_ATR_CYCL_MEMLINE);
p_ln_t = p_ln; // tekyschi yKZT Na Nachalo massiva stpok
for (*p_ln_t=p_txt=p_txt_t=p_flmem_b; p_txt_t < p_flmem_e;p_txt_t++) //koNec tekstovogo byfepa?
if (*p_txt_t == '\n') // koNec stpoki ("\n")?
{ *p_txt_t = '\0'; // zameNa \n Na \0 v stpiNge stpoki
*p_ln_t++ = p_txt; // zanis adpesa v massiv yKZT Na stpoki
p_txt = (*(p_txt_t+1) == '\0') ? (char *) 0 : p_txt_t+1;
}
else
if ((p_txt == (char *) 0) && (*p_txt_t != '\0'))
p_txt = p_txt_t; // iNicializacia Novogo yKZT Na stpoky
if ((p_AP=(struct AP **)calloc(dl_bur_kdr, sizeof(struct AP **))) == (struct AP **)0) // Net namjati nod mas.yKZT An?
ErrObr(E_ATR_CYCL_MEMMASAn);
if ((p_RK=(struct RK **)calloc(dl_bur_kdr, sizeof(struct RK **))) == (struct RK **)0) // Net namjati nod mas.yKZT PK?
ErrObr(E_ATR_CYCL_MEMMASPK);
for (m=0; m < n_ln; m++) // KoNec faila?
{ strcpy(str, p_ln[m]); // Net. KonipovaNie stpoki v stpiNg
if (!(n_fld=GetParmVec(str, p_fld, ':'))) // Net nolei v stpoke faila ciklogpammu?
continue;
if ((m == 0) && (bort_tmp=atol(p_fld[1])) != OD.Bort) // Ne sovnadaet N bopta v file ciklogpammu i OD?
{ printf("\n N bopta ciklogpamma -> %ld != ",bort_tmp);printf("%ld <- OD\n",OD.Bort);
ErrObr(E_ATR_CYCL_BORT);
}
if (m > 0)
{ tp = atoi(p_fld[CFLD_TP]); // tin napametpa
fo = atoi(p_fld[CFLD_FO]); // chastota onposa
if ((tp == TYP_AP) || ((tp == TYP_APR) && (sst_fk >= FIZ_AP))) // An? if ((tp==TYP_AP) || (tp==TYP_APR))
{ kn = atoi(p_fld[CFLD_CN]); // kaNal pegistpacii
if ((p_AP[kn]=(struct AP *)calloc(1, sizeof(struct AP))) == (struct AP *)0) // Net namjaty nod stpyktypy An?
ErrObr(E_ATR_CYCL_MEMSTPKTAn);
sz_tmp = strlen(p_fld[CFLD_ID]) + 1; // dliNa nolja
if ((p_AP[kn]->p_id=(char *)malloc(sz_tmp)) == (char *)0) // Net namjati nod ideNtifikatop An?
ErrObr(E_ATR_CYCL_IDAn);
strncpy(p_AP[kn]->p_id, p_fld[CFLD_ID], sz_tmp); // zanis ideNtifikatopa v stpyktypy
sz_tmp = strlen(p_fld[CFLD_NM]) + 1;
if ((p_AP[kn]->p_nm=(char *)malloc(sz_tmp)) == (char *)0) // Net namjati nod NaimeNovaNie An?
ErrObr(E_ATR_CYCL_NAMEAn);
strncpy(p_AP[kn]->p_nm, p_fld[CFLD_NM], sz_tmp); // zanis NaimeNovaNia v stpyktypy
if ((p_AP[kn]->fz=(float *)malloc(((size_t)dl_fk)*sizeof(float))) == (float *)0) // Net namjati nod massiv fiziki An?
ErrObr(E_ATR_CYCL_FIZAn);
p_AP[kn]->tp = tp; // zaNeseN.tina, kaNala, chastotu onposa v stpykt.
p_AP[kn]->cn = kn;
p_AP[kn]->fo = fo;
}
if ((tp == TYP_RKD) || (tp == TYP_RKA) || ((tp == TYP_RKR) && (sst_fk >= FRM_BP))) // PK?
{ kn = (sst_fk < FRM_BP) ? atoi(p_fld[CFLD_CN]) : atoi(p_fld[CFLD_CNC]); // kaNal
rz = (sst_fk < FRM_BP) ? atoi(p_fld[CFLD_RZ]) : atoi(p_fld[CFLD_RZC]); // pazpjad
if (p_RK[kn] == (struct RK *)0) // STRKT nod PK Ne vudeleNa?
if ((p_RK[kn]=(struct RK *)calloc(1, sizeof(struct RK))) == (struct RK *)0) // Net namjaty nod stpyktypy PK?
ErrObr(E_ATR_CYCL_MEMSTPKTRK);
if (p_RK[kn] != (struct RK *)0)
{ sz_tmp = strlen(p_fld[CFLD_ID]) + 1;
if ((p_RK[kn]->p_id[rz]=(char *)malloc(sz_tmp)) == (char *)0) // Net namjati nod ideNtifikatop PK?
ErrObr(E_ATR_CYCL_IDRK);
strncpy(p_RK[kn]->p_id[rz], p_fld[CFLD_ID], sz_tmp); // zanis ideNtifikatopa PK
sz_tmp = strlen(p_fld[CFLD_NM]) + 1;
if ((p_RK[kn]->p_nm[rz]=(char *)malloc(sz_tmp)) == (char *)0) // Net namjati nod NaimeNovaNie PK?
ErrObr(E_ATR_CYCL_NAMERK);
strncpy(p_RK[kn]->p_nm[rz], p_fld[CFLD_NM], sz_tmp); // zanis NaimeNovaNia PK
if ((p_RK[kn]->fz[rz]=(char *)malloc(((size_t)dl_fk)*sizeof(char))) == (char *)0) //Net namjati nod mas.fiziki PK?
ErrObr(E_ATR_CYCL_FIZRK);
p_RK[kn]->par_max[rz] = (float)(LONG_MIN); // iNicializac.zNacheNi dlja noiska miN/max An
p_RK[kn]->par_min[rz] = (float)(LONG_MAX);
p_RK[kn]->tp = tp; // zaNeseN.tina, kaNala, chastotu onposa, pazpjada v stpykt.
p_RK[kn]->cn = kn;
p_RK[kn]->fo = fo;
p_RK[kn]->rz[rz] = rz;
p_RK[kn]->nkdr_n[rz] = p_RK[kn]->nkdr_k[rz] = INI_NK_IRK; // iNicializac.Nomepa kadpa dlja fopmip.IPK
p_RK[kn]->zdf[rz] = 0; // iNicializacija zadepjki dlja fopmipovaNia IPK
}
}
}
}
free(p_flmem_b); // osvobojdeN.vpemeNNo zanposcheNNoi namjati
free(p_ln);
}
// GetParmV.cpp - pazbivka tekstovoi stpoki Na polja no simvoly pazdelitelju
// *p_str - yKZT Na stpoky;
// *p_mpf[] - yKZT Na Nachalo nolja v stroke
// sym - simvol pazdelitel poley v stroke
#include "c:\temp\kypc_st\func_obr.h"
short GetParmVec(char *p_str, char *p_mpf[], char sym)
{ char *p_str_b, *p_str_e; // yKZT Nachala/koNca stpoki
short n_fld; // kolichestvo noley
p_str_b = p_str;
n_fld = 0;
p_mpf[n_fld] = p_str_b;
while (1)
{ while (*p_str_b == ' ')
*p_str_b++ = 0;
if (*p_str_b != sym)
{ p_mpf[n_fld] = p_str_b;
while ((*p_str_b != sym) && (*p_str_b != '\n') && (*p_str_b != 0))
p_str_b++;
if (p_str_b != p_mpf[n_fld])
{ p_str_e = p_str_b - 1;
while (*p_str_e == ' ')
*p_str_e-- = 0;
}
else
p_mpf[n_fld] = (char *) 0;
}
else
p_mpf[n_fld] = (char *) 0;
if (*p_str_b == sym)
n_fld++;
if ((*p_str_b == '\n') || !(*p_str_b))
{ *p_str_b = 0;
return(n_fld);
}
*p_str_b++ = 0;
}
}
// STRToFLD.cpp - pazbivka tekstovoi stpoki Na nolja no simvoly pazdelitelju (13.01.10)
// *p_str - yKZT Na stpoky
// *p_mpf[] - yKZT Na Nachalo nolja v stpoke
// sym - simvol pazdelitel noley v stpoke
#include "c:\temp\kypc_st\func_obr.h"
short GetParmVec(char *p_str, char *p_mpf[], char sym)
{ char *p_str_b, *p_str_e; // yKZT Nachala/koNca stpoki
short n_fld; // kolichestvo noley
p_str_b = p_str;
n_fld = 0;
p_mpf[n_fld] = p_str_b;
while (1)
{ while (*p_str_b == ' ')
*p_str_b++ = 0;
if (*p_str_b != sym)
{ p_mpf[n_fld] = p_str_b;
while ((*p_str_b!=sym)&&(*p_str_b!='\n')&&(*p_str_b!=0))
p_str_b++;
if (p_str_b != p_mpf[n_fld])
{ p_str_e = p_str_b - 1;
while (*p_str_e == ' ')
*p_str_e-- = 0;
}
else
p_mpf[n_fld] = (char *) 0;
}
else
p_mpf[n_fld] = (char *) 0;
if (*p_str_b == sym)
n_fld++;
if ((*p_str_b == '\n') || !(*p_str_b))
{ *p_str_b = 0;
return(n_fld);
}
*p_str_b++ = 0;
}
}
// ParKdrRW.cpp - chteNie, zanis An, PK i kadov v fail-koniu (13.01.12)
#include <stdio.h> #include <conio.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\strctext.h"
#include "c:\temp\kypc_st\func_obr.h" #include "c:\temp\kypc_st\typ_par.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"
// obNuleNie daNNux kaNala v free-zoNu kadpa
