Xreferat.com » Рефераты по информатике и программированию » Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации

Автоматизированное рабочее место регистрации и документирования комплекса средств автоматизации

*text)

{

/* Type; тип устройства

bytes; нерасшифрованные байты состояния

text; буфер для расшифрованных БС */

int i;

for(i=0;strcmp(devices [i].type,Type) && i<20;++i);

switch(i)

{

case 0: // ШЭ-00


if(bytes[5]&0x04) strcpy(text,"НЕИСПРАВЕН");

else strcpy(text,"ИСПРАВЕН");

if(bytes[4]&0x02) strcpy(text+16,"CETЬ1");

break;

case 8: // ШЭ-08


if(bytes[5]&0x04) strcpy(text,"НЕИСПРАВЕН");

else strcpy(text,"ИСПРАВЕН");

if(bytes[4]&0x04) strcpy(text+22,"СЕТЬ2");

break;


case 1: // ШП-01

case 9: // ШП-09


if(bytes[5]&0x04) strcpy(text,"НЕИСПРАВЕН");

else strcpy(text,"ИСПРАВЕН");

break;


case 4: // ШК-04

case 12: // ШК-12


if(bytes[4]&0x04) strcpy(text,"К1");

if(bytes[4]&0x02) strcpy(text+2,"К2");

if(bytes[4]&0x01) strcpy(text+4,"К3");

if(bytes[5]&0x04) strcpy(text+7,"Л1");

if(bytes[5]&0x02) strcpy(text+9,"Л2");

if(bytes[5]&0x01) strcpy(text+11,"Л3");

if(bytes[3]&0x01) strcpy(text+14,"КНОН");

if(bytes[3]&0x02) strcpy(text+19,"ФКДТ");

if(bytes[3]&0x04) strcpy(text+24,"НСПД");

if(bytes[2]&0x01) strcpy(text+29,"ФЗ");

if(bytes[12]&0x04) strcpy(text+32,"П1");

if(bytes[12]&0x02) strcpy(text+34,"П2");

if(bytes[12]&0x01) strcpy(text+36,"П3");

if(bytes[11]&0x04) strcpy(text+40,"ДК1");

if(bytes[11]&0x02) strcpy(text+43,"ДК2");

if(bytes[11]&0x01) strcpy(text+46,"ДК3");

if(bytes[10]&0x04) strcpy(text+51,"БК1");

if(bytes[10]&0x02) strcpy(text+54,"БК2");

if(bytes[10]&0x01) strcpy(text+57,"БК3");

break;


case 3: // В

case 6: // КС1

case 14: // КС2


if(bytes[4]&0x04) strcpy(text,"К1");

if(bytes[4]&0x02) strcpy(text+2,"К2");

if(bytes[4]&0x01) strcpy(text+4,"К3");

if(bytes[5]&0x04) strcpy(text+7,"Л1");

if(bytes[5]&0x02) strcpy(text+9,"Л2");

if(bytes[5]&0x01) strcpy(text+11,"Л3");

if(bytes[3]&0x02) strcpy(text+14,"ФКДТ");

if(bytes[3]&0x04) strcpy(text+19,"НСПД");

if(bytes[2]&0x01) strcpy(text+24,"ФЗ");

break;


case 2: // РМ-02

if(bytes[5]&0x01) strcpy(text+3,"ЕСТЬ");

else strcpy(text+3,"НЕТ");

if(bytes[3]&0x04) strcpy(text+17,"НЕТ");

else strcpy(text+17,"ЕСТЬ");

if(bytes[2]&0x02) strcpy(text+24,"НЕТ");

else strcpy(text+24,"ЕСТЬ");

break;


case 10: // РМ-10

if(bytes[5]&0x01) strcpy(text+3,"ЕСТЬ");

else strcpy(text+3,"НЕТ");

if(bytes[2]&0x01) strcpy(text+17,"НЕТ");

else strcpy(text+17,"ЕСТЬ");

if(bytes[2]&0x04) strcpy(text+24,"НЕТ");

else strcpy(text+24,"ЕСТЬ");

break;


case 5: // РМ05Г

case 13: // РМ13П


if(bytes[5]&0x04) strcpy(text,"Л1");

if(bytes[5]&0x02) strcpy(text+2,"Л2");

if(bytes[5]&0x01) strcpy(text+4,"Л3");

if(bytes[3]&0x01) strcpy(text+7,"КНОН");

if(bytes[3]&0x02) strcpy(text+12,"ФКДТ");

if(bytes[3]&0x04) strcpy(text+17,"НСПД");

if(bytes[2]&0x01) strcpy(text+22,"ФЗ");

break;


case 7: // ВМ


if(bytes[5]&0x02) strcpy(text,"АВАРИЯ ПИТАНИЯ");

if(bytes[5]&0x04) strcpy(text+15,"НЕИСПР КАН");

if(bytes[4]&0x04) strcpy(text+26,"К1");

if(bytes[4]&0x01) strcpy(text+28,"К2");

if(bytes[4]&0x02) strcpy(text+30,"К3");

break;


case 16: // ВУ16

case 17: // ВУ17

case 18: // ВУ18

case 19: // ВУ19


if(bytes[5]&0x04) strcpy(text,"НЕИСПР МАГ ПРИЕМА");

if(bytes[3]&0x01) strcpy(text+18,"КНОН");

break;


case 15: // АС

//Подкорректировать после согласования байта состояния

if(bytes[4]&0x04) strcpy(text,"К1");

if(bytes[4]&0x02) strcpy(text+2,"К2");

if(bytes[4]&0x01) strcpy(text+4,"К3");

if(bytes[5]&0x04) strcpy(text+7,"Л1");

if(bytes[5]&0x02) strcpy(text+9,"Л2");

if(bytes[5]&0x01) strcpy(text+11,"Л3");

if(bytes[3]&0x02) strcpy(text+14,"ФКДТ");

if(bytes[3]&0x04) strcpy(text+19,"НСПД");

if(bytes[2]&0x01) strcpy(text+24,"ФЗ");

break;

}

}


