Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программа_текст.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
161 Кб
Скачать
☆

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