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

Автор: Пользователь скрыл имя, 09 Марта 2013 в 08:54, дипломная работа

Краткое описание

С целью обеспечения возможности взаимодействия человека с ЭВМ в интерактивном режиме появляется необходимость реализовать в рамках АСУ так называемое АРМ – автоматизированное рабочее место. АРМ представляет собой совокупность программно-аппаратных средств, обеспечивающих взаимодействие человека с ЭВМ, т.е. такие функции как:
возможность ввода информации в ЭВМ;
возможность вывода информации из ЭВМ на экран монитора, принтер или другие устройства вывода (в настоящее время этот перечень достаточно широк – графопостроители, и т.п.).

Оглавление

РЕФЕРАТ 4
ОСНОВНАЯ ЧАСТЬ 5
ВВЕДЕНИЕ 5
1. АНАЛИЗ КОНЦЕПЦИИ ПОСТРОЕНИЯ КОМПЛЕКСА СРЕДСТВ АВТОМАТИЗАЦИИ 8
1.1. Общая характеристика систем управления 8
1.2. Структурная схема комплекса средств автоматизации. 11
1.3. Описание функционирования АСУ комплекса средств автоматизации 13
1.4. Функциональное назначение АРМ РД 14
1.5. Требования, предъявляемые к АРМ РД 15
2. ОБОСНОВАНИЕ ВЫБОРА ТЕХНИЧЕСКИХ СРЕДСТВ АРМ РД 17
2.1. Возможность функционировать в рамках автоматизированной системы 17
2.2. Требования по обеспечению надежности 17
2.3. Требование круглосуточной работы 17
2.4. Работа в реальном масштабе времени 18
2.5. Обеспечение требований ко времени реакции системы 18
2.6. Хранение и обработка данных 18
2.7. Возможность выдачи информации на принтер и экран монитора АРМ РД 19
3. СТРУКТУРА БАЗЫ ДАННЫХ 20
3.1. Алгоритм обработки информации 20
3.2. Обоснование необходимости организации базы данных 34
3.2.1. Понятие базы данных 34
3.2.2. Достоинства интеграции данных. 35
3.2.3. Проблемы интеграции данных 37
3.2.4. Необходимость организации БД на АРМ РД 38
3.3. Логическая организация базы данных 39
3.4. Выбор СУБД 45
4. СТРУКТУРА КОМПЛЕКСА ПРОГРАММ АРМ РД 51
4.1. Обоснование структуры комплекса программ 51
4.1.1. ПО общесистемного назначения 51
4.1.2. ПО специального назначения 53
4.1.3. Требования, предъявляемые к специальному ПО АРМ РД 53
4.2. Программная реализация 54
4.3. Состав программ 59
4.4. Описание программ 61
4.5. Оценка результатов работы программ 63
ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКАЯ ЧАСТЬ 66
ВВЕДЕНИЕ 66
1. ПЛАНИРОВАНИЕ РАЗРАБОТКИ С ИСПОЛЬЗОВАНИЕМ СЕТЕВОГО ГРАФИКА 67
2. РАСЧЕТ СТОИМОСТИ РАЗРАБОТКИ 79
2.1. Расчёт статьи “материалы, покупные изделия, полуфабрикаты” 79
2.2. Расчёт основной заработной платы по теме 80
2.3. Расчет дополнительной заработной платы 81
2.4. Расчёт отчислений на социальные нужды 82
2.5. Расчёт накладных расходов 82
2.6. Расчёт договорной цены 83
3. ЭКОНОМИЧЕСКАЯ ЭФФЕКТИВНОСТЬ РАЗРАБОТКИ 84
4. ОСНОВНЫЕ РАЗДЕЛЫ ХОЗЯЙСТВЕННОГО ДОГОВОРА 84
ЗАКЛЮЧЕНИЕ 86
ОХРАНА ТРУДА И ТЕХНИКА БЕЗОПАСНОСТИ 87
ВВЕДЕНИЕ 87
1. ХАРАКТЕРИСТИКА ПОМЕЩЕНИЯ И ФАКТОРЫ, ДЕЙСТВУЮЩИЕ НА ОПЕРАТОРА В ПРОЦЕССЕ ЕГО ТРУДА 88
2. РАСЧЁТ ОСВЕЩЕНИЯ РАБОЧЕГО МЕСТА ОПЕРАТОРА 89
3. РАСЧЁТ ИНФОРМАЦИОННОЙ НАГРУЗКИ 94
ВЫВОДЫ 95
ГРАЖДАНСКАЯ ОБОРОНА 97
ВВЕДЕНИЕ 97
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 98
1.1. Оценка воздействия ударной волны на объект 98
1.1.1. Характеристики ударной волны 98
1.1.2. Поражающие факторы ударной волны 99
1.2. Оценка пожарной обстановки 101
1.2.1. Влияние степени огнестойкости зданий и сооружений на развитие пожарной обстановки 102
1.2.2. Влияние категорий пожароопасности производства на развитие пожарной обстановки 102
1.2.3. Влияние расстояний между зданиями на распространение пожаров 103
1.2.4. Влияние погодных условий на распространение пожаров 103
1.2.5. Оценка воздействия теплового импульса огненного шара на пожарную обстановку 103
1.2.6. Оценка воздействия вторичных поражающих факторов на пожарную обстановку 105
1.2.7. Воздействие пожара на людей и элементы объекта 105
1.3. Оценка устойчивости элементов объекта 105
2. РАСЧЕТНАЯ ЧАСТЬ 106
2.1. Исходные данные 106
2.2. Расчет 106
2.2.1. Оценка воздействия воздушной ударной волны на элементы объекта 106
2.2.2. Оценка пожарной обстановки 107
3. ПРЕДЛОЖЕНИЯ ПО ЗАЩИТЕ 109
3.1. Отнесение хранилища на безопасное расстояние от здания 109
3.2. Уменьшение массы хранимого пропана 110
3.3. Меры по предупреждению аварийной ситуации на хранилище пропана 111
3.4. Меры по защите административного здания 112
3.5. Меры по индивидуальной защите оператора 112
ЭРГОНОМИКА 113
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 114
1.1. Базовый подход к конструированию рабочего места оператора 114
1.2. Понятие рабочего места и рабочей зоны оператора 115
1.3. Формирование типового состава рабочей зоны 115
1.3.1. Организация пространства рабочего места оператора 116
1.3.2. Условия, которым должна удовлетворять рабочая зона 116
2. РЕАЛИЗАЦИЯ ЭРГОНОМИЧЕСКОЙ ОЦЕНКИ РАБОЧЕГО МЕСТА ОПЕРАТОРА 117
2.1. Основные эргономические требования, предъявляемые к дисплею 118
2.2. Основные эргономические требования, предъявляемые к клавиатуре 120
2.3. Размещение кресла оператора в рабочей зоне 121
2.4. Размещение устройств документирования 121
2.5. Расположение рабочего места оператора в помещении 122
ЗАКЛЮЧЕНИЕ 124
ЗАКЛЮЧЕНИЕ 127
ПРИЛОЖЕНИЕ 1 128
ПРИЛОЖЕНИЕ 2 131
СПИСОК ЛИТЕРАТУРЫ 163

Файлы: 1 файл

arm.DOC

— 984.00 Кб (Скачать)

        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_INQ\interval.c

// interval()

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

 

#include <stdio.h>

#include <stdlib.h>

#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_INQ\recprint()

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

 

#include <stdio.h>

#include <io.h>

#include <string.h>

#include <stdlib.h>

#include <dos.h>

#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]=='\0') string[i]=' ';

strcpy(string+length-2,"\r\n");

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

PXRecBufClose(rech);

free(bytes);

free(string);

 

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

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

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

                                                      //r.h.ah=1;

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

}

 

 

// bs2_inq.prj

//BS2_INQ\search.c

// search()

// поиск

 

#include <stdlib.h>

#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]<max)

   {

   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_INQ\bs3_inq.c

// main()

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

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

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

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

 

#include <stdio.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <io.h>

#include "pxengine.h"

#include <string.h>

 

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,"\r\n",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_INQ\form3.c

// form3()

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

 

#include <io.h>

#include <string.h>

#include "devices.h"

 

#include <dos.h>

 

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<CHDEV;++i);

switch(i)

{

case 0:      // ШЭ-00

 

        if(bytes[5]&0x04)

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

        else

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

        if(bytes[4]&0x02)

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

        break;

 

case 8:      // ШЭ-08

 

        if(bytes[5]&0x04)

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

        else

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

        if(bytes[4]&0x02)

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

        break;

 

case 1:      // ШП-01

case 9:      // ШП-09

 

        if(bytes[5]&0x04)

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

        else

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

        break;

 

case 4:      // ШК-04

case 12:     // ШК-12

        if(bytes[0]&0x01)

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

        else

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

        write(handle,"                                                                          \r\n",76);

        write(handle,"                          ТЕХНИЧЕСКОЕ СОСТОЯНИЕ ШКАФА                     \r\n",76);

        write(handle,"                                                                          \r\n",76);

        if(bytes[5]&0x01)

        write(handle,"                          Шкаф РАБОТОСПОСОБЕН                            \r\n",76);

        if(bytes[5]&0x02)

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

        if(bytes[5]&0x04)

        write(handle,"                          Шкаф ЗАБЛОКИРОВАН по НСД                        \r\n",76);

        if((!(bytes[5]&0x01))&&(!(bytes[5]&0x02))&&(!(bytes[5]&0x04)))

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

        write(handle,"                                                                          \r\n",76);

        if(bytes[4]&0x01)

        write(handle,"НЕИСПРАВЕН 1-й канал АД                                                   \r\n",76);

        if(bytes[4]&0x02)

        write(handle,"НЕИСПРАВЕН 2-й канал АД                                                   \r\n",76);

        if(bytes[4]&0x04)

        write(handle,"НЕИСПРАВЕН 3-й канал АД                                                   \r\n",76);

        if(bytes[3]&0x01)

        write(handle,"НЕИСПРАВЕН 1-й канал УХК                                                  \r\n",76);

        if(bytes[3]&0x02)

        write(handle,"НЕИСПРАВЕН 2-й канал УХК                                                  \r\n",76);

        if(bytes[3]&0x04)

        write(handle,"НЕИСПРАВЕН 3-й канал УХК                                                  \r\n",76);

        if(bytes[2]&0x01)

        write(handle,"НЕИСПРАВНОСТЬ логической части ШК                                         \r\n",76);

        if(bytes[2]&0x02)

       {write(handle,"НЕИСПРАВЕН хотя бы один или несколько элементов ИГП                       \r\n",76);

        write(handle,"Для уточнения считай ячейку ВБШК1.ПФЗ для ШК1 или ВБШК2.ПФЗ для ШК2       \r\n",76);

       }

        if(bytes[2]&0x04)

       {write(handle,"НЕИСПРАВНО УХК - установлена единица в 8-ом разряде уточненого слова      \r\n",76);

        write(handle,"состояния УХК                                                             \r\n",76);

       }

        if(bytes[1]&0x01)

        write(handle,"БОЗУ занято более 3-х секунд                                              \r\n",76);

        if(bytes[1]&0x02)

       {write(handle,"НЕИСПРАВНО УХК (неправильное сочетание 3 и 10 разрядов уточненого слова   \r\n",76);

        write(handle,"состояния УХК)                                                            \r\n",76);

       }

        if(bytes[1]&0x04)

       {write(handle,"УХК ЗАБЛОКИРОВАН по причине работы с носителем 83т015. Получен 9 или 11   \r\n",76);

        write(handle,"разряд в ИСС УХК (см. п.4.7.1. протокола инв.30337)                       \r\n",76);

       }

        if((!(bytes[12]&0x01))&&(!(bytes[12]&0x02)))

        write(handle,"ПУ-1 ИСПРАВЕН                                                             \r\n",76);

        if(bytes[12]&0x01)

        write(handle,"Нажата кнопка ОБНАРУЖЕНА НЕИСПРАВНОСТЬ на ПУ-1                            \r\n",76);

        if(bytes[12]&0x02)

        write(handle,"Неисправно направление связи, соединяющее с ПУ-1                          \r\n",76);

        if((!(bytes[12]&0x04))&&(!(bytes[11]&0x01)))

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