// bs2_inq.prj

//BS2_INQinterval.c

// interval()

// определение граничных номеров интервала поиска


#include

#include

#include "pxengine.h"

#include "def.h"


void interval (long date1,long date2,char *time1,char *time2)

{

RECORDHANDLE rech;


itoa(atoi(time2+6)+1,time2+6,10);


PXRecBufOpen(tblh,&rech);

PXPutDate(rech,1,date2);

PXPutAlpha(rech,2,time2);

if(PXRecInsert(tblh,rech))printf("error");

PXRecNum(tblh,&high);

--high;

PXRecDelete(tblh);


PXPutDate(rech,1,date1);

PXPutAlpha(rech,2,time1);

if(PXRecInsert(tblh,rech))printf("error");

if(PXRecNum(tblh,&low))printf("error");

PXRecDelete(tblh);


PXRecBufClose(rech);

}


// bs2_inq.prj

// recprint.c

// BS2_INQrecprint()

// форматирование и запись в файл найденной строки


#include

#include

#include

#include

#include

#include "pxengine.h"

#include "def.h"

#include "disp.h"


void form2(char *,char *,char *);

// расшифровка байтов состояния


void recprint()

{

long date; // дата в формате БД

int month,day,year; // расшифрованная дата

char *string; // результирующая строка

char *bytes; // нерасшифрованные байты состояния

RECORDHANDLE rech; // дескриптор записи

int a,i;

union REGS r;


string=(char *)calloc(length+1,1);

bytes=(char *)calloc(45,1);

PXRecBufOpen(tblh,&rech);

PXRecGet(tblh,rech);

PXGetDate(rech,1,&date);

PXDateDecode(date,&month,&day,&year);

sprintf(string,"%.02d\%.02d\%.04d ",month,day,year);

PXGetAlpha(rech,2,9,string+11); //t

PXGetAlpha(rech,3,6,string+20); //тип_у

PXGetAlpha(rech,4,2,string+26); //п

PXGetAlpha(rech,5,4,string+28); //вс

PXGetAlpha(rech,6,45,bytes); //бс


form2(string+20,bytes+16,string+31);

for(i=0;i<=length;++i) if(string[i]=='') string[i]=' ';

strcpy(string+length-2,"rn");

_write(handle,string,strlen(string));

PXRecBufClose(rech);

free(bytes);

free(string);


// передача управления диспетчеру

// (только для передачи cимвола на принтер!)

// после каждой найденной записи

//r.h.ah=1;

// int86(DISP,&r,&r);

}


// bs2_inq.prj

//BS2_INQsearch.c

// search()

// поиск


#include

#include "pxengine.h"

#include "def.h"


void search(char *type)

