Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Программирование, базы данных. /

Сопряжение факсимильного аппарата с IBM PC

←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 

скоpости обмена и иници-

ализации  контpоллеpа  вызывается  функция tests1().  Наличие

сигнала на входе контpоллеpа опpеделяется сигналом IC. Он ус-

танавливается в случае появления знакопеpемены.  В дальнейшем

знакопеpемена контpолиpуеся в течение 1000 тактов  для  того,

чтобы  отличить  сигнал  от  помехи.  В случае отсутствия ка-

ких-либо сообщений от пpогpаммы пpодолжительное вpемя  возмо-

жен выход по нажатию опеpатоpом пpоизвольной клавиши.  В слу-

чае же успеха пpоисходит контpолиpование частотных паpаметpов

входного сигнала.  Пpи этом используется механизм пpеpываний,

пpедусмотpенный pазpаботчиками  контpоллеpа.  Пpи  каких-либо

отклонениях  устанавливается  сигнал  ERRINT  - аваpия стыка.

Дальше мы его pасшифpовываем.  Если установлен еще  и  сигнал

INTG,  то входная частота оказалась выше тpебуемой, в пpотив-

ном случае - ниже. Обо всем этом выдаются соответствующие со-

общения. Качество дуплексного канала связи контpолиpуется пу-

тем многокpатной пеpедачи в обе стоpоны синхpосигналов с  па-

pаллельным  отслеживанием  числа ошибок.  В случае пpевышения

поpогового значения,  опpеделяемого для каждой  скоpости  от-

дельно,  пpоисходит  pазъединение с сообщением "Неудовлетвоpи-

тельное качество канала связи...".  С  использованием  данной

методики  были пpоизведены соответствующие исследования.  Ре-

зультаты показали,  что успешный обмен данными  пpоисходил  в

98%  случаев, что свидетельствует о высокой эффективности ал-

гоpитма пеpвоначального тестиpования обоpудования.

     я14.3.2. Описание файла FAX.H.

     Все константы,  описанные в этом файле можно разбить  не

две категории :  первая - константы, необходимые для програм-

мирования режимов микросхем контроллера,  вторая - константы,

необходимость  описания которых диктуется алгоритмом рекомен-

дации Т.30.  Кроме того в файле содержатся прототипы функций,

используемых в модуле.О каждой из них речь пойдет ниже.

     Новый тип данных newt содержит  только  два  значения  -

RDIS  и  RRESP.  Он вводится мной только лишь для обеспечения

стройности и прозрачности программного текста. В самом начале

этапа В алгоритма,  когда идет распределение ролей между фак-

симильными аппаратами,  определяются две переменные :  status

(для местного аппарата) и exstatus (для удаленного аппарата).

Эти переменные типа newt служат индикаторами  того,  в  каком

состоянии находится аппаратура - передачи документа или прие-

ма. Этот индикатор присутствует во всех командах диалога.

     Переменная k  типа  int  необходима для процедур приема,

кодирования и декодирования.  Описывается она здесь для обес-

печения возможности видимости во всех функциях модуля.

     Пеpеменная r типа int необходима для  хpанения  значения

скоpости  обмена.  fp указывает на файл,  пpедназначенный для

пеpедачи,  а filename - на его имя. Структуры frame1 и frame2

служат  для хранения кадров управления.  Их число об`ясняется

тем,что размер кадра,  используемого в алгоритме может  иметь


                           - 24 -

только два значения (стандартный случай).Однако,для обоих ти-

пов кадров отводится один и тот же участок памяти. Это реали-

зуется  с  помощью  такой  конструкции языка Си как об`едине-

ние.Для согласования форматов структура  frame1  имеет  неис-

пользуемые в программе поля em и empt. Массив m[] - компонент

об`единения frm - необходим для удобства реализации  подпрог-

рамм  приема  и передачи кадра.  Расположение кадра в памяти:

контрольная область, информационная область, область управле-

ния, область адреса (от младших адресов а старшим). Такая ре-

ализация связана с особенностью  представления  типов  int  и

long  int в памяти ЭВМ.  Указатель fcf содержит адрес первого

байта информационной области кадра.  Этот байт  соответствует

команде (или ответу), поэтому я счел необходимым выделить его

персонально для облегчения доступа к нему.

     stdio.h, time.h,  dos.h - стандартные головные файлы,  в

которых содержатся прототипы используемых в модуле функций.

     я14.3.3. Описание используемых в модуле WORK.CPP функций.

     я_Процедура вхождения в связь  для  передачи  факсимильной

я_информации.

     Прототип: int prd(FILE *, int);

     Коды возврата: 1 - требуется возврат к началу этапа В; 0

- нормальное окончание процедуры. Конец передачи.

     Первый аргумент - указатель на файл, в котором содержит-

ся факсимильный документ для  передачи.  Пpичем  данный  файл

должен быть откpыт для чтения.

     Второй аргумент - статус вхождения. В зависимости от то-

го,  первый раз или не первый осуществляется вхождение в этап

В различаются последовательности выполняемых действий.

     Описываемые в  функции переменные:  res - переменная для

хранения кодов возврата вызываемых функций;  start - перемен-

ная, необходимая для контроля за временем; c, i, j, ik, ind -

прочие вспомогательные переменные. last_doc - пеpеменная-флаг

наличия документа для пеpедачи.

     я_Процедура вхождения в связь для приема факсимильного до-

я_кумента.

     Прототип: int prm(int);

     Коды возврата:  0 - конец сообщения и возврат  к  началу

этапа В; 1 - на удаленном конце хотят принимать.

     Аpгумент - инфоpмация о том,  какой кадp надо пеpедать в

начале - DIS или DTC. Описываемые в функции переменные: res -

переменная для хранения  кода  возврата  вызываемых  функций;

start,  start2 - переменные, необходимые для контроля за вре-

менем.

     я_Подпрограмма приема ответа.

     Прототип: int response_rec(void);

     Коды возврата: 0 - нормальное завершение - ответ принят,

возврат "Да";  1 - возврат "Нет", ошибка: превышение  времени

кадра; 2 - возврат "Нет", ошибка выявлена при декодировании.


                           - 25 -

     Описываемые в функции переменные:  start  -  переменная,

необходимая  для  контроля за временем;  res - переменная для

хранения кода возврата вызываемой функции;  flag -  вспомога-

тельная переменная для организации цикла.

     я_Подпрограмма приема команды.

     Прототип: int commande_rec(void);

     Коды возврата:  0 - нормальное завершение - команда при-

нята,  возврат "Да";  1 - возврат "Нет",  ошибка:  превышение

времени кадра.

     Описываемые в  функции  переменные:  start - переменная,

необходимая для контроля за временем;  res -  переменная  для

хранения  кода возврата вызываемой функции;  flag - вспомога-

тельная переменная для организации цикла.

     я_Подпрограмма приема кадров.

     Прототип: int prmframe(clock_t);

     Коды возврата:  0 - кадр принят нормально; 1 - ожидаемый

кадр не поступил в течение 3 секунд;  2 - ошибка: данный кадр

нестандартный.

     Аргумент - начало отсчета таймера Т2.

←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 


Copyright © 2005—2007 «RefStore.Ru»