{

int a,i,y[2];

RECORDHANDLE rec[2];

RECORDNUMBER s[2],max=low;


PXRecBufOpen(tblh,&rec[0]);

PXRecBufOpen(tblh,&rec[1]);

PXPutAlpha(rec[0],3,type);

PXPutAlpha(rec[1],5,"БС ");

y[0]=3;y[1]=5;s[1]=s[0]=0;


while(1)

{

for(i=0;i<=1;++i)

{

if(max==1)

{

if (!(a=PXSrchFld(tblh,rec[i],y[i],SEARCHFIRST)))

PXRecNum(tblh,&s[i]);

}

else

if(s[i]

{

PXRecGoto(tblh,max-1);

if(!(a=PXSrchFld(tblh,rec[i],y[i],SEARCHNEXT)))

PXRecNum(tblh,&s[i]);

}

if(a||s[i]>high)

{

PXRecBufClose(rec[0]);

PXRecBufClose(rec[1]);

return;

}

}


if(s[1]==s[0]) { ++max; recprint(); }

else if(s[1]>s[0]) max=s[1];

else max=s[0];

}

}


// bs3_inq.prj

// BS3_INQbs3_inq.c

// main()

// программа обработки запросов для третьей формы байтов состояния

// вызывается из:

// 1) main.prj, mloop2.c, bszapros()

// 2) makeinq.prj, makeinq.c, makeinq()


#include

#include

#include

#include

#include "pxengine.h"

#include


void form3(char *,char *,int);

// расшифровка байтов состояния для третьей формы представления и их запись в файл результатов


/* аргументы функции main :

argv[1] - тип устройства */


void main(int argc,char *argv[])

{

int a;

int i;

int handle; // дескриптор файла результатов поиска

static char bytes[45]; // буфер для нерасшифрованных байтов состояния


RECORDHANDLE rec; // дескриптор записи

TABLEHANDLE tblh; // дескриптор таблицы


// открытие файла результатов изапись в него типа устройства

handle=open("inquiry.res",

O_CREAT | O_TRUNC | O_WRONLY,S_IREAD | S_IWRITE );

write(handle,argv[1],strlen(argv[1]));

//if(strlen(argv[1])==1) write(handle," ",2);

//if(strlen(argv[1])==2) write(handle," ",1);

write(handle,"rn",2);


// поиск и обработка результатов поиска

/* находится последняя по времени запись байтов

состояния для данного устройства */

if(a=PXInit()) printf("n%s",PXErrMsg(a));

if(a=PXTblOpen("fk",&tblh,0,0)) printf("n%s",PXErrMsg(a));

PXRecBufOpen(tblh,&rec);

PXPutAlpha(rec,5,"БС");

PXPutAlpha(rec,3,argv[1]);

if((a=PXSrchFld(tblh,rec,3,SEARCHFIRST))!=PXSUCCESS)

{ if(a==PXERR_RECNOTFOUND)

PXRecBufClose(rec);

if(a=PXTblClose(tblh)) printf("n%s",PXErrMsg(a));

PXExit();

close(handle);

return;

}

else while(!(a=PXSrchFld(tblh,rec,3,SEARCHNEXT)));

PXRecGet(tblh,rec);

PXGetAlpha(rec,6,45,bytes);


form3(argv[1],bytes+16,handle);


PXRecBufClose(rec);

if(a=PXTblClose(tblh)) printf("n%s",PXErrMsg(a));

PXExit();

close(handle);

}


// bs3_inq.prj

// BS3_INQform3.c

// form3()

// расшифровка байтов состояния


#include

#include

#include "devices.h"


#include


void form3(char *Type,char *bytes,int handle)

{


/* Type - тип устройства

bytes - нерасшифрованные байты состояния

handle - дескриптор файла результатов */


int i;

/*

struct date d;

struct time t;

getdate(&d);

gettime(&t);

z.bd1.date[0]=d.da_mon;

z.bd1.date[1]=d.da_day;

z.bd1.date[2]=d.da_year;


PXRecBufOpen(tblh,&rech);

PXRecGet(tblh,rech);

PXGetDate(rech,1,&date);

PXDateDecode(date,&month,&day,&year);

sprintf(string,"%.02d\%.02d\%.04d ",month,day,year);

*/

for(i=0;strcmp(devices[i].type,Type) && i

switch(i)

{

case 0: // ШЭ-00


if(bytes[5]&0x04)

write(handle," Шкаф НЕИСПРАВЕН rn",76);

else

write(handle," Шкаф ИСПРАВЕН rn",76);

if(bytes[4]&0x02)

write(handle,"НЕИСПРАВНОСТЬ первичной сети электропитания СЕТЬ 1 rn",76);

break;


case 8: // ШЭ-08


if(bytes[5]&0x04)

write(handle," Шкаф НЕИСПРАВЕН rn",76);

else

write(handle," Шкаф ИСПРАВЕН rn",76);

if(bytes[4]&0x02)

write(handle,"НЕИСПРАВНОСТЬ первичной сети электропитания СЕТЬ 2 rn",76);

break;


case 1: // ШП-01

case 9: // ШП-09


if(bytes[5]&0x04)

write(handle," Шкаф НЕИСПРАВЕН rn",76);

else

write(handle," Шкаф ИСПРАВЕН rn",76);

break;


case 4: // ШК-04

case 12: // ШК-12

if(bytes[0]&0x01)

write(handle,"ОСНОВНОЙ - шкаф ШК-12 rn",76);

else

write(handle,"ОСНОВНОЙ - шкаф ШК-04 rn",76);

write(handle,"

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту

Похожие рефераты: