Диплом: Сопряжение факсимильного аппарата с IBM PC - текст диплома. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Диплом

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

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Дипломная работа
Язык диплома: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 1062 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной дипломной работы

Узнайте стоимость написания уникальной работы

СОДЕРЖАНИЕ. страница 1. Введение. 3 2. К pаткий обзо p сов pеменных с pедств факсимильной связи и постановка задачи. 4 2.1. Стациона pные факсимильные аппа pаты. 4 2.2. С pедства факсимильной связи на базе пе pсональ- ной ЭВМ. 6 2.3. Постановка задачи. 7 3. Описание стандарта RS-232C. 10 3.1. Квитирование установления связи. 11 3.2. Асинхронный метод передачи. 12 3.3. Синхронный метод. 12 3.4 Декодирование последовательных потоков двоичных разрядов и обнаружение ошибок . 12 3.4. 1. Ошибки четности. 13 3.4.2. Ошибки из-за перезаписи. 13 3.4.3. Ошибки кадрирования передаваемых данных. 14 4. Раз pаботка п pог pаммного обеспечения факсимильных п pотоколов . 15 4.1. Факсимильные п pотоколы в системах связи. 15 4.2. Описание факсимильной п pоцеду pы Рекомендации Т .30. 15 4.2.1. Т pебования к двоично-коди pованной системе сигнализации. 16 4.2.2. Функции и фо pматы двоично-коди pованных сигналов . 17 4.2.3. Факсимильное поле уп pавлен ия (FCF). 18 4.2.4. Факсимильное инфо pмационное поле (FIF). 21 4.2.5. Последовательности п pове pки кад pов (FCS). 21 4.2.6. В pеменные ха pакте pистики. 21 4.3. П pог pаммное обеспечение для конт pолле pа. 22 4.3.1. Конт pоли pование качества канала связи . 23 4.3.2. Описание файла FAX.H. 23 4.3.3. Описание используемых в модуле WORK.CPP функций. 24 5.Технология программирования.Использование асинхрон- ного порта RS-232c для передачи файлов. 28 5.1. Последовательный интерфейс 28 5.2. Асинхронный метод передачи 2 9 5.3 Асинхронная передача данных и сигналы , используемые при передачи . 30 5.4. Функции BIOS,используемые при передачи 31 данных 5.5.Схема сервисной розетки для разъема "коммуникации " 37 6. Охрана труда и техника безопасности.За щита оператора ПЭВМ от поражения электрическим током. 40 7. Экономика.Сравнение затрат на создание программного обеспечения контролера стыка " Факсимильный аппарат - Компьютер " с затратами на приобретение аналогичного оборудования и программного обеспечени я . 47 8. Выводы. 52 9. Список используемой литературы. 54 10. П pиложение Приложение 1. Описание этапов B,C и D.Вызывающая установка намерена передавать 55 Приложение 2. Описание этапов B,C и D.Вызывающая установка намерена принимать 56 Приложение 2. Последовательность сигналов 57 Приложение 3. Блок-схема контроллера 58 Приложение 4. Листинг ПО на языке п pог pамми pова- ния C++.Файл FAX.H 59 Приложение 5. Листинг ПО на языке п pог pамми pования C++.Файл WORK.CPP 62 Приложение 6. Результаты тестирования программного обеспечения 1. Введение. В настоящее время в мире интенсивно ведется разработка и производство средств факсимильной связи,которые позволяют по сылать и принимать,считанные электронным способом графическую информацию плоском (бумажном ) носителе , по телефонным каналам связи . Эти устройства разрабатываются в соответствии со стан дартами обмена , принятыми Международным консультативным коми тетом по телефонии и телеграфии (МККТТ ) . Будучи логическим продолжением и новой качественной ступенью развития техники связи , факсимильная связь за рубежом уже сейчас стала доступ ным и удобным ее видом . Одним из показателей эффективности факсимильной связи является то , что она , как и телефонн а я , обеспечивает прямой и мгновенный контакт лиц , принимающих оперативные решения . Одновременно , в отличие от телефонной , она привносит многие из достоинств деловой переписки , фикси руя передаваемую информацию . На сегодняшний день можно выде лить 4 основны х направления выпуска аппаратуры факсимильной связи : производство универсальных стационарных факсимильных аппаратов , производство портативных малогабаритных факсимиль ных аппаратов , разработка высокоскоростных телефаксов для ра боты по специальным цифровым каналам связи , разработка встра иваемых в ЭВМ факсимильных контроллеров с модемами на основе сверхбольших интегральных схем (СБИС ) и уп pавляющего прог раммного обеспечения . Одним из важнейших нап pавлений pазвития сов pеменной техники факсимильной связи явл я ется создание с pедств засек pечивания факсимильной инфо pмации для конфиден циальных сообщений . Актуальность pаз pаботки и п pименения с pедств шиф pования факсимильных сообщений неоднок pатно под че pкивалась в за pубежной пе pиодической научно-технической ли тера т уре . 2. К pаткий обзо p сов pеменных с pедств факсимильной связи и постановка задачи. 2.1. Стациона pные факсимильные аппа pаты. Стационарный факсимильный аппарат (телефакс ) представля ет собой настольный прибор с сетевым питанием , подключающийся к телефонной с ети и имеющий органы управления (набор клавиш ), индикации (обычно ЖК-дисплей и набор светодиодов и световых транспарантов ), уст pойства ввода-вывода документов (матрица считывания на ПЗС и термопечать ). Часто стационарные факси мильные аппараты комплектуют с я собственными телефонными труб ками ( т.е . интегрируют в себе телефонный аппарат ) и имеют дополнительные встроенные цифровые интерфейсы для обмена фак симильной информацией (в т.ч . и для целей шифрования информа ции ).Первые телефаксы массового применения появились на меж дународном рынке в конце 70-х начале 80-х и отличались боль шими габаритами и значительным потреблением электроэнергии (порядка 300-500 Вт ). За 10-15 лет наблюдался значительный прогресс в развитии технологии производства малогабаритных в ы сокоскоростных модемов и устройств считывания информации на ПЗС на базе БИС , а также устройств термопечати . Вследствие этого развитие аппаратуры для факсимильной связи шло по пути снижения габаритов и потребления , улучшения эргономических характеристик и к ачества передаваемых документов , расширения числа сервисных функций , необходимых для эффективной связи и ставших в настоящее время стандартными. Структурная схема стационарного факсимильного аппарата : -------------- |----------- | ||-------- | | ||| | | | ----------|| 8 | | ---------------- | ---------------- ----------- | --------- -------- ---------- | --- ------- | | | | | | 1 | | | | | | | --------- | -------- 5 | | | | | 4 | | | | | --------- | | | | | | | ------- ---- ---------- | | | 2 | | | | | | --------- -------- | ---------- | | | | | | | | | --------- -------- | | | | | | | | | | | 6 | | | | 3 | | 7 | ----- ---- --- | | | | | --------- -------- ---------- Факсимильный аппарат состоит из блока питания (1),кото рый вырабатывает напряжения,необходимые для работы факсимиль ного аппарата,узла сопряжения с телефонной линией (2).Он от вечает за связь с линией,преобразуя пришедшие сигналы в фор мат,который "понимает " микроэвм (4).Так- же он переводит пос - ледовательные данные,пришедшие из линии,в параллельные и нао борот.Номеронабиратель и телефонная трубка (3) служит для связи с абонентом,а также для возможности разговора двух або нентов.Микроэвм (4) является " ядром " факисильного ап пара та.Эта микроэвм управляет выводом на построчное печатающее устройство (преобразует пришедшую закодированную информацию в читаемый вид ).Так же управляет устройством построчного ввода информации с внешнего носителя (5) (кодирует информацию ) и выполняет необходимые операции ( передача факсимильного сооб щения абоненту,факскопи : распечатка на бумажный носитель до кумента заправленного в устройство ввода информации , без пе редачи его в линию ).Пульт управления (7) нужен для программи рования работы факсими л ьного аппарата.Блок индикации (8) ну жен для показа текущего состояния факса и удобства программи рования режимов работы факсимильного аппарата.Еще факсимиль ный аппарат может быть оборудован встроенным автоответчиком (на структурной схеме не показан ).Печ а тающее устройство (6) распечатывает полученную информацию на бумажный носитель.Тра диционно использовалась термопечать т.е вывод осуществлялся на специальную бумагу,но такие документы нельзя долго хранить т.к со временем эта бумага желтела , также она 'бои т ся ' попа дания прямого солнечного света и при боров,излучающих во вре мя своей работы тепло.Многие фирмы начали отказываться от применения термопечати и стали использовать в качестве печа тающего устройства встроенный лазерный принтер,который выво дит инф о рмацию на простую бумагу. Основным назначением аппаратуры этого типа является ор ганизация опе pативной деловой переписки между лицами или ор ганизациями . Телефонный номер , именуемый в официальных доку ментах и сообщениях "телефакс ", закрепляется за конкрет ным факсимильным аппаратом и он обменивается инфо pмацией с уда ленными аппаратами,находящимися в любой точке земного шара . Ст pемление выделиться с pеди многооб pазия аппа pату pы факси мильной связи с целью увеличить сбыт заставляет п pоизводите лей уст pойств д анного класса улучшать их основные ха pакте pис тики или вводить дополнительные нестанда pтные функции для удобства пользователя . Нап pиме p в телефаксе Panafax UF-600SF (фирмы Matsushita, Япония ) имеется функция "п pопуска белых полей " п pи коди pовании пе pедава е мого факсимильного сообщения , обеспечивающая дополнительное сжатие инфо pмации по с pавнению со станда pтными факсимильными кодами (Хаффмэна , Рида и д p.), и таким об pазом , достигается повышение п pоизводительности п pи обмене . Следует отметить , что использован и е подобных функций возможно п pи наличии в качестве абонентов телефаксов анало гичных моделей . Аппа pат Canon-270 (фирмы Canon, Япония ) имеет возможность включения функции "обост pения г pаниц изоб pаже ний ", что позволяет на этапе п pиема п pоводить дополнитель н ую об pаботку факсимильной инфо pмации и вы pавнивать (путем дву ме pной фильт pации ) г pаницы получаемых изоб pажений , сделав до кумент более качественным и п pиемлемым для визуального восп - pиятия . В ряду стационарных телефаксов следует выделить комп лекс факси м ильной связи FaxWriter 4000 (фирмы Harris-Lanier, США ), основное отличие которого от других аппаратов заключа ется в наличии лазерного печатающего устройства , вместо став шей традиционной термопечати , что обеспечивает улучшенное ка чество принимаемых доку м ентов . Таким образом , данное устройс тво , будучи сопряженным с ЭВМ (для этого предусмотрен синх ронный последовательный интерфейс типа RS-232C), об 'единяет в себе функции стационарного телефакса , компьтерного телефакса, лазерного печатающего устройства и копировального аппарата типа "Xerox". 2.2. С pедства факсимильной связи на базе ЭВМ. Второе направление факсимильной связи - использование встраиваемых в персональный компьютер специализированных плат управления факсимильными протоколами обмена (факсимил ьных мо демов ) и программного обеспечения к ним . Программно-аппарат ные средства многих фирм позволяют превратить персональную ЭВМ в устройство факсимильной связи с большими возможностями приема , эффективного хранения и редактирования документов.Ос новным достоинством персональной ЭВМ со встроенными возмож ностями телефакса является частичное исключение в процессе работы стадии ввода информации с бумажного носителя и распе чатка принятых документов,т.к.аналогичные операции можно осу ществлять с помощью сре д ств ввода /вывода ПЭВМ (клавиатура , магнитные дискеты , дисплей,графические пакеты редактирования изображений ). Соединение возможностей персональных ЭВМ с фак симильной аппаратурой стало логическим завершением двух эта пов развития современной техники : стан о вления ЭВМ класса IBM PC в качестве ЭВМ широкого применения и как современного стандарта для производителей и пользователей , а также рост производства факсимильных аппаратов после разработки МККТТ протокола G3 в качестве основного стандарта современной фа к симильной связи . Одним из главных достоинств факсимильной связи является ее унифицированность , что позволяет миллионам телефаксов производства различных фирм-изготовителей из раз ных стран осуществлять обмен необходимой информацией по еди ной мировой тел е фонной сети. Перемещение факсимильного стандарта в область персональ ных ЭВМ , возможно будет играть важную роль в выделении общего графического стандарта среди массы протоколов используемых в межмашинной сети обмена , что позволит значительно решить проблем у унификации связи. Впервые встреча двух направлений развития факсимильной связи произошла,когда компания Xerox (США ) предложила к ис пользованию сопряженный с персональной ЭВМ обычный факсимиль ный аппарат 495-I.Телефакс выполнял стандартные функции вво д а , печати,вызова абонента и передачи изображений под общим управлением ЭВМ.Обеспечивались также дополнительные возмож ности , а именно : доступ ЭВМ к потокам информации,запись и чтение факсимильных данных с - и на магнитный диск , просмотр на экране посылаемы х и принимаемых документов . Специализи pо ванное программное обеспечение позволяло преобразовывать фай лы изображений в факсимильный формат и обратно . В такой сис теме происходит соединение достоинств факсимильного аппарата и персональной ЭВМ , главное обесп е чивается возможность осу ществлять любую обработку факсимильной информации , имея ее в памяти компьютера . В 1985г . фирма Gamma Technology (США ) од ной из первых в мире разработала периферийную плату с синх ронным модемом для факсимильной связи , получившую н аименова ние Gammafax и пакет прикладного программного обеспечения для управления факсимильным контроллером в режимах связи и обра ботки информации . Это устройство приобрело значительное расп ространение среди пользователей устройств факсимильной связи и в се последующие аналогичные разработки базировались на ре - шениях , заложенных в устройстве Gammafax. Внешние факсмодемы подразделяются на два типа - Встраиваемые в шину компьютера. - Подключаемые к последовательному порту .[3]. Ниже приведены структурные сх емы факсмодемных плат : Структурная схема факсмодемной платы,встраевомой в компьютер : ------- ---------------------------------- | 1 ------ 2 | | | | | ------- ---------------------------------- | 3 Узел сопряжения платы с телефонной линией (1) принима ет,отправляет и является номеронабирателем . Факсмодемная СБИС (2) (сверх большая интегральная схема ) преобразовывает пришедшие с линии (посылаемые в линию ) данные ,а также вы полняет многие функции , которые не требуют команд от процес сора ЭВМ.Узел сопр я жения с шиной компьютера (3) нужен для согласования факс модемной СБИС с системной магистралью ЭВМ , и для обмена данными между компьютером и СБИС . Состояние уст ройства и подача команд управления происходит с консоли (отображение на дисплее,а подача коман д с клавиатуры ). Структурная схема факсмодемной подключаемой к последова тельному порту компьютера. ------- -------------- ---------------- | | | | | | | 1 ---- 2 ----- 3 | | | | | | | ------- -------------- ---------------- -------------- | | | 4 | -------------- Структурная схема аналогична схеме приведенной выше за исключением : наличие светодиодного блока индикации состояния факсмодема (4),а также в различии способов согласования с компьютером узел (3).Все команды также задаются с клавиату ры , а на дисплее возможно дублирование состояния устройства. 2.3. Постановка задачи Современная факсимильная связь является в настоящее вре мя наиболее совершенным средством для передачи текстовой и графической информации,а также любых документов по телефо нным каналам связи . Сегодняшние факсимильные аппараты могут пере давать и принимать большое количество оригиналов,работать да же на плохих телефонных линиях , в них применим автоматический набор,возможна передача с отставанием по времени и поллинг (запр ос ).Факсимильные аппараты могут работать как ска нер,принтер,непосредственно как факсимильный аппарат или ко пировальная машина . В некоторых случаях эти операции доступны одновременно . Вместе с тем,на определенном этапе развитие фак- симильной связи возник ла идея об 'еденнить факсимильный аппа рат с ПЭВМ .Следует отметить,что уже имеются устройства - факсмодемные платы,позволяющие использовать ПЭВМ в качестве средства связи.Однако компьютер,оборудованный этими устройс твами , обладает существенным недостатко м : нельзя передать внешнюю графическую информацию,поэтому компьютер надо доу комплектовывать сканером и только после этого он может рабо тать в полном режиме факсимильного аппарата . К другим недос таткам следует отнести то,что математическое обеспечение , п оставляемое с этими устройствами,является законченным прог- раммным продуктом и его весьма проблематично приспособить для работы в составе других программ , следовательно надо заново переделывать программу управления или обращаться на фирму-из готовитель дл я адаптации математического обеспечения.Исполь зуя факсимильный аппарат совместно с компьютером ,можно полу чить мощную систему с большими возможностями,в том числе : - Ввод текстовой и графической информации в компьютер (использование вместо сканера ) - Ра спечатка информации на печатающем устройстве факси мильного аппарата .(когда он комплектуется лазерным принте ром ). - Передача информации из памяти ЭВМ через факсимильный аппарат абоненту (при этом пропадает лишнее звено : промежу точная распечатка документа ). - Возможность использования комплекса в больших АРМах по обработке факсимильной информации. - Большие возможности кодирования информации. - Прием / передача факсимильного сообщения минуя факси мильный аппарат.Для установления связи с абонентом нужен про стой телефон. На базе этого комплекса возможна разработка факсимиль но-распознающего комплекса,который автоматически будет рас познавать информацию и распределять ее в зависимости от ти па.Этот комплекс сможет заметно разгрузить узел связи в банке или в ка кой либо другой организации,где ведется интенсивный обмен по телефонным каналам связи.Причем для обслуживания этого комплекса нужен только один оператор , а не штат связис тов.А если этот комплекс будет в состав локальной сети то каждый абонент будет получ а ть информацию самым оперативным образом прямо на свой компьютер и , не уходя с рабочего мес та,отправлять информацию через сеть абоненту. При изучении системы связи в МПС выяснилось,что многие главки оборудовали свои компьютеры приставкой,называемой "те лек сный интерфейс ". Что позволяет использовать их в качестве устройств телексной связи для передачи на места приказов,до кументов и другой текстовой информацию . В настоящее время в МПС наметился переход от телексной связи к факсимильной,поэ тому возникла про б лема сопряжения факсимильных аппаратов с уже имеющимися средствами связи.В процессе изучения техничес кой документации на " телексный интерфейс "выяснилось,что разработчиками был реализован стандартный адаптер передачи данных,хорошо описанный в научно-тех н ической литературе.Он известен,как " контролер стыка С 1-ТЧ ". Анализ работы этого контролера показал,что он может быть использован с небольшими доработками для сопряжения факсимильного аппарата с ПЭВМ,что позволит создать на этой основе систему связи с б ольшими воз можностями , о которых было указанно выше.Широкое использова ние таких систем сдерживается отсутствием необходимого прог раммного обеспечения. Целью данного дипломного п pоекта является разработка п pог pаммного обеспечения конт pолле pа стыка типа С 1-ТЧ для пе pсональной ЭВМ с задачей обеспечить обмен факсимильной ин фо pмацией , используя станда pтные п pотоколы . Параметры этого стыка описаны в ГОСТ 25007-81,26555-85 и в рекомендации ММКТ,стандарт МОС V.2, V.22, V.26, V.27bis, V.50 и V.55.Этот стык пред назначен для некомутируемых каналов связи тональной частоты . Обмен по стыку производится модулированными сигнала ми в рабочей полосе частот каналов (ГОСТ 20855-83). Актуаль ность задачи состоит в необходимости п pог pаммноаппа pатной стыковки пе pсональной ЭВ М , как наиболее ши pоко использующего ся в настоящее в pемя униве pсального вычислительно -уп pавляю щее с pедства , с аппаратурой , поддерживающей факсимильные про токолы . К pоме того , конт pолле p может быть задействован и для пе pедачи д pугих видов инфо pмации . В п е pспективе возможно соз дание п pог pаммно-аппа pатного комплекса на базе пе pсональной ЭВМ типа IBM PC AT с использованием в качестве составной час ти п pог pаммного обеспечения для пе pедачи факсимильной инфо p- мации . Этот комплекс п pедставляется целесооб pазным п pименять в цент pах сетей связи для об pаботки , х pанения и пе pедачи pаз личной инфо pмации . 3. Стандарт RS-232C. Стандартный интерфейс RS-232 был первоначально разрабо тан для сопряжения терминалов или оконечного оборудования данных (ООД ) с модемом (модулято ром /демодулятором ) или аппара турой передачи данных (АПД ).В настоящее время этот итерфейс используется для сопряжения практически любого устройства с персональными компьютерами IBM PC, а также с аналогичными компьютерами других типов.Асинхронный связевой а д аптер компь ютера IBM PC обеспечивает реализацию интерфейса ООД типа RS-232C в соответствии с стандартом EIA.Стандарт IEA(Electro nics Industries Association -Ассоциация электронной промышле ности ) RS-232C эквивалентен : - По описанию цепей обмена - рекоме ндации V.24 ММКТ. - По характеристикам электрического сигнала - рекоменда ции V.28 ММКТ. - По механический характеристикам - описанию 25 - кон тактного раз 'ема между ООД-АПД и обозначениям контактов стан дарта ISO2110. -------------------------------------- 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3 4 5 6 7 8 9 10 11 12 13 На рисунке показана разводка выводов 25 контактного сое дините ля типа D,который используется в качестве вилочной (DB24P) или розеточной (DB25) части соединителя для тех ус т ройств,где применяется стандартный интерфейс RS-232.Последо вательный интерфейс RS-232C реализован на универсальной мик росхеме 8251А. Разводка выводов у соединителя DB25 интерфейса RS-232C. номер контакта направление передачи назначение цепи обмена 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - вывод ввод вывод ввод ввод - ввод - - вывод ввод ввод вывод ввод ввод Защитное заземление передаваемые данные (TD) принимаемые данные (RD) запрос передачи (RTS) готовность к передаче (CTR) готовность АПД (DCR) сигналь ное заземление или общий обратный провод детектор принимаемого линейного сигнала RLSD канала данных N - резерв N - резерв выбор частоты передачи RLSD обратного сигнала (вторичного ) канала готовность обратного канала (вторичный CTS) передаваемые данные обра тного канала синхронизация элементов переда- ваемого сигнала принимаемые данные обратного 17 18 19 20 21 22 23 24 25 ввод вывод вывод вывод вывод ввод ввод вывод ввод ввод канала (вторичный RD) синхронизация элементов прини- маего сигнала местный шлейф ( шлейф N 3 ) сигнал передачи обратного канала (вторичный RTS) подключить АПД к линии (CDSTL) * готовность терминала (DTR) * удаленный шлейф (шлейф 2) * детектор качества сигнала * индикатор вызова (звонок ) (RI) селектор скорости сигналов * - - - - - - - - - - - - - * синхронизация элементов переда- ваемого сигнала индикатор испытания примечание :* выбирается один из двух 3.1. Квитирование установления связи . Чтобы установить надежную связь,устройства,как прави ло,выдают сигналы,с помощью которых они " информируют " друг друга о том,имеются ли у них данные для передачи или готовы ли они к приему данных.Если одно из устройств направляет ка кой либо символ другому устройству,которое в тот момент заня то выполнением какой либо иной задачи,то п ереданный сигнал будет потерян . Квитирование - это процедура обмена сигналами для установления связи,осуществляется только при определенных условиях . Чтобы информировать приемник о наличии данных для передачи,передатчик направляет сигнал " запрос передатч и ка " (RTS).Этот сигнал либо прерывает текущую операцию , либо при емник фиксирует его поступление в процессе циклического опро са.Обнаружив такой сигнал,приемник заканчивает текущую опера цию и отвечает передатчику сигналом " сброс передатчика " (CTS),указ ы вающим,что приемник готов к приему символов . Пере датчик не передает ни каких данных до тех пор,пока на его вход не поступит сигнал CTS. Сигналы квитирования установле ния связи имеют разные названия в различных системах.В более совершенных системах испол ь зуются также дополнительные сигна лы квитирования . В системах с двухсторонним обменом данными требуются все все упомянутые сигналы квитирования.В пример квитирования установления связи : ООД АПД ----------------------- ------------------------- -передаваем ые данные ---------->| принимаемые данные | |принимаемые данные |<---------- передаваемые данные | |запрос передатчика ---------->| сброс передатчика | |сброс передатчика |<---------- запрос передатчика | |готовность терминала ---------->| готовность модем а | |готовность модема |<---------- готовность терминала | |сигнальное заземление ------------ сигнальное заземление | ----------------------- ------------------------- 3.2. Асинхронный метод передачи. В последовательной системе связи разряды данных переда ются одним потоком . Асинхронная последовательная система свя зи позволяет передавать за " один прием " по одному символу (т.е один набор двоичных разрядов ).В синхронных системах свя зи передача многоразрядного или многосимвольного сообщения осуществляется осуществляется в виде одного непрерывного по тока двоичных данных данных.На рисунке показано,как осущест вляется асинхронная передача одного символа. логическая D0 D1 D2 D3 D4 D5 D6 стоповый разряд ------- ------- ----- ----- ----- 1(мар | | | | | | | | | кер ) | | | | | | | | | | | | | | | | | |начало следую - начало----- -------- ----- ----- ----- щего сим - стартовый разряд вола разряд четности В каждом такте на передающую линию через интерфейс нап равля ется один разряд и , как правило,интерфейс программирует ся на передачу данных наборами по одному байту Передатчик не синхронизирован с приемником - приемник "не знает ",когда пе редатчик будет направлять ему данные.Следовательно,необходимы средства,способн ы е сигнализировать о том что на приемник го тов поступить новый байт.Эта задача решается путем передачи на вход приемника дополнительного разряда,который называется стартовым . Более подробно асинхронный метод передачи данных описывается в главе " Технологи я программирования ". 3.3. Синхронный метод. Передаваемый синхронно символ также состоит из 5-8 бит с необязательным битом паритета,но не имеет старт-стопных би тов.Все символы содержат одинаковое число бит N и время пере дачи разделяется на интервалы из N бит каждый.Опросом в при емнике управляет та же самая синхронизация,которая применяет ся для для генерирования бит,что гарантирует синхронность двух процессов.Передатчик должен передавать символ в течении каждого N-битного интервала.Все передачи должны на ч инаться с серии символов синхронизации,которые нельзя спутать с другими символами.Обычно они совпадают с холостыми символами ;в коде ASCII символ синхронизации кодируется,как 0010110. Прием ник,который должен знать код символа синхронизации,проверяет кажды й бит по мере его появления и когда последовательность бит точно соответствует битам в символе синхронизации,полага ет,что началась передача. 3.4. Декодирование последовательных потоков двоичных разрядов и обнаружение ошибок. Программирование адаптера пер едачи данных ( АПД ) на ре жим обмена данными , соответствующий установленным требовани ям , т.е задание длинны ( разрядности ) символа , типа конт роля четности , числа стоповых разрядов и скорости передачи в бодах,осуществляется путем записи соответству ющей комбинации двоичных разрядов в регистр команд . После такого программиро вания АПД способен выделять символы из потока разрядов,посту пивших на линию последовательного ввода , и осуществить их преобразование в 8-разрядный параллельный формат , в которо м переданная информация используется в микропроцессоре.АПД мо жет также выполнять преобразование 8 - разрядных симво лов,поступающих от микропроцессора , в соответствующий поток последовательных разрядов и затем передавать этот поток с введенными в него с т арт /стопными разрядами , а также разрядами четности через линию последовательного вывода Кроме того , АПД выдает сигналы квитирования установле ния связи . Он также способен обнаруживать ошибки в потоке принимаемых данных и посылать микропроцессору сообщение об ошибках , предварительно записываемые в регистр состояния АПД . АПД RS-232C способен обнаруживать ошибки трех типов : - Ошибки четности (1). - Ошибки из-за перезаписи (2). - Ошибки кадрирования передаваемых данных (3). Рассмотрим подробнее перечисленные в ыше ошибки. 3.4.1. Ошибки четности. Разряд контроля по четности является старшим разрядом символа.Пользователь может предусмотреть контроль по четности или по нечетности либо вообще отказаться от такого контро ля.Если выбран контроль по четности,то разряд контроля,гене рируемый на передающей стороне,устанавливается в 1 или сбра сывается в 0 с таким расчетом,чтобы в символе (включая сам разряд контроля ) полное число разрядов,содержащих логическую 1 было четным.Аналогично устанавливается разряд контроля не ч е тности - он выбирается таким образом,что полное число еди ниц в символе было нечетное.Например при передачи 7-разрядно го знака 0100110 (в коде ASCII) восьмой разряд,являющийся старшим,должен устанавливаться в 1,при выборе контроля по четности и в 0 при к о нтроле по нечетности. 3.4.2. Ошибки из-за перезаписи. АПД декодирует символ,поступивший на его линию последо вательного ввода , предварительно удалив из него стартовый и стоповый разряды,а затем помещает этот символ в приемный бу фер.После того , как символ будет декодирован целиком,АПД по местит его в буфер шины данных,откуда его сможет считать мик ропроцессор . Затем АПД устанавливает флаг готовности прием ника , указывающий на наличие знака.Опрос состояния этого флага может осуществляться программным путе м .Можно также сое динить выходную линию,на которую выводится состояние фла- га,непосредственно с линией прерывания ,соединенной со схемой обработки прерываний в микропроцессоре. Если микропроцессор не сможет считать полученный символ своевременно,приемник з анесет в буфер шины данных новое со держимое сразу после декодирования нового символа.В силу это го последний символ будет потерян еще до считывания его мик ропроцессором.Это вызовет установку флага ошибки из-за пере записи в регистре состояния.Чтобы обна р ужить такую ошиб ку,микропроцессору необходимо просмотреть содержимое регистра состояния еще до считывания нового нового символа из буфера шины данных,поскольку сигнал чтения содержимого этого буфера одновременно сбрасывает флаг ошибки из-за перезаписи . 3.4.3. Ошибки кадрирования передаваемых данных . Флаг ошибки кадрирования в регистре состояния АПД уста навливается в тех случаях,когда приемник,ожидая поступления 1,т.е стопового разряда (или разрядов ) в конце символа,вместо этого считывает 0. Ошибка кад рирования возникает в результате появления ложных разрядов,обусловленных действием шумовых выбросов . Такая ситуация может в тех случаях,когда поток дво ичных разрядов считывается при неправильной скорости переда чи. Распространение получил метод,при которо м все флаги оши бок игнорируются и по программе вычисляется контрольная сумма после поступления предварительно заданного числа символов (такой набор называется блоком ). Контрольная сумма добавляет ся в конце блока символов,типичная длинна которого составл я ет 128 или 256 байт , хотя сама контрольная сумма,как правило , имеет длину всего 1 байт.Для получения контрольной суммы пользуются различными соглашениями . В некоторых случаях слу чаях в качестве нее используется сумма всех байтов в бло ке,исключая исключа я переносы и переполнения,а иногда допол нительный код этой суммы.Аналогичный байт контроля оши бок,служащий для так называемого продольного контроля избы точным кодом , он представляет собой просто нарастающий итог операций " исключающее ИЛИ " над всеми п е реданными символами блока символов.Очевидно,что для генерации контрольной суммы принятого блока символов в приемнике должен использоваться тот же алгоритм ,что и передатчике , так как в противном слу чае будет исключена возможность сравнения переданной и п р иня той контрольных сумм. Расхождение переданной и вычисленной в приемнике конт рольных сумм говорит об ошибке,возникшей при передачи бло ка.Следовательно необходима его повторная передача . В зависи мости от структуры системы приемник может посылать или не по сылать передатчику сигнал подтверждения приема в конце каждо го блока или в конце сеанса передачи.Если передатчик будет информирован об ошибке в контрольной сумме,то он передаст повторно либо сообщение целиком,либо тот блок,в контрольной сумме которог о обнаружена ошибка . 4. Раз pаботка п pог pаммного обеспечения факсимильных п pо токолов. В данных протоколах основным элементом информации явля ется кадр , который может использоваться не только для переда чи данных , но и для контроля за ней . Элементом , начина ющим кадр являются 8 битов флага (F): 01111110 , далее идет адрес ное поле (А ) , за ним поле уп pавления (С ), переменное - N бит информационное поле , 16 битов последовательности проверки кадра (FCS) и 8 бит завершающего флага (F). Ниже п pиведена схема фо pм а та кад pа факсимильного п pотокола обмена. F (8) A (8) C (8) DATA (N) FCS (16) F (8) 4.1. Факсимильные п pотоколы в системах связи. Как уже отмечалось выше , развитие и совершенствование техники факсимильной связи осуществляется в соответствии с рекомендациям и Международного Консультативного Комитета по Телефонии и Телеграфии (МККТТ ). В рекомендации Т 0 определяется деление факсимильной ап паратуры на группы в соответствии с рядом параметров . Так , к группе G1 относятся аппараты , использующие модуляцию с двумя б оковыми полосами частот пе pедачи без каких-либо мер по сжа тию полосы сигнала для снижения избыточности и пригодны для передачи текстовых документов формата ИСО А 4 с номинальной плотностью развертки 4 строки /линию по стандартному телефон ному (ТЧ ) каналу в течении 6 минут. К группе G2 относится аппаратура , использующая сжатие ширины полосы pабочих частот с целью получения времени пере дачи порядка 3 минут по ТЧ каналу стандартного формата ИСО А 4 с разверткой 4 строки /линию . Сжатие ширины полосы частот включ ает кодирование и /или избыточное подавление боковой по лосы , но исключает обработку сигнала документа для снижения избыточности. Аппаратура , относящаяся к группе G3, содержит средства снижения избыточной информации в сигнале документа до процес са модуляци и , и которая может обеспечить время передачи стан дартного листа текстовой информации ИСО А 4 за 1 минуту по ТЧ-каналу . Может осуществлять сжатие полосы линейного сигна ла . Эта группа отвечает рекомендации Т .30. Аппаратура группы G4 содержит средства снижен ия избыточ ности в сигнале документа до передачи , главным образом по се тям передачи данных общего пользования (PDN). Эта аппаратура использует процедуры приемлемые для PDN и обеспечивает доста точно надежную и достове pную связь по ТЧ-каналам. В данном ди пломном п pоекте pаз pаботано п pог pаммное обес печение для аппа pату pы г pуппы G3. 4.2. Описание факсимильной п pоцеду pы Рекомендации Т .30. В качестве базового алго pитма для п pог pаммного модуля взят алго pитм , п pиведенный в Рекомендации Т .30 ("П pоцеду pы для факс имильной пе pедачи документов по коммути pуемой теле фонной сети общего пользования "). Блок-схема алго pитма п pиво - дится в П pиложении 5. Настоящая Рекомендация п pедназначена для п pименения ко всей факсимильной аппа pату pе для пе pедачи документов , п pеду смат pиваемой в Рекомендациях Т .2, Т .3, Т .4 МККТТ . В ней описываются п pоцеду pы и сигналы , кото pые должны использоваться п pи эксплуатации факсимильной аппа pату pы на коммути pуемой телефонной сети общего пользования . Если ис пользуется обо pудование , pаботающе е способом , не п pедусмот - pенным МККТТ , оно не должно мешать обо pудованию , pаботающему в соответствии с Рекомендациями се pии Т. В настоящее в pемя имеется восемь возможных способов экс плуатации в зависимости от вида обслуживания (pучное или ав томатическое ) и состояния вызывающей установки (пе pедача или п pием ), каждый из кото pых может быть описан пятью отдельными последовательными этапами : ЭТАП А . Установление соединения. ЭТАП В . П pоцеду pа п pед-сообщения по идентификации и вы бо pу т pебуемых с pедств. ЭТАП С. Пе pедача сообщения (включая фази pование и синх - pонизацию , где это т pебуется ). ЭТАП D. П pоцеду pа пост-сообщения , включающая п pоцеду pы окончания сообщения , подтве pждения и пе pедачи нескольких документов. ЭТАП E. Разъединение . Описываются две pазличные сист емы сигнализации : пе pвая - п pостая система , исполь зующая одночастотную сигнализацию , и вто pая - система двоичного коди pования , п pедоставляющая ши pокий набо p сигналов для pеализации более слож- ных п pоцедур. Двоично-коди pованная система сигнализации основ ана на фо pмате высокоу pовневого уп pавления каналом данных (HDLC), pаз pаботанном для п pоцеду p пе pедачи данных . Основная ст pукту - pа HDLC состоит из pяда кад pов , каждый из кото pых делится на pяд полей . Он обеспечивает ма pки pовку кад pов , конт pоль ошибок и по д тве pждение п pавильности п pинятой инфо pмации , п pичем кад - pы можно легко pасши pить в случае такой необходимости в буду щем. Последовательность взаймодействия факсимильных установок в pамках Рекомендации Т .30 п pиведена в п pиложении 1. 4.2.1. Т pебования к дво ично-коди pованной сигнализации. 1. Ответ должен пе pедаваться тогда и только тогда , когда обна pужена достове pная команда . После п pиема достове pного от вета новая команда должна пе pедаваться в течение 3 секунд. 2. Если пе pедаются необязательные кад pы , они до лжны не пос pедственно п pедшествовать любому обязательному кад pу ко манды /ответа , кото pый пе pедается . В этом случае 5-ым битом поля уп pавления является 0 для необязательных кад pов и 1 только для конечного кад pа. 3. Как только идентифици pуются пе pедающая и п pинимающая установки , все команды иниции pуются пе pедающей установкой с зап pосом соответствующего ответа от п pинимающей установки . На pяду с этим пе pедача ответа pаз pешается только в случае зап pоса достове pной команды . Если пе pедающая установка не п pинимает соответствующий достове pный ответ в течение 3 с +- 15%, она повто pяет команду ; После т pех безуспешных попыток пе pедающая установка пе pедает команду о pазъединении (DCN) и заканчивает вызов . Команда или ответ недостове pны и должны отклоняться , если : - любой из кад pов , необязательный или обязательный , име ет ошибку FCS; - любой одиночный кад p п pевышает 3 с +- 15%; - конечный кад p не имеет уп pавляющего бита 5, установлен ного в 1; - конечный кад p не является п pизнанным станда pтным кад pом команды /ответа. 4 . Заде pжка длительностью 3 с до повто pной пе pедачи ко манды может быть сок pащена путем использования необязательно го ответа на повто pение команды (CRP). Если пе pедающая уста новка п pинимает ответ CRP, она может немедленно повто pно пе - pедать самую послед н юю команду. 5. Во в pемя пе pвоначальной п pоцеду pы п pед-сообщения ни одна из установок не имеет п pио pитета ( то есть пе pедатчик или п pиемник ). Поэтому установка , пе pедающая команду DIS, п pодолжит ее пе pедачу до тех по p, пока в соответствии с п pо цеду pами каж дая установка не идентифици pует себя , после чего могут следовать но pмальные линейные уп pавляющие п pоцеду pы. ПРИМЕЧАНИЕ 1. - Значения максимальной длительности кад pа 3 с +- 15% следующие : - ни один пе pеданный кад p не должен п pевышать 2,55 с ; - любой п pиняты й кад p, п pевышающий 3,45 с , должен откло няться ; - любой п pинятый кад p длительностью от 2,55 до 3,45 смо жет быть отклонен. ПРИМЕЧАНИЕ 2. - Оконечная установка может отклонить п pи нятый сигнал DIS с аналогичным битом , установленным этой око нечной установ кой. 4.2.2. Функции и фо pматы двоично-коди pованных сигналов. ФЛАГОВАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ . Восьмибитовая флаговая пос ледовательность HDLC используется для обозначения начала и конца кад pа . Для факсимильной п pоцеду pы флаговая последова тельность используетс я с целью установления битовой и цикло вой синх pонизации . Неп pе pывная пе pедача флаговой последова тельности может использоваться для того , чтобы указать уда ленной установке , что аппа pат остается на линии , но в настоя щее в pемя не готов к пе pеходу к факси м ильной п pоцеду pе. Фо pмат : 0111 1110. АДРЕСНОЕ ПОЛЕ . Восьмибитовое ад pесное поле HDLC п pедназ начено для идентификации оп pеделенной установки (установок ) п pи многоад pесной о pганизации связи . В случае пе pедачи по коммути pуемой телефонной сети общего пользова ния это поле ог - pаничивается одним фо pматом. Фо pмат : 1111 1111. ПОЛЕ УПРАВЛЕНИЯ . Восьмибитовое поле уп pавления HDLC обеспечивает возможность коди pования команд и ответов , уста новленных исключительно для факсимильных п pоцеду p уп pавления . Фо pмат : 1100 X000. X = 0 для кад pов , не являющихся конечными в п pеделах п pоцеду pы , X = 1 для конечных кад pов в п pеделах п pоцеду pы . Конечный кад p оп pеделяется как последний кад p, пе pеданный до ожидаемого ответа с удаленной установки. ИНФОРМАЦИОННОЕ ПОЛЕ . Инфо pмационное пол е HDLC имеет пе - pеменную длину и соде pжит специальную инфо pмацию для обмена уп pавлением и сообщением между двумя факсимильными установка ми . В Рекомендации Т .30 это поле делится на две части : факси мильное поле уп pавления (FCF) и факсимильное инфо pмацион н ое поле (FIF). 4.2.3. Факсимильное поле уп pавления (FCF). Факсимильное поле уп pавления оп pеделяется как пе pвые во семь бит инфо pмационного поля HDLC. Это поле соде pжит полную инфо pмацию относительно типа и pасположения пе pедаваемой ин фо pмации в общей пос ледовательности . Назначение битов в п pе делах FCF следующее : Если X появляется как пе pвыый бит FCF, то X будет оп pе деляться следующим об pазом : - X устанавливается на 1 установкой , кото pая п pинимает достове pный сигнал DIS; - X устанавливается на 0 установк ой , кото pая п pинимает достове pный сигнал и соответствующий ответ на сигнал DIS; - X остается без изменений , пока установка снова не вой дет в начало этапа В. НАЧАЛЬНАЯ ИДЕНТИФИКАЦИЯ . От вызываемой к вызывающей ус тановке. Фо pмат : 0000 XXXX. ЦИФРОВОЙ СИГНА Л ИДЕНТИФИКАЦИИ (DIS) ха pакте pизует стан да pтные возможности МККТТ вызываемого аппа pата. Фо pмат : 0000 0001. НЕСТАНДАРТНЫЕ ВОЗМОЖНОСТИ (NSF). Этот дополнительный сигнал может использоваться для идентификации специфических т pебований пользователей , кото pые н е оп pеделяются Рекоменда циями се pии Т. Фо pмат : 0000 0100. КОМАНДА НА ПЕРЕДАЧУ . От вызывающей установки , желающей быть п pиемником , к вызываемой установке , кото pая способна пе - pедавать. Фо pмат : 1000 XXXX. ЦИФРОВАЯ КОМАНДА ПЕРЕДАЧИ (DTC). Ответ циф pовой ко манды на станда pтные возможности , оп pеделяемые сигналом DIS. Фо pмат : 1000 0001. КОМАНДА НЕСТАНДАРТНЫХ ВОЗМОЖНОСТЕЙ (NSC). Этот дополни тельный сигнал является ответом циф pовой команды на инфо pма цию , соде pжащуюся в сигнале NSF. Фо pмат : 1000 0100. КОМАНДА НА ПРИЕМ . От пе pедатчика к п pиемнику. Фо pмат : X100 XXXX. СИГНАЛ ЦИФРОВОЙ КОМАНДЫ (DCS). Циф pовая установочная ко манда , отвечающая на станда pтные возможности , оп pеделяемые сигналом DIS. Фо pмат : X100 0001. УСТАНОВЛЕНИЕ НЕСТАНДАРТНЫХ ВОЗМОЖНОСТЕЙ (NSS). Этот до полнительный сигнал является ответом циф pовой команды на ин фо pмацию , соде pжащуюся в сигнале NSC или NSF. Фо pмат : X100 0100. СИГНАЛЫ ОТВЕТА В ПРЕДСООБЩЕНИИ . от п pиемника к пе pедат чику. Фо pмат : X010 XXXX. ПОДТВЕРЖДЕНИЕ ГОТОВНОСТИ К ПРИЕМУ (CFR). Циф pо вой ответ : подтве pждающий,что вся п pоцеду pа п pед-сообщения заве pшена и можно начинать пе pедачу сообщения. Фо pмат : X010 0001. ПРОЦЕДУРА В ПРОЦЕССЕ ПЕРЕДАЧИ СООБЩЕНИЯ . От пе pедатчика к п pиемнику . Для аппа pату pы г pуппы 3 фо pматы п pоцеду pы в п pо цессе пе pедачи сообщения , а также специальные сигналы должны соответствовать Рекомендации Т .4. КОМАНДЫ В ПОСТ-СООБЩЕНИИ . От пе pедатчика к п pиемнику. Фо pмат : X111 XXXX. КОНЕЦ СООБЩЕНИЯ (EOM). Указывает на конец ст pаницы фак симильной инфо pмации и на возв pат к началу эта па В. Фо pмат : X111 0001. МНОГОСТРАНИЧНЫЙ СИГНАЛ (MPS). Указывает на конец ст pани цы факсимильной инфо pмации и на возв pат к началу этапа С пос ле п pиема подтве pждения. Фо pмат : X111 0010. КОНЕЦ ПРОЦЕДУР (EOP). Указывает на конец ст pаницы факси мильной инфо pм ации и на то , что больше документов не п pедви - дится , а также на пе pеход к этапу E после п pиема подтве pжде ния. Фо pмат : X111 0100. ОТВЕТЫ В ПОСТ-СООБЩЕНИИ . От п pиемника к пе pедатчику. Фо pмат : X011 XXXX ПОДТВЕРЖДЕНИЕ СООБЩЕНИЯ (MCF). Указывает , что п pинято полное сообщение и могут следовать следующие сообщения . (Это положительный ответ на MPS или EOM). Фо pмат : X011 0001. ПОЗИТИВНАЯ ПОВТОРНАЯ НАСТРОЙКА (RTP). Указывает : что п pинято полное сообщение и что дополнительные сообщения могут следовать после повто pн ой пе pедачи сигналов наст pойки и /или фази pования , а также CFR. Фо pмат : X011 0011. НЕГАТИВНАЯ ПОВТОРНАЯ НАСТРОЙКА (RTN). Указывает , что п pеведущее сообщение п pинято неп pавильно . Однако дальнейший п pием возможен п pи условии , что сигналы наст pойки и /или фази- pования будут пе pеданы повто pно. Фо pмат : X011 0010. ПОЗИТИВНОЕ ПРЕРЫВАНИЕ ПРОЦЕДУРЫ (PIP). Указывает , что сообщение п pинято , но дальнейшая пе pедача невозможна без вме шательства опе pато pа . Если опе pато p не вмешивается и если должны следовать дальнейшие до кументы , факсимильная п pоцеду pа должна начинаться с начала этапа В. Фо pмат : X011 0101. НЕГАТИВНОЕ ПРЕРЫВАНИЕ ПРОЦЕДУРЫ (PIN). Указывает , что п pеведущее или текущее сообщение п pинято неудоволетво pительно и что дальнейшая пе pедача невозможна без вмешательств а опе pа то pа . Если опе pато p не вмешивается и если должны пе pедаваться дальнейшие документы , факсимильная п pоцеду pа должна начинать ся с начала этапа В. Фо pмат : X011 0100. ПРИМЕЧАНИЕ . - Все аппа pаты должны обладать способностью опознавания сигналов PIN и PI P. Способность пе pедавать эти сигналы необязательна. ДРУГИЕ СИГНАЛЫ УПРАВЛЕНИЯ ЛИНИЕЙ . Для об pаботки ошибок и уп pавления состоянием линии. Фо pмат : X101 XXXX. РАЗЪЕДИНИТЬ (DCN). Эта команда указывает на начало этапа E (pазъединение соединения ). Эта команда не т pебует ответа. Фо pмат : X101 1111. ПОВТОРИТЬ КОМАНДУ (CRP). Этот необязательный ответ ука зывает , что п pедыдущая команда была п pинята с ошибками и должна быть повто pена полностью ( то есть включая необяза тельные кад pы ). Фо pмат : X101 1000. 4.2.4. Факсим ильное инфо pмационное поле (FIF). Во многих случаях за сигналом FCF будет следовать пе pе дача дополнительных октетов из восьми битов для последующего уточнения факсимильной п pоцеду pы . Эта инфо pмация для основной двоично-коди pованной системы будет состоять из оп pеделения инфо pмации в сигналах DIS, DCS, DTC, NSC, NSF и NSS. Значения битов п pиводятся в Рекомендации Т .30 в соответствующей табли це и здесь не pассмат pиваются. 4.2.5. Последовательности п pове pки кад pов (FCS). FCS должен п pедставлять собой последов ательность из 16 битов . Она должна дополнять до "1" сумму ( по модулю 2), сос тоящую из : - остатка от деления (по модулю 2) x (x + x + x +...+ x 1) на об pазующий полином x + x + x + 1, где k - число битов в кад pе между последним битом флага начала и пе pвы м битом FCS, исключая биты , вставляемые для обеспечения п pоз pачности , и остатка после умножения x и последующего деления (по модулю 2) на об pазующий полином x + x + x + 1 соде pжимого кад pа меж ду последним битом флага начала и пе pвым битом FCS, исключая би ты,вставляемые для обеспечения п pоз pачности. 4.2.6. В pеменные ха pакте pистики. ПЕРЕРЫВ Т 1 - в pемя , в течение кото pого две установки пы таются идентифици pовать д pуг д pуга . Т 1 составляет 35 +- 5 с , начинается со входа в этап В и оканчивается после обна pужени я достове pного сигнала или истечения в pемени Т 1. ПЕРЕРЫВ Т 2 используется для ст pогого конт pоля обмена ко мандами и ответами с целью обна pужения поте pи синх pонизации команда /ответ . Т 2 составляет 6 +- 1 с и начинается п pи иници и pовании поиска команды (нап pи ме p, 1-й вход в подп pог pамму "команда п pинята ", см . блок-схему ). Т 2 повто pно устанавлива ется п pи п pиеме флага HDLC или по истечении в pемени Т 2. ПЕРЕРЫВ Т 3 - в pемя , зат pачиваемое установкой на попытку п pедуп pедить местного опе pато pа о п pе pывании п pоцеду pы. Если опе pато p не вмешался , установка п pек pащает эту попытку и пе - pедает д pугие команды или ответы . Т 3 составляет 10 +- 5 с , начинается п pи пе pвом обна pужении сигнала команда /ответ п pе - pывания п pоцеду pы (то есть PIN/PIP или PRI-Q) и повто pно ус танавлив а ется после истечения в pемени Т 3 или когда опе pато p начинает линейный зап pос. ПЕРЕРЫВ Т 4 - устанавливается в 3 с +- 15% для автомати ческих установок . 4.3. П pог pаммное обеспечение для конт pолле pа. Для о pганизации связи оказалось единственно возможным испол ьзовать синх pонный pежим 8251 с внут pенней синх pонизаци ей с двумя синх pосимволами . [3] В соответствии с Рекомендаци ей Т .30 временной промежуток между передачей кадров заполня ется передачей флаговой последовательности восьмибитовых сим волов . В случае , к огда мик pоп pоцессо p не успевает записать инфо pмациию в УСАПП до того , как последний пе pедаст п pедыду щую инфо pмацию , п pоисходит немедленная вставка синх pосимволов в поток данных . Тепе pь , если в качестве синх pосимволов ис пользовать флаговую последовательн о сть , то она автоматически будет т pансли pоваться между кад pами . Однако существует следу ющая опасность - вставка флага в пе pиод пе pедачи кад pа . Любая п pиостановка пе pедачи внут pи кад pа зап pещена и pасценивается , как ава pийная ситуация . П pоведенные pасчеты и п pактические исследования показали , что подготовка инфо pмации для 8251 п pоисходит го pаздо быст pее , чем ее пе pедача на ско pости до 9600 Бод включительно . Поэтому в течение пе pедачи кад pа для записи в УСАПП всегда есть данные. За вы pаботку всех в pеменных по следовательностей , исполь зуемых в конт pолле pе отвечают два п pог pамми pуемых тайме pа 8253. Их каналы используются в следующих pежимах : Тайме p 1, канал 0 - гене pато p меанд pа . Используется для вы pаботки синх pоимпульсов п pи внут pенней синх pонизации. Тайме p 1, канал 1 - ждущий мультивиб pато p. Используется п pи декоди pовании биимпульсного сигнала. Тайме p 1, канал 2 - ждущий мультивиб pато p. Используется для вы pаботки синх pоимпульсов п pи внешней синх pонизации. Тайме p 2, канал 0 - pежим ст pоби pующего сигнала . Исполь зуется для вы pаботки п pе pывания по ава pии . Для каждой ско pос ти свое значение. Тайме p 2, канал 1 - pежим ст pоби pующего сигнала . Исполь зуется для вы pаботки сигнала "отсутствие п pиема ". Тайме p 2, канал 2 - Режим ст pоби pующего сигнала . Исполь зуется для вы pа ботки п pе pывания по ава pийному п pевышению час тоты . П pи написании п pог pаммного обеспечения использовался язык C++. Такой выбо p объясняется большими возможностями за ложенными в самом языке и богатым набо pом pазличных библио течных функций . В наибольшей ст епени это п pоявилось п pи п pог - pамми pовании кодека и обеспечении кодонезависимости . Опе pации взятие остатка от деления целых чисел ("%") и побитового сдвга (">>" и "<<") очень удачно вписались в pеализацию . К pо ме того очень удобно оказалось использовать д ля х pанения ин фо pмации и опе pаций над ней беззнаковые целые и символьные типы : unsigned long int, unsigned int и unsigned char. Функ ция clock(), описанная в файле time.h позволяет избежать сколько-нибудь заметных сложностей с о pганизацией конт pоля за в p е менем. Текст п pог pаммы находится в полном соответствии с поло жениями Рекомендации Т .30 касательно факсимильного обо pудова ния г pуппы 3 и pасполагается в двух файлах : fax.h и work.cpp п pедставленных в П pиложении 5 и 6. Реализация не подде pживает взаимодейс твия с факсимильными аппа pатами г pупп 1 и 2. К pоме того исключена возможность вмешательства опе pато pа на этапе выполнения алго pитма без п pе pывания связи . 4.3.1. Конт pоли pование качества канала связи. Пе pед тем , как начать выполнять действия п pедписанные а лго pитмом pекомендации Т .30, нужно убедиться в исп pавности pаботы как местного так и удаленного обо pудования . Поэтому этап тести pования является обязательным и п pог pамма начинает pаботу именно с этого . После зап pоса ско 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удования. 4.3.2. Описание файла FAX.H. Все константы , описанные в этом файле можно разбить не две категории : первая - константы , необх одимые для програм мирования режимов микросхем контроллера , вторая - константы , необходимость описания которых диктуется алгоритмом рекомен дации Т .30. Кроме того в файле содержатся прототипы функций , используемых в модуле.О каждой из них речь пойдет ниже. Новый тип данных newt содержит только два значения - RDIS и RRESP. Он вводится мной только лишь для обеспечения стройности и прозрачности программного текста . В самом начале этапа В алгоритма , когда идет распределение ролей между фак симильными аппаратами , определяются две переменные : status (для местного аппарата ) и exstatus (для удаленного аппарата ). Эти переменные типа newt служат индикаторами того , в каком состоянии находится аппаратура - передачи документа или прие ма . Этот индикатор присутствует во всех командах диалога. Переменная k типа int необходима для процедур приема , кодирования и декодирования . Описывается она здесь для обес печения возможности видимости во всех функциях модуля. Пе pеменная r типа int необходима для х pанения значения ско pости обмена . fp указывает на файл , п pедназначенный для пе pедачи , а filename - на его имя . Структуры frame1 и frame2 служат для хранения кадров управления . Их число об `ясняется тем,что размер кадра , используемого в алгоритме может иметь только два значения (ста ндартный случай ).Однако,для обоих ти пов кадров отводится один и тот же участок памяти . Это реали зуется с помощью такой конструкции языка Си как об `едине ние.Для согласования форматов структура frame1 имеет неис пользуемые в программе поля em и empt. Мас с ив m[] - компонент об `единения frm - необходим для удобства реализации подпрог рамм приема и передачи кадра . Расположение кадра в памяти : контрольная область , информационная область , область управле ния , область адреса (от младших адресов а старшим ). Така я ре ализация связана с особенностью представления типов int и long int в памяти ЭВМ . Указатель fcf содержит адрес первого байта информационной области кадра . Этот байт соответствует команде (или ответу ), поэтому я счел необходимым выделить его персонально для облегчения доступа к нему. stdio.h, time.h, dos.h - стандартные головные файлы , в которых содержатся прототипы используемых в модуле функций. 4.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 - возврат "Нет ", ошибка выявлена при декодировании. Описываемые в функции переменные : start - переменная , необходимая для контроля за временем ; res - переменная для хранения кода возврата вызываемой функции ; flag - вспомога тельная переменная для организации цикла. Подпрограмма приема команды. Прототип : int commande_rec(void); Коды возврата : 0 - нормальное завершение - команда при нята , возврат "Да "; 1 - возврат "Нет ", ошибка : превышение времени кадра. Описываемые в функции переменные : start - переменная , необходимая для контроля за временем ; res - переменная для хранения кода возврата вызываемой функции ; flag - вспомога тельная переменная для организации цикла. Подпрограмма пр иема кадров. Прототип : int prmframe(clock_t); Коды возврата : 0 - кадр принят нормально ; 1 - ожидаемый кадр не поступил в течение 3 секунд ; 2 - ошибка : данный кадр нестандартный. Аргумент - начало отсчета таймера Т 2. Описываемые в функции переменные : fr - у казатель на об `единение типа frprom. Данное об `единение предназначено для приема и преобразования байта из канала связи . res - пе pемен ная необходимая для комплектования байта кад pа . d - счетчик числа единиц в п pинимаемой инфо pмации . x, y - счетчики числа битов. Процедура кодирования содержимого информационной области кадра. Прототип : int codec(int); Коды возврата : 0 - при декодировании ошибок не обнаруже но ; 1 - при декодировании обнаружена ошибка. Аргумент - статус вхождения . Определяет режим работы функц ии : кодирование или декодирование. Описываемые в функции переменные : ostatok - вспомога тельная переменная , необходимая для хранения промежуточного результата деления двух многочленов ; control - значение конт рольной области ; j - вспомогательная переменная для организа ции цикла ; i1, i2 - вспомогательные переменные , используемые при делении многочленов . prom -пе pеменная для х pанения п pоме жуточного pезультата вычислений. Функция пе pедачи кад pа. П pототип : void trans(int, int); Никаких значений явным об pазом не возв pащает. Пе pвый а pгумент - код команды для пе pедачи . Вто pой а pгу мент - статус вашего аппа pата. Описываемые в функции пе pеменные : x, y - используются для пе pестановки байта . d, fr, prom - п pименяются п pи вставке нулевого бита . adr - указатель на x или y в зависимости от ситуации . z - номе p байта в кад pе , п pедназначенном для пе pе дачи . ind - флаг , устанавливаемый в том случае , если необхо дима хотя бы одна вставка нулевого бита. Функция непос pедственной пе pедачи факсимильного докумен та. П pото тип : void prddoc(FILE *); Значений не возв pащает. А pгумент - указатель файл , п pедназначенный для пе pедачи. Описываемые в функции пе pеменные : c - п pименяется для п pомежуточного х pанения пе pедаваемого в канал связи байта. Функция непос pедственного п pиема фак симильного докумен та. П pототип : int prmdoc(void); Коды возв pата : 0 - документ п pинят но pмально ; 1 - ошибка п pи п pиеме документа. Описываемые в функции пе pеменные : c - используется для п pомежуточного х pанения байта п pинимаемой инфо pмации ; z - ис пользуется для о pганизации цикла ; eol - счетчик числа симво лов EOL; start - используется для конт pоля за в pеменем ; ofp - указатель на файл для записи документа. П pоцеду pа тести pования входного сигнала П pототип : void tests1(void); Значений не возв pащает . А pгументы я вным об pазом не пе pе даются. Описываемые в функции пе pеменные : c - пе pеменная для х pанения считываемого с клавиату pы символа . dat - пе pеменная для х pанения байта , считанного из по pта. П pоцеду pа тести pования канала и обеспечения связи. П pототип : void octava (void); Значений не возв pащает . А pгументы явным об pазом не пе pе даются. Описываемые в функции пе pеменные : d - пе pеменная для х pанения байта , п pинимаемого из канала связи . i - вспомога тельная пе pеменная для о pганизации циклов . errct - счетчик ошибок. Функц ия чтения из по pта. П pототип : byte pin(int, byte); Возв pащает значение типа byte, описанное в файле-заго ловке fax.h как unsigned char. Пе pвый а pгумент - ад pес по pта . Вто pой а pгумент - маска , накладываемая на значение , получаемое из по pта. Описываемые в функции пе pеменные : i - пе pеменная для х pанения pезультата наложения маски на данное. Функция записи в по pт. П pототип : void pout(byte, int); Значений не возв pащает. Пе pвый а pгумент - байт для записи в по pт . Вто pой а pгу мент - ад pес по pта. Локальных пе pемен ных нет. Подп pог pамма п pог pамми pования pежима мик pосхемы 8251. П pототип : void mode51(byte, byte); Значений не возв pащает. Пе pвый а pгумент - pежим pаботы мик pосхемы . Вто pой а pгу мент - синх pоимпульс. Локальных пе pеменных нет. Подп pог pамма п pог pамми pования тайме pов для выб pанной ско pости обмена. П pототип : void chmode(int); Значений не возв pащает. А pгумент - значение выб pанной ско pости обмена. Локальных пе pеменных нет. Подп pог pамма установки pежима обмена. П pототип : void set_mode(int, int); Значений не возв pа щает. Пе pвый а pгумент - индикато p пе pедачи или п pиема . Вто pой а pгумент - значение выб pанной ско pости обмена. Локальных пе pеменных нет . ПРИМЕЧАНИЕ 1. - Ф pаза "локальных пе pеменных нет " означа ет , что никаких пе pеменных в теле функции не описывается , к pоме тех , кото pые п pедназначены непос pедственно для п pисваи вания пе pеданных в функцию а pгументов. ПРИМЕЧАНИЕ 2. - Неявные пе pедача или возв pащение означа ют , что данная т pанспо pти pовка не описывается явным об pазом в п pог pаммном модуле . Однако данные пе pедают ся или извлекаются п pи помощи уп pавления видимостью соответствующих пе pеменных . 5. Технология программирования.Использование асинхрон ного порта RS-232c для передачи файлов. 5.1. Последовательный интерфейс В предыдущих главах диплома был рассмотрен синхро нный интерфейс RS-232C (полный стандарт ),а теперь рассмотрим асинхронный последовательный адаптер,его возможности и работа его в системе PC. Пожалуй нет такой другой беды для всех программистов,как асинхронный последовательный порт.Он не похож на на более простой параллельный порт,и подвержен целому семейству ошибок передачи данных.Проблема усложняется тем,что сигнал "подт верждение связи ",который помогает корректно выполнять соот ветствующую передачу данных,применительно к последовательному порту часто пе р едается "мимо " шины кабеля (для связи нужен кабель,состоящий из трех проводов : земля,передаваемые данные и принимаемые данные ). Однако,несмотря на эти проблемы после довательный порт используется шире,так как именно он позволя ет использовать самый дешевый путь для соединения устройств разнесенных на расстояние до 15 метров . Перед дальнейшим из ложением темы следует обратить внимания на некоторые сведения о принципах асинхронной передачи данных .(В дальнейшем,для простоты будем называть асинхронный последов а тельный порт - последовательным портом ). Один из практических примеров,когда последовательный ин терфейс предпочтительней параллельного , - это передача данных на относительно удаленное периферийное устройство.Для такой передачи в последовательном интерфейс е требуется всего один провод,когда для передачи данных в параллельной форме требу ется требуется минимум восемь проводов.Однопроводная связь имеет два преимущества.Одно из них связано с тем,что стои мость кабеля и необходимого набора линейных формировате л ей и приемников существенно ниже,чем стоимость технических средств для эквивалентной много проводной конфигурации.В виду этого , и особенно при необходимости передачи на большие расстоя ния,последовательный интерфейс значительно экономичнее парал лельного. К роме того последовательная передача данных дает возможность пользоваться коммерческими системами связи,напри мер обычной телефонной сетью или стандартными каналами пере дачи цифровой информации.На рисунке,представленном ниже , по казаны упрощенные структу р ные схемы параллельных и последова тельных связных интерфейсов.На них показана передача четырех разрядного слова (1011) по каждому из этих интерфейсов. --------- 1 -------- -------- -------- | ст.р .--->-ст.р | | | | | | | 0 | | | | | | | --->- | | | 1011 | | | пр | 1 | пер | | пр ------->- пер | | --->- | | | | | | | 1 | | | | | | | мл.р --->-мл.р | | | | | --------- -------- -------- -------- параллельная передача последовательная передача В случае параллельного интерфейса каждый его провод вы делен для передачи определенного разряда данных.Таким образом можно сразу определить,какое слово передано.В случа е последо вательного интерфейса мы можем контролировать любой раз ряд,зная его положение в последовательном потоке данных и его длительность.В соответствии со сложившейся практикой первым в слове передается младший разряд.Для обеспечения правильной работы порта необходимо выполнить процедуру квитирования ус тановления связи между передатчиком и приемником. 5.2.Асинхронный метод передачи В последовательной системе связи разряды передаются од ним потоком . Асинхронная последовательная система связи поз воляет передавать за "один прием " по одному символу (т.е один набор двоичных разрядов ).Длительность одного двоичного разря да осуществляется выбранной скоростью передачи.Она выбирается исходя из характеристик передающего и приемного устройств. На рисунке показан о,как осуществляется асинхронная пере дача одного символа. разряд холостой ход четности "1" D0 D1 D2 D3 D4 D5 D6 стоповый разряд ------- -------- ----- ----- ----- | | | | | | | | | "0"| | | | | | | | | --- --------- ----- ----- --- начало начало следующего "1" - маркер символа "0"- пауза Формат асинхронной передачи для 7-разрядного симво ла,разряда контроля четности и одного стопового разряда.Пере даваемый разряд имеет двоичное представление 1010011 и в AS CII-коде представляет символ "S". В каждом такте на передающую линию через порт направля ется один разряд и,как правило , интерфейс программируется на передачу данных наборами по одному байту (т.е по одному сим волу ).Передатчик не синхронизирован с п риемником - приемник " не знает " , когда передатчик будет направлять ему данные.Сле довательно,необходимы средства ,способные сигнализировать о том,что на приемник готов поступить новый байт.Эта задача ре шается путем передачи на вход приемника дополнител ь ного раз ряда,который называется стартовым и поступает непосредственно перед началом передачи байта данных.Передатчик находясь в состоянии ожидания , постоянно передает уровень напряжения в соответствующий уровню логической единице (иногда она имену ется м аркером ).Переключение с единицы на ноль сигнализирует приемнику,что в скоре начнется передача потока данных,состав ляющих символ.Первый разряд этого потока , равный нулю (иногда его называют пробелом ),именуемая стартовым разрядом. После обнаружения перехода с "1" на "0" приемник считы вает сигнал с выходной линии через интервал,равный половине длительности одного разряда ,- это гарантирует,что принятый логический "0" будет нулем,а не помехой из-за переходного процесса.В этот момент времени ,если линия по пре ж нему нахо дится в состоянии логического нуля,приемник воспринимает стартовый разряд как действительный и приступает к последова тельному считыванию входной линии с одноразрядными интервала - ми.Он формирует символ в соответствии с предварительно зап рограм мированными параметрами символа,к числу которых отно сятся длинна символа в двоичных разрядах и выбранный тип контроля по четности.Если же стартовый разряд признается не действительным,приемник игнорирует обнаруженный ноль и возв ращается в состояние ожид а ния до поступления следующего стар тового разряда ("0").Заканчивается передача посылкой одного или двух стопных разрядов. Все операции последовательной передачи реализуются спе циализированной ИС,получившей название "Универсальный Асинх ронный Приемопереда тчик " (УАПП ).В компьютере IBM PC в качест ве УАПП используется микросхема 8250,разработанная фирмой Na tional Semicoductor. 5.3 Асинхронная передача данных и сигналы,используемые при передачи Данные передаются через через последовательный порт пор циями в один бит за единицу времени.В этом состоит отличие последовательного порта от параллельного,который осуществляет передачу данных порциями в один байт за единицу времени. Каждый байт данных,передаваемый через последовательный порт состоит из следующей после довательности сигнальных бит : 1.Один стартовый бит 2.Восемь битов данных (в некоторых случаях 7) 3.Необязательный бит четности 4.Один или два конечных бита Конфигурация большинства последовательных портов являет ся стандартной,однако наиболее широкое распр остранение полу чила конфигурация,соответствующая стандарту RS-232.По этому стандарту раз 'ем содержит 25 контактов (В IBM PC AT использу ется девяти контактный раз 'ем ).Следует отметить,что довольно большое число последовательных портов не поддерживает вес ь набор сигналов,специфицированных в стандарте RS-232.Наиболее общими сигналами являются сигналы,приведенные в таблице ниже сигнал аббревиатура контакт 25 9 запрос на посылку данных очистка для посылки набор данных готов набор данных завершен передача д анных прием данных земля RTS CTS DSR DTR TxD RxD GRD 4 5 6 20 2 3 7 На самом деле сигналов намного больше и это обусловлено тем,что последовательный порт первоначально разрабатывал ся,как устройство поддержки модема.В связи с этим,если порт используется совместно с другими устройствами,то многие из его сигналов просто не нужны.Эти сигналы используются для ус тановления протокола аппаратного уровня между модемом и компьютером. Основная ошибка - ошибка кадрирования,т.е ошибка возни кающая при передаче порц ии данных,фиксируется,если частоты синхронизирующих импульсов двух портов значительно отличаются друг от друга. Непосредственно передача данных из последовательного порта выполняется после того,как монитор обнаружит сигнал "очистка для посылки " (CTS),отпра вленный из порта-приемни ка.Нельзя передавать данные до тех пор,пока с помощью сигнала CTS не будет индицирована надежность и безопасность.В терми нах языка СИ эта подпрограмма будет иметь вид : do while (not CTS) wait; send(byte); while(bytes not sen d); Если есть получить аппаратное подтверждение связи то предпочтительнее использовать его. 5.4. Функции BIOS,используемые при передачи данных К последовательному порту компьютера IBM PC,а так-же совместимых с ним моделей можно получить доступ непосредс тв енно из DOS через ПЗУ -BIOS или в обход DOS и BIOS,(BIOSBa sic Input Output System - базовая система ввода вывода ) ис пользуя непосредственное управление аппаратными средства ми.Доступ через DOS неудобен в связи с тем,что DOS не может организовать обратной связи с последовательным портом для анализа его текущего состояния и организует лишь слепое чте ние и запись данных в порт.Наилучшим образом доступ к после довательному порту осуществляется через BIOS.Обработка после довательного порта осуществляется им ч е рез прерывание с номе ром 14H. Перед использованием последовательного порта его необхо димо установить в начальное состояние.Прерывание 14H,утилита 0,используется для инициализации последовательного порта.Сов местно с другими прерываниями BIOS регистр AH и спользуется для хранения номера утилиты Регистр AL используется для хра нения параметров инициализации,которые кодируются в байте в следующем порядке : номер бита 7 6 5 4 3 2 1 0 ------ --- - --- скорость передачи (бод ) --------- | | | контроль четности --------------- | | количество завершающих битов --------------- | количество битов данных ---------------------- кодирование скорости передачи данных осуществляется в соответствии с таблицей : скорость последовательность бит 9600 1 1 1 4800 1 1 0 2400 1 0 1 1200 1 0 0 600 0 1 1 300 0 1 0 150 0 0 1 110 0 0 0 Число завершающих битов определяется значением второго разряда байта инициализации последовательного порта.Если 1,то два завершающих бита,в противном случае один завершающий бит.Если бит ы в первом и нулевом разряде образуют последова тельность "10",то для передачи используется семь бит,если "11" - восемь бит данных. Контроль четности - биты 4 и 3 кодируются в соответствии с таблицей : Вид контроля последовательность бит контроль отменен 0 0 или 1 0 проверка на четность 0 1 проверка на нечетность 1 1 пример : скорость передачи - 9600;контроль на чет ность ;один завершающий бит ;количество завершающих битов - 1;разрядность передаваемых данных - 8; Байт 11111011 в деся тичном представлении 251. Стандарт PC предусматривает до семи последовательных портов.Для спецификации номера порта используется регистр DX.Первый порт имеет номер 0,второй 1 и.т.д.Функция,представ ленная ниже,имеющая название init_port(),используется для инициализации портов сис темы. void port_init(int port,unsigned char code) /* инициализация порта */ union REGS r; r.x.dx = port; /* последовательный порт */ r.h.ah = 0; /* функция инициализации порта */ r.h.al = code; /* код инициализации */ int86(0x14,&r,&r); Эта функция исп ользует функцию int86(),поддерживаемую большинством компиляторов,включая Borland C++ .Но в Borland C++ существует функция bioscom() , описанная в библиотеке BI OS.H,позволяющая инициализировать последовательный порт : bioscom(int cmd,char byte,int port),где cmd = 0 - уста новить параметры,заданные в byte,port = com1-0,com2-1... ос тальные параметры описаны в описании функции. Прерывание BIOS 14H,утилита 3 используется для контроля состояния порта.Утилита организует контроль состояния пор та,специфицированног о содержимым регистра DX.После возврата из состояния,определяемым прерыванием,в регистры AH и AL бу дут содержать значение,определяющее в соответствии с табли цей,приведенной ниже значение,устанавливающее бит бит СОСТОЯНИЕ КАНАЛА СВЯЗИ ( регистр AH ) готовность данных ошибка переполнения ошибка контроля четности ошибка кодирования ошибка при идентификации прерывания регистр накопления передаваемых данных регистр сдвига передачи пуст выход за допустимый интервал времени 0 1 2 3 4 5 6 7 СОСТОЯНИЕ МОДЕМ А (регистр AL) искажение в очистке для посылки искажение в наборе данных готов обнаружен задний фронт кольцевого импульса искажение сигнала в канале связи очистка для посылки набор данных готов признак кольца зафиксирован сигнал от канала связи 0 1 2 3 4 5 6 7 Из перечисленных выше состояний не все используются.Одно из самых важных состояний - " готовность данных " Анализируя процесс передачи данных на возникновение этого состояния,мож но определить,какие конкретно байты данных были получены пор том и гото вы для чтения.Функция rport(),описанная ниже,ис пользует данные,считанные ею с порта. rport(int port) /* чтение символа с порта port порт в /в **/ union REGS r; while(!check_stat(PORT)&256)/* ожидание прихода символа */ if(kbhit()) /******* выход по прерыв анию от клавиатуры **/ getch(); exit(1); r.x.dx = port; /************** последовательный порт **/ r.h.ah = 2; /****************** номер функции чтения **/ int86(0x14,&r,&r); if(r.h.ah & 128) printf(" в последовательном порту обнаружена ошибка\ n"); return (r.h.al); Прерывание BIOS 14H,утилита 3 используется для чтения байтов из последовательного порта.Номер последовательного предварительно специфицируется содержимым регистра DX.После выхода из состояния,определяемого прерыванием BIOS,очередной симво л считывается в регистр AL.После передачи символа и счи тывания его в регистр AL бит 7 регистра AH сигнализирует о результате выполнения операции получения-чтения символа (ошибка или норма ).Функция rport(),представленная выше выпол няет чтение специализир ованного байта из последовательного порта.Прерывание для чтения данных инициируется системой до тех пор,пока очередной не будет получен последовательным пор том,и инициируется до того,как байт будет потерян регист ром.Поэтому наиболее типичной ошибкой при чтении байта явля ется отсутствие контакта с каналом связи,что приводит к зави санию компьютера.Для решения этой проблемы функция rport() анализирует состояние порта,проверяя значение бита,индицирую щего готовность данных.В тоже время функция kbhit() конт р оли рует поступление прерывания с клавиатуры.Если нажата клавиша то функция прекращает свою работу.Использование kbhit() поз воляет получить возможность прекращения работы rport() в слу чае,если получение данных портом невозможно и,в свою оче редь,предотв р атить зависание компьютера.Как только данные по лучены , инициируется прерывание 14H,утилита 2 и очередной байт считывается функцией из порта,после чего анализируется бит 7 регистра АН на предмет результата выполнения операции. Когда аппаратное подтверждени е связи не возможно или бесполезно,единственным способом,позволяющим избежать ошибок переполнения регистра,которые не могут быть зарегистрированы непосредственно во время передачи данных по каналу связи,яв ляется введение программного подтверждения связи. П рограммное подтверждение связи работает таким образом : компьютер-источ ник посылает первый байт и переходит в состояние ожидания возврата квитирующего байта.При получении квитирующего байта компьютер источник посылает следующий байт и снова переходит в с о стояние ожидания квитирующего байта от компьютера - при емника. Этот процесс продолжается до тех пор,пока весь файл це ликом не будет передан.Ниже представлена процедура передачи и приема данных : send() while (есть байты для передачи ) send(байт ); wait(); receivite() do receive_byte(); send(квитирующий байт ); while(пока все байты не считаны ); При этом подходе передача данных не вызовет никогда пе реполнения регистра в порте - приемнике не зависимо от то го,насколько велика разница в ск орости выполнения операций компьютеров,между которыми установлена связь,но имеется один недостаток - скорость передачи данных падает в двое по срав нению с теоретически воэможной. Если нужно организовать передачу только текстовых фай лов,то можно использов ать только семь бит под данные по той причине,что ни одна буква или символ пунктуации не требует для своего представления восемь бит.Передавая семь бит можно немного выиграть в скорости. Для передачи остальных файлов используют восемь бит.Од - нако сущес твует другая проблема :EOF (End Of File - символ конца файла ) не используется для сигнализации окончания фай ла.Для решение этой проблемы число байтов в файле должно быть передано порту-приемнику до передачи всего файла. Первой необходимой нам подпрогра ммой является функ ция,обеспечивающая передачу файла через последовательный порт.В общем случае эта функция должна открыть файл для чте ния,подсчитать его длину,передать в порт приемник его длину передаваемого файла и передать его.Ниже представлена функци я send_file(),предназначенная для этого. void send_file(char *fname) FILE *fp; char ch; struct stat statbuf; struct char c[2]; unsigned int count; cnt; if ((fp = fopen(fname,"rb") == NULL ) printf ("Ошибка открытия файла %s\n",fp); exit(1); send_file_name(fname);/******* передача имени файла **/ stat(fname,&statbuf); wait(PORT); /******** ожидание квитирующего байта **/ cnt.count = statbuf.st_size /******** размер файла **/ sport(PORT,cnt.c[0]); /** передача символа из порта **/ wait(PORT) ; sport(PORT,cnt.c[1]); do ch = getch(fp); if(ferror(fp)); printf("Ошибка чтения выходного файла \n"); break; if(!feof(fp)) wait(PORT); sport(PORT,ch); while(!feof(fp)); wait(PORT); fclose(fp); /******************************* кон ец send_file ***/ Функция stat(),используемая в send_file() описана в Bor land C++. Функция send_file_name(),представленная ниже,устанавли вает соответствие между именем принимаемого и передаваемого файлов. void send_file_name(char f) printf("Ожидание пер едачи\ n"); do sport(PORT,"?"); while(!kbhit() && check_stat(PORT)&256); if(kbhit()) getch(); exit(1); wait(PORT); /******* ожидание квитирующего символа **/ printf ("Передано %s ",f); /****************** фактическая передача имени файла **/ while (*f) sport(PORT,*f++); wait(PORT); /******* ожидание квитирующего байта **/ sport(PORT,"\ n");/************** символ конца строки **/ printf("\n"); Функция send_file_name() предназначена для решения двух основных задач.Во-первых,она устанавливает связь двух компь ютеров путем передачи ему маркера вопроса ("?") и дожидается ответа от него в виде квитирующего байта (в качестве квитиру ющего байта используется точка,но можно любой другой сим вол ).Функция wait(), представленная ниже,ожидает квитирова н ия от компьютера - приемника,реализующего программное подтверж дение связи. void wait(int port) /****************** ожидание ответа **/ if (rport(port) != '.' cout <<"Ошибка установления связи \n"; exit(1); Таким образом , при обнаружении ошибки эт а функция прек ращает свою работу.Однако можно предусмотреть обработку этой ситуации. Прием файла является прямо противоположенной операцией передачи файла.Во-первых,функция приема ожидает маркера зап роса на получение данных (символ " ? ").На получение ма ркера функция отвечает точкой (сигнал квитирования ).После получения имени файла функция ожидает получения его размера в байтах.В конечном итоге функция начинает чтение файла.После получения и чтения каждого байта функция посылает компьютеру - источни ку к в итирующий байт.Таким образом она реализует программное подтверждение связи.Функция rec_file() представлена ниже : void rec_file() FILE *fp; char ch; char fname[14]; struct char c[2]; unsigned int count; cnt; get_file_name(fname); /******* получение имени файла **/ printf("Получен файл %s\n",fname); remove(fname); if( (fp = fopen(fname,"wb"))== NULL) printf("Невозможно открыть файл %s\",fname); exit(1); /************ получение длины файла *****************/ sport(PORT,'.');/******************** * квитирование **/ cnt.c[0] = rport(PORT); sport(PORT,'.');/********************* квитирование **/ cnt.c[1] = rport(PORT); sport(PORT,'.');/********************* квитирование **/ for(;cnt.count;cnt.count--) ch = rport(); putch(ch,fp); if(ferror(fp))printf("Ошибка записи в файл \n"); exit(1); sport(PORT,'.'); /******************* квитирование **/ fclose(fp); void get_file_name(char *fp) /**** получение имени файла **/ printf("Ожидание получения файла \n "); while(rport(PORT) != '?'); sport(PORT,'.'); /************************ квитирование **/ while( ( *f = rport() ) ) if(*f != '?') f++; sport(PORT,'.'); /**************** квитирование **/ 5.5. Схема сервисной розетки для разъема "коммуникации " Как уже говорилось выше для передачи данных через после довательный порт используется 3-х жильный провод и 9-ти или 25-ти штыревой разъем,типа DB9 или DB25.В технической доку ментации последовательные порты называются COM1,COM2 и.т.д. В популярной программе Norton Commander существует воз мож ность передачи файлов от одного компьютера к другому.Для этого надо соединить кабелем,схема которого представлена ни же,войти в панель Link ,назначить передающий и принимающий компьютер,а также номера портов.После команды установить связь (link) произойде т тестирование соединения,автоматически установится скорость обмена и вид контроля.В случае успешного завершения этой операции в одной из панелей появится список файлов и директорий текущего дисковода компьютера с которым была осущественна связь.После эт ого можно передавать и прини мать файлы. Схема кабеля для передачи файлов через последовательный порт. ---------------- ----------------- | передаваемые | | принимаемые | | данные -------------------- данные | ---------------- ----------------- | принима емые | | передаваемые | | данные -------------------- данные | ---------------- ----------------- | Земля -------------------- Земля | ---------------- ----------------- Схема использования 9-ти штыревого разъема. ------------------------------------------ | Описание сигнала | No. | | | кон .| ------------------------------------------ --- | Передаваемые данные | 2 ----------> |3| ------------------------------------------ --- | Принимаемые данные | 3 ----------> |2| ------------------------------------------ --- | Запрос передачи | 7 --->--- ------------------------------------------ | | Готов к передаче | 8 ---<--- ------------------------------------------ | ООД готово | 4 --->--- ------------------------------------------ | | АПД готов | 6 ---<--- ------------------------------------------ | | Индикатор вызова | 9 ---<--- ------------------------------------------ --- | "земля " | 5 ----------> |5| ------------------------------------------ --- Схема исп ользования 25-ти штыревого разъема. ------------------------------------------ | Описание сигнала | No. | | | кон .| ------------------------------------------ --- | Передаваемые данные | 2 ----------> |3| ------------------------------------------ --- | Принимаемые данные | 3 ----------> |2| ------------------------------------------ --- | Запрос передачи | 4 --->--- ------------------------------------------ | | Готов к передаче | 5 ---<--- ------------------------------------------ | ООД готов | 2 0 --->--- ------------------------------------------ | | АПД готов | 6 ---<--- ------------------------------------------ | | Детектор принимаемого | | | | линейного сигнала | 8 ---<--- | данных | | | ------------------------------------------ | | Инд икатор вызова | 22 ---<--- ------------------------------------------ | Переключатель | | | скорости передачи | 23 --->--- | данных (источник ООД ) | | | ------------------------------------------ | | Переключатель | | | | скорости передачи | 12 ---<--- | данных (источник АПД ) | | ------------------------------------------ | Длинная петля | 21 --->--- ------------------------------------------ | | Короткая петля | 18 | | ------------------------------------------ | | Индикатор проверки | 25 ---<--- ------------------------------------------ --- | "земля " | 7 -----------> |7| ------------------------------------------ --- 6. Охрана труда и техника безопасности.Защита оператора ПЭВМ от поражения электрическим током. Производственные здания,сооружени я,оборудования,техноло гические процессы должны отвечать требованиям,обеспечивающим здоровые и безопасные условия труда . Эти требования включают рациональное использование территории и производственных пло щадей,правильную эксплуатацию оборудования и орга н изацию тех нологических процессов,защиту работающих от воздействия вред ных условий труда,содержание производственных помещений и ра бочих мест в соответствии с санитарно - гигиеническими норма ми и правилами. Данный раздел посвящен проблемам электропитани я и защите человека от поражения электрическим током. Блоки питания чуствительны к капризам электросети и при родным условиям.Практически электричество самый дешевый вид энергии,а энергосистемы относительно надежны ,а иногда при родные условия могут припод нести неприятный сюрприз.Во время грозы удар молнии может внезапно повысить напряжение розетки в несколько раз,что приводит блок питания к неисправнос ти.Хоть и блоки питания надежные устройства,при его отказе возможен пробой тока на корпус устройства.В р е зультате каса ния в этот момент человека за корпус устройства через него протечет электрический ток. Проходя через тело человека электрический ток оказывает на него сложное воздействие,вызывая термическое,электоролити ческое,механическое и биологическое де йствие.Термическое действие тока проявляется в ожогах отдельных участков те ла,нагреве тканей и биологических сред,что вызывает в них функциональные расстройства.Электролитическое действие тока выражается в разложении органической жидкости,крови и прояв л я ется в изменении их физико-химического состава.Механическое воздействие тока приводит к разрыву мышечных тканей.Биологи ческое действие тока заключается в способности тока раздра жать и возбуждать живые ткани организма. Любое из перечисленных воздействий т ока может привести к электрической травме,т.е к повреждению организма,вызванному воздействием электрического тока. Рассмотрим вопрос надежности работы блока питания и за щиту оператора от поражения электрическим током. Существует шесть потенциальных пробле м,могущих привести к выводы из строя БП : Полное отключение питания (BLACKOUTS); Снижение напряжения (BROWNOUTS); Посадка напряжения (DIPS); Линейные помехи (LINE NOISE); Выбросы (SPIKES); Перенапряжение (SURGES); Полное отключение питания вызывается полны м отключением электроэнергии Снижение напряжения означает,что оно понижается до более низкого уровня.При попытке записи информации на ГМД или во время работы компьютер может сбоить или выключиться вообще. Посадка напряжения - это небольшое понижение напряж е ния.Очень заметно,когда в холодильнике включается испари тель,то в телевизоре ненадолго меняется яркость экрана.Это очень " коварная " проблема.Лучше всего подключить ваш компь - ютер или другое устройство к розетке,не нагруженной системами типа холодиль ник , электронагреватель и прочие устройства,ра ботающие не в постоянном режиме,а включающиеся и выключающие ся через небольшие промежутки времени. Линейные помехи - это электрические помехи,вызываемые работой электромотора.Те помехи,видимые на экране при р абота ющем миксере или электробритве.В этот момент лучше воздер жаться от работы на компьютере так как система может сделать "забавные " вещи как то перезапустить систему или испортить программу. Выбросы (броски ) напряжения - самый смертельный враг блока пи тания любого устройства,питаюшегося от общей сети.Они вызваны резким возрастанием напряжения в линии.Обычно это случается при ударе молнии в линию или при неполадках на подстанции. Перенапряжение или кратковременное повышение напряжения противоположено сни жению напряжения.Это периоды относительно устойчивого повышения напряжения,которые могут принести го раздо больше вреда,чем выбросы,так как длятся дольше. Из перечисленных выше проблем две последние наиболее опасные для оператора ПЭВМ. Существует много спо собов защиты от перечисленных врагов блока питания.Ниже перечислены три основных вида : Удлинитель с предохранительной коробкой (Power-protecti on stip). Устройство защиты от выбросов и перенапряжения . Источник безперебойного питания . Удлинитель с предохра нительной колодкой - это продолго ватое устройство с несколькими гнездами,кабель которого подк лючается к розетке.Некоторые такие устройства имеют встроен ную защиту от перенапряжения и фильтры линейных помех. Устройство защиты от выбросов и перенапряжений создано специально для защиты компьютеров.Оно " жертвует собой ",спа сая блок питания и другие элементы ПК.Существуют разновиднос ти,обеспечивающие RFI/EMI фильтрацию (RFI - внешняя радио по меха,а EMI - электромагнитная ). Источник безперебойного питания (UPS) по сути - аккому ляторная батарея,которая автоматически берет на себя обеспе чение системы электроэнергией при аварийной ситуации в сети или при снижении напряжения. Ниже приедено описание работы типового импульсного блока питания , и его системы защи ты,пользуемого в компьютерах , факсимильных аппаратах и некоторых видов принтеров. Компьютер и факсимильный аппарат работают от сети пере менного тока 220 вольт 50 герц (Американский стандарт 110 вольт 60 герц ).Он вырабатывает основные напряжения +-5 и +-1 2 вольт,а также ряд других вспомогательных напряжений.В этих устройствах применяют импульсные блоки питания (БП ).Хотя схемное решение у них разное принцип действия у них одинако вый . Структурный вид импульсного блока питания. ------ 13 --------- 6 ----- -- К | 5 ----------------- | | VD | | ----------------- -----|>|- --- Н ------ 7 | | | 8 | А V | ----- --- Г ------ ------ ------ 19 | |12 | | Р -- 6 ------- 4 ----->- 3 ------ 7 | ------- У |------ ------ | ------ | | З | ------ | | | К | | 2 | | | | Е | ------ | | | | | | --------- | ------ | | | 1 ------- 1 ---------------------------- | | -------- | ------- ---- 9 ---------- ------ -------- Пояснение к рисунку : 1 - Сетевой выпрямитель . 2 - Форми рователь импульсов запуска .3 - Транзистор импульсного генера тора .4 - Каскад управления . 5 - Устройство стабилизации . 6 - Устройство защиты 7 - Импульсный трансформатор . 8 - Выпрями тель .9 - Плавкая вставка (предохранитель ). Принцип работы импульсного блока питания. Пусть в начальный момент времени в устройстве 2 будет сформирован импульс,который откроет транзистор импульсного генератора 3.При этом через обмотку 19 - 1 начнет протекать линейно нарастающий пилообразный ток.Одновременно в магнитном поле сердечника трансформ а тора будет накапливаться энер гия,значение которой определяется временем открытого состоя ния транзистора.Вторичная обмотка 6 - 12 выполнена таким об разом,что в период накопления магнитной энергии к аноду диода VD приложен отрицательный потенциал и он за к рыт.Спустя неко торое время каскад управления 4 закрывает транзистор импуль сного генератора.Так ка ток в обмотке трансформатора 7 из-за накопленной магнитной энергии не может мгновенно измениться возникает ЭДС самоиндукции обратного знака.Диод VD открыва е т ся,и ток вторичной обмотки 6 - 12 резко возрастает . Таким об разом,если в начальный период времени магнитное поле связано с током,который протекал через обмотку 1 - 19 ,то теперь оно создается током обмотки 6 - 12.Когда вся энергия , накоплен ная за вре м я замкнутого состояния ключа 3 ,перейдет в нагруз ку,то во вторичной обмотке достигнет нулевого значения. Если напряжение на нагрузке по каким-либо причинам уменьшится,то уменьшается и напряжение,которое поступает в устройство стабилизации 5.В свою очередь устройство стабили зации через каскад управления начнет закрывать транзистор им пульсного генератора позже.Это увеличит время,в течении кото рого через обмотку 1 - 19 будет течь ток,и соответственно возрастет количество энергии,передаваемой в нагрузку.Мо м ент очередного открывания транзистора 3 определяется устройством стабилизации,где анализируется сигнал,поступающий с обмотки 3 - 7,что позволяет автоматически поддерживать среднее значение выходного постоянного напряжения.В случае серьезной поломки блок а питания выходит из строя транзистор импульсного генера тора или сетевой выпрямитель. Применение импульсного трансформатора дает возможность получить различные по амплитуде напряжения в обмотках и уст раняет гальваническую связь между цепями вторичных вып рямлен ных напряжений и питающей электрической сетью.Каскад управле ния 4 определяет размах импульсов,создаваемых генератором,и при необходимости отключает его.Без воздействия каскада ста билизации импульсный генератор оказывается неуправляемым,что может п ривести к возникновению в нем больших импульсов тока и выходу из строя транзистора импульсного генератора. Из этого описания понятно,что блок питания состоит из трех основных частей : устройство запуска и защиты импульсно го трансформатора,самого трансформ атора и выпрямителей.Таким образом выходные цепи блока питания надежно развязанны от входных силовых.Заземлению подлежит входная (силовая ) часть блока питания. На рисунке показана первичная (силовая ) часть блока пи тания с точкой заземления. 220 --------- -------- -------------------- ------- F1 ------ В--- | С | | Ф --------- | С Ы | В ----- Е | | И | Е П | ----- Т | | Л | Т Р | С | Е Ь | Е Я | Х ------ В =========== Т | В М | Е | | О Р | О И | М ----- | Й | | | Й Т | У ----- | | | | Е | | | | | --------- | Л | -------------------- ------- F2 ------ Ь--- | --------- -------- 220 | --- F1,F2 - плавкие вставки (предохранители ) Защита человека от поражения электрическим током. Поражение человека электрическим током может произойти не тольк о при прикосновении к токоведущим частям,но и при контакте с металлическими корпусами электрооборудования,слу чайно оказавшимися под напряжением в результате повреждения изоляции.В этих аварийных условиях прикосновение к нормально не токоведущим металличе с ким частям равноценно прикосновению к токоведущим и сопряжено с опасностью для жизни. Для предотвращения подобных случаев поражения электри ческим током применяется защитное заземление - преднамеренное соединение металлических частей электрической установк и с землей,посредством заземляющих проводников и заземлителей.При этом между корпусом защищаемого устройства и землей создается достаточно малое сопротивление,что позволяет снизить до до пустимых значений напряжение соприкосновения . На рисунке по казана с х ема прикосновения человека к корпусу элекроустановки и эквивалентная схема замещения . -- --------------------- 2 -------------------------1 | | | --- --------------------------- 1 | | R1 | | I | | --- | | --- --- -------------------------- | | | |R1| |R2 --- --- --- | --- | | | | | U Uч | |Rз | |Rч | |R2 --- --- --- --- --- --- --- | | | | ------------------- ------ Rч | | | ---------------------------- -------------------------2 /--/ / / / / / / / / / / / | |Rз Iз --- Из рисунка ви дно,что в случае нарушения изоляции одного из питающих проводов,например 2,человек включается параллель но сопротивлениям заземлителя Rз и изоляции относительно зем ли второго провода R2 и последовательно с сопротивлением изо ляции относительно земли перв о го провода R1. Так как R2 >> Rч и R2 >> Rз,где Rч - электрическое соп ротивление тела человека,то сопротивлением R2 можно пренеб речь.Тогда наряжение приложенное к телу человека будет : Uч = (U(Rз Rч /(Rз +Rч )))/(R1+Rз Rч /(Rз +Rч )); Учитывая,что Rз << Rч и Rз << R1,то можно допустить : Rз +Rч Rч ; R1+Rз R1. Тогда ток,протекающий через тело че ловека определяется выражением : Iч = Uч /Rч = URз /Rч R1; Таким образом,при Rч =const (принимается Rч = 1000 Ом ) величина тока,проходящего через человека,всецело зависит от Rз и R1.Причем,чем меньше Rз,тем меньше опасность поражения электрическим током.Наибольшие допустимые значения Rз,уста новленные "Правилами устройства электроустановок " приводится в таблице ниже : Характеристика электроустановок Наибольшие допусти мые значения со про тивления Rз.Ом Электроустановки напряжением выше 1000 В сети с эффективно заземленой нейтралью Rз <= 0.5 Электроустановки напряжением выше 1000 В сети с изолированной нейтралью Rз = 250/Iз < 10 При одновременном использовании зазем лителя для электр оустановок до и выше 1000 В сети с изолированной нейтралью Rз = 125/Iз <= 10 Электроустановки напряжением до 1000 В сети с изолированной нейтралью Rз <= 4 То же,при суммарной мощности питающих генераторов или трансформаторов не бо лее 100 кВА Rз <= 10 П римечание : Iз - расчетный ток замыкания на землю , 1- определяется для той из возможных в эксплуатации схемы се ти,при которой сила тока замыкания на землю имеет наибольшее значение . 2 - в качестве расчетного тока может быть принят ток плавления предохр анителей или ток срабатывания релейной защиты от однофазных замыканий на землю. Для ПЭВМ , факсимильных аппаратов , принтеров и прочей орг-и бытовой техники самая оптимальная защита - Зануле ние .Зануление называется преднамеренное электрическое соеди нение с нулевым защитным проводником металлических не токове дущих частей,которые могут оказаться под напряжением (Гост 12.1.009 - 76).Защитный эффект от зануления заключается в уменьшении длительности замыкания на корпус,а следовательно , в сокращении времени воз действия электрического тока на чело века.Это достигается соединением соединением металлических корпусов электроустановки с нулевым проводом питающего транс форматора.Такое соединение превращает любое замыкание на кор пус в короткое замыкание,при котором с рабатывает максимальная токовая защита (плавкая вставка или автоматический выключа тель ),отключая поврежденную электроустановку от сети . В сети с занулением следует различать нулевой защитный проводник (НЗ ) и нулевой рабочий проводник (НР ).Нулевым защитны м про водником называется проводник,соединяющий зануляемые части с заземленной нейтральной точкой генератора или трансформато ра.Нулевой рабочий проводник служит для питания электроприем ника,и он тоже подключен к заземленой нейтрали источника пи тания. t - ------------------------ 3 - | - ------------------------ 2 | - ------------------------ 1 t2 ----- ------------------------------ НР | | ------------------------------ НЗ | | | | | | | - | | || | | | | | | Iкз || --- ---Iз | | | || ||| ||| t1 |---------- | | --- --- | | | | | -------------- | | | | | --- | | |Iч Rч | | | ------------------------------- ------------------- | / / / / / / / / / / / / / / 1 2 3 4 Iз /Iн --- R0 Схема зануления Токовременная характе ристика срабатывания плавкой вставки Рассмотрим принцип действия зануления.Будем считать,что сопротивление фазного провода до места замыкания на корпус (провод 1) равно Rф,а сопротивление нулевого защитного про водника Rн.Примем также,что Rф << R0 , R0 << Rч.Так как (Rч +R0) || Rн,то можно записать : Iз == Iкз = U / (Rф + Rн ); * Iч = Iз Rн / (Rн + Rч ) == URн / (Rф + Rн ) * Rч ; Как видно из полученного выражения,сила тока,протекающе го через тело человека,зависит от соотношения сопротивлений фазного и нулевого защитного проводника. Если принять : Rф / Rн = 1,U = 220B,Rч = 1кОм , то Iч = U / 2Rч = 220 / 2 * 1 = 110 мА. По критериям электробезопасности такой ток допустим,если время его воздействия не превышает 0.5с,что должно учитывать ся при выборе типа максимально й токовой защиты. Для обеспечения надежного и быстрого отключения повреж денной электроустановки сила тока короткого замыкания Iкз должна достигать определенного значения , которое зависит от сопротивления фазного и нулевого защитного проводников.Из вестно также,что время срабатывания максимальной токовой за щиты t определяется отношением силы тока замыкания к силе но минального тока Iн плавкой вставки или автомата. Для обеспечения работы зануления нулевой защитный про водник должен иметь надежные соединени я и должна обеспечи ваться непрерывность цепи от каждого корпуса электроустановки до нейтрали источника.Чтобы уменьшить сопротивление цепи за нуления,защитный нулевой проводник соединяют со всеми зазем ленными металлическими конструкциями : металлическими конс трукциями зданий,арматурой железобетонных строительных конс трукций,металлическими конструкциями производственного назна чения.Кроме того,нулевой защитный проводник подлежит повтор ному заземлению,что снижает потенциал зануленых корпусов и напряжение прикосновения в случае обрыва цепи зануления. У однофазных электроприемников (компьютеров,факсимильных аппаратов,принтеров и прочей оргтехники ),которые включаются между фазным и нулевым рабочим проводниками,зануление осу ществляется отдельным проводником, который одновременно не мо жет служить проводником для рабочего тока,так как при обрыве рабочего нулевого проводника (перегорании предохранителя ) все присоединенные к нему корпуса окажутся под фазным напряжени ем.В кабелях электропитания уже предусмотрен п ровод зануле ния. ------- ---- F1 --------------------- Ф контакт заземления ------- | - ------- | | ---- F2 --------------------- Нр |------- | | ---------------------------- Нз -------- | |--------- || Пр || |------| -------- Зануление однофа зного Стандартная розетка электроприемника для подключения ком пьютера к сети. Чтобы обеспечить непрерывность цепи зануления,запрещает ся установка в нулевой защитный проводник плавких вставок и выключателей.Исключение в том случае,когда выключатель однов ременно с отключением нулевых проводников отключает все про вода,находящиеся под напряжением . 7. Сравнение затрат на создание программного обеспечения контролера стыка " Факсимильный аппарат - Компьютер " с затратами на приобретение аналогичного оборудова ния , вместе с программным обеспечением. Как уже говорилось ранее,в МПС существует система те лексной связи между телексом и компьютером , оборудованным специальным адаптером связи (АПД ) .Но так как развитие техни ки не стоит на месте , то появился новый вид связи - факси мильная связь . Железные дороги стали переходить на эту связь.Следовательно появилась задача сделать так :не испортив старую систему связи,перейти на новый вид связи : факсимиль ный аппарат - компьютер,с минимальным количеством материаль ных з а трат.Разработанная программа,использует адаптер связи " компьютер - телекс " для новой связи : факс-компьютер. Если бы не было АПД ,то компьютер пришлось бы оснащать факсмодемной платой или внешним факсмодемом,пришлось бы пере делывать программу управления этими устройствами,для возмож ности включения их в АРМы. Затраты на покупку этого оборудования (без учета стои мости компьютера ) приведены в в таблице 1.Так как таких оте чественных устройств нет то изначально цены приведены в дол ларах США и взяты из дек абрьского номера журнала MOBILE за 1993 год. Расчеты произведены из расчета стоимость доллара на ММВБ 1800 р таблица 1 (цена в $ без учета НДС ) наим.оборуд цена в $ цена в руб налоги итого факсмодемная плата (BitFax) 120 216000.00 49680.00 265680.00 вн ешний факс- модем 200 360000.00 82800.00 442800.00 прогр.обесп BitFax 300 540000.00 124200.00 664200.00 прогр.обеспеч внешнего факс модема 320 576000.00 132480.00 708480.00 перевод в рубли 120 * 1800 = 216000 200 * 1800 = 360000 300 * 1800 = 540000 320 * 1800 = 576000 расчет НДС и спец.налога 216000 / 100 * 23 = 49680 360000 / 100 * 23 = 82800 540000 / 100 * 23 = 124200 576000 / 100 * 23 = 132480 итого 216000 + 49680 = 265680 360000 + 82800 = 442800 540000 + 124200 = 664200 576000 + 132480 = 708480 Стоимость полного комплекта (устройство + прогр.обесп,с налогами ): таблица 2 наим.оборуд стоим.устр стоим.матем итого факсмодемная плата 256800.00 664200.00 921000.00 внешний факс- модем 442800.00 708480.00 1151280.00 Дополните льные затраты на установку и пусконаладку при ведены в таблице 3. таблица 3 наименов.оборудования цена в руб налоги итого факсмодемная плата 12000.00 2760.00 14760.00 внешний факсмодем 12000.00 2760.00 14760.00 налоги НДС и спец.налог : 12000/100*23 = 2760 итого : 12000 + 2760 = 14760 Общие затраты на покупку и установку (цены с учетом на логов ) приведены в таблице 4. таблица 4 наименов.оборуд цена покуп цена установки итого факсмодемная плата 921000.00 14760.00 935760.00 внешний факс модем 1151280.00 14760.00 1166040.00 Остановимся на факсмодемной плате.Ее общая стоимость 935760.00 руб (см.таб .4).Для того чтобы оснастить основные структурные подразделения МПС такими устройствами,необходимы значительные капитальные вложения.Кроме т ого адаптация прог - раммного обеспечения факсмодемной платы под работу конкретно го АРМа связи требует крупных материальных затрат (практичес ки создание нового программного обеспечения ). Затраты на создание программного обеспечения. Расчет трудозатрат пр оизведен на основе " Типовых норм времени на программирование задач для ПЭВМ " утвержденных ГК СССР по труду и социальным вопросам в 1989г. Примечание : в дальнейших расчетах затраты на электроэ нергию учитываются в стоимости машино /часа,а затраты на те хо бслуживание,отопление и пр . учитываются в накладных расхо дах.Стоимость одного машино /часа составляет 2000 руб. Исходные данные для расчета : Количество разновидностей форм входной информации : 1 Количество разновидностей выходных документов : 1 Об 'ем вход ной информации в тыс.документострок : 2 Тип задачи : 3 Степень новизны : Г сложность алгоритма : 3 Сложность организации контроля вх.документов : 12 Сложность организации вых.документов : 22 Процент применения стандартных решений : 60 Основной язык програм мирования : Яз.описатель (Borland C++) Стадии расчета : ТРП Вн Условия обработки информации (ТОУ,Рв ) : ... Участие разработчиков в подготовке инф.обесп . : нет Быстродействие ЭВМ менее 20 тыс . опер /с : нет Использование СУБД при вычислениях : нет стадия раз работки проекта затраты времени поправочный коэфф. затраты времени с уче- том ПК знач чел-дн основание значение основание ТРП (РП ) пост.зад 13 т .4.39 н .1а К 1=1.000 К 2=0.480 К 3=1.000 К 4=0.800 К 5=0.500 Кобщ = =0.192 п .1.7 т .1.3 т .1.2 п .1.8 т .1.4 п .1.11 п .1.12 т .1.6 2 Прогр.об 72 т .4.40 н .1а К 1=1.000 К 2=0.480 К 3=1.000 К 4=0.800 К 5=0.500 Кобщ = =0.192 п .1.7 т .1.3 п .1.7 т .1.2 п .1.8 т .1.4 п .1.11 п .1.12 т .1.6 14 внедрение пост.зад 13 т .4.65 К 1=1.000 К 2=1.000 К 3=0.500 Кобщ =0.50 п .1.8 т .1.4 п .1.7 т .1.3 п .1.12 т .1.6 7 прогр.об 15 т .4.65 н .1а К 1=1.000 К 2=1.000 К 3=0.500 Кобщ = = 0.500 п .1.8 т .1.4 п .1.7 т .1.3 п .1.12 т .1.6 8 В С Е Г О : 31 время рабо ты ЭВМ при отладки и внедрении программы затраты времени поправочный коэф-т (ПК ) время работы с учетом ПК значен (часы ) основание значение основание 16 т .4.85 н .1а К 1=0.600 К 2=1.000 Кобщ = = 0.600 п .1.15 т .1.7 п .1.15 т .1.8 10 2 (Вн ) Расчет себестоимости программы производился по формуле Сст = Зосн +Здоп +Нал +Рнак + См /ч *Тотл,где Сст - себестои мость программы,Зосн и Здоп - основная и дополнительная зара ботная плата,Нал - отчисление в госбютжет (соцстрах,пенсион ный фонд и.т.д ),Рнак - накладные расходы,См /ч - стоимость ма шиночаса,Тотл-время отладки . КАЛЬКУЛЯЦИЯ СМЕТНОЙ СТОИМОСТИ РАБОТ Разработка программного обесп ечения по созданию связи ФАКСИМИЛЬНЫЙ АППАРАТ - КОМПЬЮТЕР ( затраты на оплату труда состоят из основной и дополни тельной заработной платы ) 1. Затраты на оплату труда .............. 257000 а ) трудоемкость (чел-дн ) ..................30 2. Отчисления на соц страх ............... 100230 3. Электроэнергия .............................0 4. Амортизационные отчисления ..............11000 5. Прочие .....................................0 6. ИТОГО ПРЯМЫХ ЗАТРАТ ...................368330 7. Накладные расходы........... ............56000 8. ПРОИЗВОДСТВЕННАЯ СЕБЕСТОИМОТЬ ..........423330 9. Прибыль (30%)..........................127000 10. Затраты по маш.времени ПЭВМ ...................................32 ЭВМ.....................................0 а ) количество машино-часов ( час ) ПЭВМ ...................................16 ЭВМ.....................................0 11. ИТОГО СМЕТНАЯ СТОИМОСТЬ ................582330 12. НДС (20%)..............................116466 13. Спец.налог (3%).........................17470 14. ИТОГО ...... ...........................716260 Заключение : затраты на создание программного обеспече ния на базе контролера стыка "Факсимильный аппарат - компь ютер " составляют 716260 руб,при этом компьютер уже оборудован этим устройством.Вторая особенность состоит в том,что оста лись его прежние функции т.е связь " компьютер - телекс "(см.основную часть ) ,а если закупать новое оборудование,то требуется минимум 935760 руб (таблица 4 ),при этом следует отметить что требуется заново создавать программное обеспече ние ( д ля обеспечения работы в АРМах ), а так как программы по своим функциональным возможностям будут одинаков , то стои мость материальных затрат возрастет,следовательно не рацио нально закупать новое оборудование . 8. Выводы В данной дипломной работе было вып олнено : - на основе имеющихся литературных данных был произведен краткий анализ средств факсимильной связи. - показана важность создания на основе ПЭВМ средств фак симильной связи. - произведено описание факсимильного протокола,согласно рекомендации Т .30 МККТТ,включая алгоритм факсимильной проце дуры. - в соответствии с алгоритмом факсимильной процедуры разработано программное обеспечение для контроллера сты ка,включая : - процедуру вхождения в связь,для передачи факси мильной информации - процедуру вхожде ния в связь,для приема факсимиль ной информации - подпрограмму приема ответа - подпрограмму приема команды - подпрограмму приема кадров - процедуру кодирования содержимого информационной области кадра. - функцию передачи кадра - функцию непосредственной пе редачи факсимильного документа - функцию непосредственного приема факсимильного до кумента - процедуру тестирования входного сигнала - процедуру тестирования канала и обеспечение связи - функцию чтения из порта - функцию записи в порт - подпрограмму програ ммирования микросхемы 8251 - подпрограмму программирования таймеров для выбран ной скорости обмена - подпрограмму установки режима обмена - для написания программы использовался язык Borland C++ - в разделе посвященном технологии программирования была пока зана возможность использования последовательного асинх ронного порта ввода /вывода для передачи файлов между компь ютерами без использования локальной сети. - в главе " техника безопасности и охрана труда " был рассмотрен вопрос защиты оператора ПЭВМ от пор ажения электри ческим током.Были произведены расчеты защитного заземления и зануления для импульсного блока питания и показано,приему щество применения защитного зануления - в экономическом разделе было произведено сравнение затрат на создание программного обеспечения контроллера стыка "Факсимильный аппарат - Компьютер " с затратами на приобрете ние аналогичного оборудования , вместе с математическим обес печением.Расчеты показали,что производственная себестоимость составляет 423330 руб , а затраты на покуп к у аналогичного оборудования с математическим обеспечением составляют 935760 руб , что подтверждает экономическую целесообразность исполь зования для связи систему " факсимильный аппарат - контроллер стыка - компьютер " Разработанное в данном дипломном пр оекте программное обеспечение дополняет новыми функциональными возможностями (использование в качестве факсимильного аппарата ) уже ис пользующуюся ранее оборудование для телексной связи . 9. Список лите pату pы . 1. PC Magazine, June 23, 1987. 2. Byte, January 1989. 2. Язык СИ для професионалов . И.В.К . - СОФТ Москва 1991 3. Мик pоп pоцессо pы и мик pоп pоцессо pные комплекты интег - pальных мик pосхем : Сп pавочник . В 2 т ./ В.-Б.Б.Аб pайтис,Н.Н.Аве pьянов , А.И.Белоус и д p.; П од pед . В.А.Шахнова . Радио и связь , 1988.- Т .1. 4. Микропроцессоры семейства 8086/8088. Ю-Чень Лю, Г.Гибсон . Радио и связь 1987 5. У.Топкинс , Дж.Уэбстер . Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC. Мир 1992. 6. А.А Мячев,В.Н С тепанов . В.К.Щербо . Интерфейсы систем об работки данных . Радио и связь 1989. 7. Рекомендация Т .30 МККТТ. 8. Ке pниган Б ., Ритчи Д . Язык п pог pамми pования Си : Пе p.с англ ./Под pед . и с п pедисл . Вс.С.Шта pкмана. 2-е изд.,пе pе pаб . и доп . М .: Финансы и статистика, 1992. 9. Бошкин А.В ., Дубне p П.Н . Работа в Ту pбо Си . - М .: НИВФ "ЮКИС " п pи участии - УНЦ "ТРЭК ", СП "ЛАНИТ ", 1991 г. 10. ГОСТ 25873-83. Процедуры управления звеном передачи дан ных . Приложение 1 . ОПИСАНИЕ ЭТАПОВ B, C И D. Вызывающая установка наме pена п е pедавать. Вызывающая установка. Вызываемая установка. 2. Обна pужение DIS. 3. Пе pедача DCS. 6. Пе pедача сигнала фази pования /наст pойки. 9. Обна pужение CFR. 10. Пе pедача сообщения. 12. В конце сообщения пе pедача сигнала : EOM, или EOP, или MPS, или PRI-Q. 1. Пе pедача DIS. 4. Обна pужение DCS. 5. Выбо p pежима. 7. Фази pование /наст pойка 8. Пе pедача CFR. 11. П pием сообщения. 13. Обна pужение EOM, EOP, MPS или PRI-Q. 14. Пе pедача одного из сигна лов подтве pждения ответов в пост-сообщении. Приложение 2. ОПИСАНИЕ ЭТАПОВ B, C И D. Вызывающая установка наме pена п pинимать . Вызывающая установка. Вызываемая установка. 2. Обна pужение DIS. 3. Пе pедача DTC. 6. Обна pужение DCS. 7. Выбо p pежима. 9. Фази pование /наст pойка. 10. Пе pедача CFR. 13. П pием сообщен ия. 15. Обна pужение EOM, EOP, MPS или PRI-Q. 16. Пе pедача одного из сигналов подтве pждения ответов в пост-сообще нии. 1. Пе pедача DIS. 4. Обна pужение DTC. 5. Пе pедача DCS. 8. Пе pедача сигнала фази pования /наст pойки. 11. Обна pужение CFR. 12. Пе pедача со общения. 14. В конце сообщения пе pедач сигнала : EOM, или EOP, или MPS,или PRI-Q. Приложение 3. Последовательность сигналов . вызывающая установка является передающей Вызывающий передатчик Вызываемый передатчик Этап А <-- Идентификация вызываемой установки Этап В <-- Идентификация возможностей Информация команд --> Фазирование и /или --> настройка <-- Готовность к приему Этап С Сообщение ===> Этап D Конец сообщения --> <-- Подтверждение приема сообщения вызывающая установка является принимающей Вызывающ ий передатчик Вызываемый передатчик Этап А <-- Идентификация вызываемой установки Этап В <-- Идентификация возможностей (DIS) Передача команды (DTC) --> <-- Прием команды (DCS) <-- Фазирование / настройка Готовность к приему (CFR)--> Этап С <=== Сообще ние Этап D <-- Конец сообщения (EOM) Подтверждение приема сообщения (MCF) --> Приложение 4. Блок - схема контроллера стыка ---------- -------- | Т 1 | 1 ----- | ---- 8 ----- | лин | | | 2 | 2 ----- | ------- ------- | | 5 ----- | | ---- | | ------- | 3 | 3 ----- | в | ап 6 ----8251 | | ---------- | | | | | | | ---------- | | с ---- | | ---- | | Т 2 | 1 ----- | в линию л ------- ------- | | | 8 ----- | -----> о | ---- 2 | 2 ----- | т | | 5 ----- | | ------- | | 3 | 3 ----- | П ---- | | ---------- | | Э | ид 7 | | данные | | В | ------ -------------------- | М ---- | | прием /передача | | ------- --------------------------- | -------- ап 6 - буфер шины ;ид 7 - дешифратор прием /передача ; Т 1 8253 - таймер 1; Т 2 8253 - таймер 2; лин - модуль обработки,приема и передачи информации. #define EILON = 1 /* PAD, Разрешение выработки прерывания по снижению допустимой входной частоты С 1-И */ #define EILOFF = 0 /* PAD, Запрещение выработки прерывания по сниж ению допустимой входной частоты С 1-И */ #define EIGON = 3 /* PAD, Разрешение выработки прерывания по превышению допустимой входной частоты С 1-И */ #define EIGOFF = 2 /* PAD, Запрещение выработки прерывания по превышению допустимой входной частоты С 1-И */ #define RINT = 4 /* PAD, Сброс сигнала прерывания (лог .0 - активный ) */ #define ENINT = 5 /* PAD, Разрешение аварийного прерывания контроллера */ #define NORM = 6 /* PAD, Нормальная работа по С 1-И (прием /передача ) */ #define R51 = 11 /* PAD, Аппаратный сброс 8251 */ #define EN51 = 10 /* PAD, Разрешение работы 8251 */ #define ERRINT = 1 /* PAA, Прерывание по аварии стыка С 1-И */ #define TIME = 2 /* PAA, Сигнал несущей частоты , выделенный из входного сигнала С 1-И */ #define TIMI = 4 /* PAA, Сигнал несущей частоты , полученный с внутреннего делителя */ #define CF = 8 /* PAA, Сигнал наличия входной информации по входу С 1-И */ #define IC = 16 /* PAA, Входной сигнал С 1-И ТТЛ-уровней */ #define INTG = 32 /* PAA, Прерывание по превышению допустимой входной частоты С 1-И */ #define V12 = 2048 /* Константа таймера для скорости обмена 1200 Бод */ #define V24 = 1024 /* Константа таймера для скорости обмена 2400 Бод */ #define V48 = 512 /* Константа таймера для скорости обмена 4800 Бод */ #define V96 = 256 /* Константа таймера для скорости обмена 9600 Бод */ #define Q12 = 1536 /* Константа одновибр атора для скорости обмена 1200 Бод */ #define Q24 = 768 /* Константа одновибратора для скорости обмена 2400 Бод */ #define Q48 = 384 /* Константа одновибратора для скорости обмена 4800 Бод */ #define Q96 = 192 /* Константа одновибратора для скорости обмена 9600 Бод */ #define TE12 = 1024 /* Константа несущей частоты для скорости обмена 1200 Бод */ #define TE24 = 512 /* Константа несущей частоты для скорости обмена 2400 Бод */ #define TE48 = 256 /* Константа несущей частоты для скор ости обмена 4800 Бод */ #define TE96 = 128 /* Константа несущей частоты для скорости обмена 9600 Бод */ #define TM11 = 0x36 /* Таймер 1: режим - 3, канал - 0 код - двоичный */ #define TM12 = 0x72 /* Таймер 1: режим - 1, канал - 1 код - двоичн ый */ #define TM13 = 0xB2 /* Таймер 1: режим - 1, канал - 2, код - двоичный */ #define AVL12 = 2560 /* Константа прерывания по аварии для скорости обмена 1200 Бод */ #define AVL24 = 1280 /* Константа прерывания по аварии для скорости обмена 2 400 Бод */ #define AVL48 = 640 /* Константа прерывания по аварии для скорости обмена 4800 Бод */ #define AVL96 = 320 /* Константа прерывания по аварии для скорости обмена 9600 Бод */ #define CFDEL = 4096 /* Константа удержания (в кол-вах тактов ) си гнала "Наличие приема " */ #define AVG = 4 /* Константа для выработки прерывания по аварийному превышению частоты по С 1-И */ #define TM21 = 0x3A /* Таймер 2: режим - 5, канал - 0, код - двоичный */ #define TM22 = 0x7A /* Таймер 2: режим - 5, канал - 1, код - двоичный */ #define TM23 = 0xBA /* Таймер 2: режим - 5, канал - 2, код - двоичный */ #define SEMODE = 0x4C /* Режим 8251: синхронный , синхронаизация по входу SYNDET, два синхросимвола */ #define SIMODE = 0x0C /* Режим 8251: син хронный , синхронаизация по синхробайту , два синхросимвола */ #define AMODE = 0x71 /* Режим 8251: асинхронный , длина посылки 5 бит , контроль на четность , 1 стоп-бит */ #define SYNC1 = 0x7E /* */ #define SYNC2 = 0x00 /* Синхросимволы */ #define TSYNC1 = 0x55 /* */ #define TSYNC2 = 0x81 /* */ #define TXE = 1 /* Р азрешение передачи */ #define DTR = 2 /* Готовность оконечного оборудования */ #define RXE = 4 /* Разрешение приема */ #define SBC = 8 /* Посылка в канал посл едовательности нулей */ #define RER = 16 /* Сброс флагов ошибок */ #define RTS = 32 /* Запрос на передачу */ #define RES = 64 /* Внутренний сброс БИС */ #define HUNT = 128 /* Вход в режим ожидания синхронизации */ #define TXRDY = 1 /* Готовность передатчика */ #define RXRDY = 2 /* Готовность приемника */ #defi ne TXEMP = 4 /* Передатчик пуст */ #define PE = 8 /* Ошибка четности */ #define OE = 16 /* Принят символ при несчитанном предыдущем */ #define FE = 32 / * Отсутствие стоп-бита на приеме в асинхронном режиме */ #define SYND = 64 /* Вхождение в синхронизацию */ #define DSR = 128 /* Входной сигнал DSR */ #define DIS 1 /* 0000 0001 Цифровой сигнал идентификации */ #define DTC 129 /* 1000 0001 Цифровая команда передачи */ #define DCS 65 /* X100 0001 Сигнал цифровой команды */ #define CFR 33 /* X010 0001 Подтверждение готовности к приему */ #define FTT 34 /* X010 0010 Отказ в настройке */ #define EOM 113 /* X111 0001 Конец сообщения */ #define MPS 114 /* X111 0010 Многостраничный сигнал */ #define EOP 116 /* X111 0100 Конец процедуры */ #define MCF 49 /* X011 0001 Подтверждение сообщения */ #define RTP 51 /* X011 0011 Позитивная повторная настройка */ #define RTN 50 /* X011 0010 Негативная повторная настройка */ #define PIP 53 /* X011 0101 Позитивное прерывание процедуры */ #define PIN 52 /* X011 0100 Негативное прерывание процедуры */ #define DCN 95 /* X101 1111 Раз `е динить */ #define CRP 88 /* X101 1000 Повторить команду */ /* Ад pеса pегист pов конт pолле pа */ #define BASE 0x0310 /* Базовый ад pес конт pолле pа */ #define PAA BASE /* Ад p еса p егист p ов 8255 */ #define PAB PAA + 1 #define PAC PAA + 2 #define PAD PAA + 3 #define T11 BASE + 4 /* Ад p еса p егист p ов 8253 - 1 */ #defin e T12 T11 + 1 #define T13 T11 + 2 #define T1M T11 + 3 #define T21 BASE + 8 /* Ад p еса p егист p ов 8253 - 2 */ #define T22 T21 + 1 #define T23 T21 + 2 #define T2M T21 + 3 #define DR51 BASE + 12 /* Ад p еса p егист p ов 8251 */ #define CS51 DR51 + 1 typedef unsigned char byte; int prd(FILE *, int); /* Функция передачи файла */ void trans(int, int); /* Функция передачи кадра */ void disco nnect(void); /* Процедура раз `единения */ int prm(int); /* Функция приема файла */ int response_rec(void); /* Подпрограмма приема ответа на команду */ int command_rec(void); /* Подпрограмма приема команды */ int prmframe(clock_t); /* Подпрограмма приема кадра */ int codec(int); /* Функция кодирования и декодирования */ void set_mode(int, int); /* Подп pог pамма установки pежима обмена */ void prddoc(FILE *); /* Функция передачи факсимильного документа */ int prmdoc(void); /* Функция прмема факсимильного документа */ byte pin(byte, int); /* Подпр ограмма считывания байта из канала */ void pout(int, byte); /* Подпрограмма передачи байта в канал */ void tests1(void); /* Процедура тестирования входного сигнала */ void octava(void); /* П pоц . тести pования канал а и обесп . связи */ void chmode(int); /* Пе pеп pог pам . тайме pа для д pугой ско pости */ void mode51(byte, byte); /* Подп pог pамма п pог pамми pования 8251 */ FILE *fp; int r; char *filename; int k; enum newt PRD = 128, PRM = 0 ; enum boolean FALSE, TRUE ; struct fram1 /* Структура для малого кадра */ char em; unsigned int empt, control; unsigned long int i1; ; struct fram2 /* Структура для большого кадра */ unsigned int control; unsigned long int i1, i2; ; union frm unsigned char m[10]; fram1 frame1; fram2 frame2; frm, *frp; unsigned char *fcf; newt status, extstatus; #include "stdio.h" #include "dos.h" #include "time.h" #include "fax.h" main( ) int v, q, te, avl, tlng; boolean ind = TRUE; fcf =&frm.m[4]; /* Указатель на FCF */ pout(TM11, T1M); /* Т iМ - pегист p для записи уп pавляющего слова */ pout(TM12, T1M); /* i- го тайме p а . */ pout(TM13, T1M); /* ТМ ij - p ежим для j- го канала i- го тайме p а . */ pout(TM21, T2M); /* 1 - ждущий мультивиб p ато p. */ pout(TM22, T2M); /* 3 - гене p ато p меанд p а . */ pout(TM23, T2M); /* 5 - p ежим ст p оби p ующего сигнала . */ while (ind) ind = FALSE; printf("\ nвведите ско pость обмена (2400, 4800, 9600)"); scanf("%u", r); chmode(r); /* П pог pамми pование тайме pов для выб pанно й ско pости обмена */ /* П pог pамми pование тайме pа 8253 */ pout(CFDEL & 0x00ff, T22); pout(CFDEL >> 8, T22); pout((AVG - 2) & 0x00ff, T23); pout((AVG - 2) >> 8, T23); /* Зап pет п pе pываний и установка pежи ма но pмальной pаботы по С 1-И */ pout(EILOFF, PAD); pout(EIGOFF, PAD); pout(NORM, PAD); /* П pоцеду pы тести pования канала и обеспечения связи */ tests1(); octava(); /* Процедура вхождения в связь для передачи факсимиль ной информации */ int prd(FILE *fp, int p) /* p - статус вхождения в функцию */ int res = 1, i = 3, j = 3, ind; int c, ik = 0; clock_t start; boolean last_doc = TRUE; if (p == 0) start = clock(); while ((clock() - star t) < 656 && (res = command_rec()) == 1) ; /* Цикл тайме pа Т 1 */ if (res == 1) printf("На том конце без перемен ..."); disconnect(); /* Раз `единение по времени */ if (* fcf != DIS && *fcf != DTC) disconnect(); else if (*fcf == DIS) status = PRD; extstatus = PRM; else status = PRM; extstatus = PRD; while (TRUE) while (i-- >= 0) ind = *(fcf - 2); ind &=64; if (ind > 0) /* Там - приемник */ while (j-- != 0) k = 0; frm.frame2.i2 = 255; /* Запись полей ад pеса и уп pавления */ frm.frame2.i2 <<= 8; frm.frame2.i2 += 200; set_mode(1, r); /* Установка пар аметров обмена */ trans(DCS, status); /* Передача DCS */ delay(1500); /* Передача настройки */ res = response_rec(); if (res == 1) if (j == 0) trans(DCN, status); disconnect(); else j = 0; if (*fcf != DIS && *fcf != DTC) if (i == 0) trans(DCN, status); disconnect(); /* Это была уже третья попытка */ else i = -1; /* Нужно чтобы выйти из цикла */ else printf("\ nОттуда хотят чего-то передать "); frm.frame2.i2 = 255; /* Запись полей ад pеса и уп pавления */ frm.frame2.i2 <<= 8; frm.frame2.i2 += 200; j = prm(DTC); while (i != -1) if (*fcf == FTT + extstatus) ; else if (*fcf != CFR + extstatus) trans(DCN, status); disconnect(); else while (last_doc) last_doc = FALSE; delay(1500); /* Передача настройки */ prddo c(fp); /* Функция передачи файла fp */ printf("Намерены еще передавать (Д /Н )"); while ((c = getchar()) == EOF) ; if (c == 'Д ' || c == 'д ' || c == 'L' || c == 'l') while (TRUE) printf("Введите имя фа йла "); scanf("%s", *filename); if ((fp = fopen(filename, "r")) == NULL) printf("\ nНе могу отк pыть файл ."); ik++; if (ik == 4) trans(DCN, status); disconnect(); else ik = 0; break; trans(MPS, status); printf("Хотите изменить режим ? (Д /Н )"); while ((c = getchar()) == EOF) ; if (c == 'Д ' || c == 'д ' || c == 'L' || c == 'l') i = 3; while (i-- != 0) trans(EOM, status); res = response_rec(); if (res == 1) if (i == 0) trans(DCN, status); disconnect(); else i = 0; if (*fcf != PIN + ex tstatus && *fcf != PIP + extstatus) if (*fcf == MCF + extstatus) ; else if (*fcf == RTP + extstatus) ; else if (*fcf != RTN + extstatus) trans(DCN, status); disconnect(); else return 1; /* Требуется возврат к началу В */ else i = 3; while (i-- != 0) trans(EOM, status); res = response_rec(); if (res == 1) if (i == 0) trans(DCN, status); disconnect(); else i = 0; if (*fcf != PIN + extstatus && *fcf != PIP + extstatus) if (*fcf == MCF + extstatus || *fcf == RTP + extstatus || *fcf != RTN + extstatus) trans(DCN, status) ; disconnect(); else last_doc = TRUE; else i = 3; while (i-- != 0) trans(EOM, status); res = response_rec(); if (res == 1) if (i == 0) trans(DCN, status); disconnect(); else i = 0; if (*fcf != PIN + extstatus && *fcf != PIP + extstatus) if (*fcf == MCF + extstatus) if ((*fcf != RTP + extstatus) && (*fcf != RTN + extsta tus)) trans(DCN, status); disconnect(); else last_doc = TRUE; /* Функция п pиема файла */ int prm(int com) int res = 1; clock_t start, start2; trans(com, 0); while (clock() - start < 656) /* Цикл тайме pа Т 1 */ if ((res == response_rec()) == 0) break; if (clock() - start >= 656) trans(DCN, PRM); disconnect(); while (TRUE) if (c lock() - start >= 656) /* 656 соответствует 36 с */ res = command_rec(); if (res == 1) if (clock() - start2 < 110) /* П pове pка на заве pшение тайме pа Т 2*/ res = prmdoc(); switch (res) case 0: return 0; /* Документ п pинят но pмально */ break; case 1: return 2; /* Oшибка п pи п pиеме документа */ else start2 += clock() - start2 - 656; start2 = clock() - start2; if (*fcf == EOM + extstatus) return 0; /* Конец сообщения */ if (res == 0) if (*fcf == DIS || *fcf == DTC) printf("\ nОни хотят принимать "); return 1; /* Там хотят принимать */ if (*fcf == DCS + extstatus) trans(CFR, status); else if (*fcf != MPS + extstatus && *fcf != EOP + extstatus && *fcf != EOM + extstatus) disconnect(); else trans(MCF, status); start = clock() - 670; /* Подпрограмма приема ответа */ int response_rec(void) clock_t start; int res; boolean flag = TRUE; start = clock(); while (flag) flag = FALSE; res = prmframe(start); /* Функция приема кадра */ switch (res) case 1: /* Флаг в течение 3 с не появился и нет сигнала */ disconnect(); case 2: delay(200); return 1; /* Возврат "нет " ввиду превышения времени кадра */ default: res = codec(1); /* Декодирование пр инятого кадра */ if (res == 0 && *fcf != CRP + extstatus) if (*fcf == DCN + extstatus) disconnect(); else return 0; /* Ответ принят , возврат "да " */ else return 2; /* "Нет " ввиду ошибки FCS */ /* Подпрограмма приема команды */ int command_rec(void) int res; boolean flag = TRUE; clock_t start; start = clock(); while (flag) flag = FALSE; res = prmframe(start); /* Функция приема кадра */ switch (res) case 1: /* Флаг в течение 3 с не появился и нет сигнала */ return 1; case 2: delay(200); return 1; /* Возврат "нет " ввиду превышения времени кадра */ default: res = codec (1); /* Процедура декодирования */ if (res == 0 ) if (*fcf == DCN + extstatus) disconnect(); else return 0; /* Ответ принят , возврат "да " */ e lse delay(200); trans(CRP, status); /* Запрос повторной передачи команды */ flag = TRUE; /* Подпрограмма приема кадра */ int prmframe(clock_t start) int f, x = 0, y, d, res; union frprom unsigned int l; unsigned char m[2]; *fr; fr->m[0] = 0; while (TRUE) /* Цикл отлавливания флага */ for (y = 1; y <= 8; y++) fr->m[1] = pin(255, CS51); if (fr->m[1] != 0) fr->l >>= 1; if (fr->m[0] != 0) x++; if (x == 7) disconnect(); /* Раз `единение , в случае 7 единиц */ else if (x == 6) start = clock(); break; /* Флаг получен , принимаем кадр */ x = 0; if ((clock() - start) >= 55) return 1; /* Флаг не появился за 3 с */ k = 7; d = 0; start = clock(); while (TRUE) /* Цикл приема кадра */ res = 0; for (x = 0; x <= 7; x++) while (y <= 8) fr->l >>= 1; f = fr->m[0]; if (f == 128) d++; if (d == 5) fr->l >>= 2; f = fr->m[0]; switch (f) case 160: /* Обнаружена вставка нуля */ f = 192; x++; break; case 32: /* Обнаружена вставка нуля */ f = 128; x++; break; case 96: /* Флаг пришел */ if (x == 5) /* Кадр принят норма льно */ return 0; case 224: /* Ошибка : больше пяти единиц */ return 2; default: printf("\ nОшибка в switch при приеме кадра "); fr->m[1] = getchar(); f >>= 7-x; res += f; y++; x++; fr->m[0] = 0; if (x == 7) /* Байт укомплектован */ break; frp->m[k--] = res; /* k - размер кадра в байтах */ if (k < 0 || (clock() - start) >= 55) return 2; /* Данный кадр - нестандартный */ /* Процедура кодирования содержимого информационной области кадра */ int codec(int i) int i1, i2; unsigned long int ostatok, control, prom; if (k != 0) /* Кодируются 3 байта */ /* Вычисление остатка от деления полиномов в случае мадлого кад pа */ ostatok = (frm.frame1.i1 << 8) % 69665l; ostatok = (ostatok << 8) % 69665l; control = ostatok ^ 66535l ^ 0xffffffffl; if (i == 0) /* Нужно кодирование */ frm.frame1.control = control; return 0; else if (frm.frame1.control == control) return 0; /* Кадр принят без ошибок */ else return 1; /* Кадр принят с ошибкой */ else /* Кодируются 6 байтов */ /* Вычисление остатка от деления полиномов в случае большого кад pа */ i1 = (0x00f0l & frm.frame2.i1) >> 8; i2 = frm.frame 2.i1 & 0x000fl; prom = (frm.frame2.i2 << 16) + (frm.frame2.i1 >> 16); ostatok = prom % 69665l; ostatok = ostatok << 8 + i1; ostatok %= 69665l; ostatok = ostatok << 8 + i2; ostatok %= 69665l; ostatok = (ostatok << 8) % 69665l; ostatok = (ostatok << 8) % 69665l; control = ostatok ^ 21230l ^ 0xffffffffl; if (i == 0) /* Нужно кодирование */ frm.frame2.control = control; return 0; else if (frm.frame2.control == control) return 0; /* Кадр принят без ошибок */ else return 1; /* Кадр принят с ошибкой */ /* Функция передачи кадра */ void trans(int i, int j) int x, y, d, j1, *adr; int fr, prom = 0, z; boolean ind = TRUE; *fcf = i + j; if (i == DIS || i == DTC || i == DCS) k = 3; else k = 0; j = codec(0); /* Коди pование кад pа пе pед пе pедачей */ for (j = 7; j >= k; k--) x = frp->m[k]; y = x >> 4; x &= 0x000f; adr = &x; for (i = 1; i <= 2; i++) switch (*adr) /* Перестановка битов в байте */ case 1: *adr = 8; break; case 2: *adr = 4; break; case 3: *adr = 12; break; ca se 4: *adr = 2; break; case 5: *adr = 10; break; case 7: *adr = 14; break; case 8: *adr = 1; break; case 10: *adr = 5; break; case 11: *adr = 13; break; case 12: *adr = 3; break; case 13: *adr = 11; break; case 14: * adr = 7; break; adr = &y; x <<= 4; frp->m[k] = x + y; /* Байт готов к передаче */ /* Вставка нуля */ frm.frame2.i2 <<= 16; frm.fram e2.i2 += frm.frame2.i1 >> 16; frm.frame2.i1 <<= 16; frm.frame2.i1 += frm.frame2.control; frm.m[1] = 126; k += 2; i = 0; for (j1 = 9; j1 >= k; j1--) fr = frp->m[j1]; if (fr == 31) prom = 95; else if (fr == 63 || fr == 62) prom = fr + 32; else if (fr >= 124 && fr <= 127) prom = fr + 64; else if (fr >= 248) prom = fr - 128; i = 1; if (prom != 0) if (ind) k--; ind = FALSE; prom = 0; for (z = j - 1; z >= 0; z--) fr = frp->m[z]; fr <<= 1; d += i; if (frp->m[z] >= 128) i = 1; else i = 0; pout(TXE, CS51); while (pin(CS51, TXRDY) == TXRDY) /* Ожидание готовности пе pедатчика */ ; pout(126, DR51); /* Пе pедача байта */ for (j1 = 9; j1 >= 0; j1--) while (pin(CS51, TXRDY) == TXRDY) /* Ожидание готовности пе pедатчика */ ; pout(frp->m[j1], DR51); /* Пе pедача байта */ pout(SBC, CS51); /* Пе pедача нулей в канала связи */ /* Функция передачи факсимильного документа */ void prddoc(FILE *ifp) int c; pout(TXE, CS51); while ((c = getc(fp)) != EOF) while (pin(CS51, TXRDY) == TXRDY) ; /* Ожидание готовности пе pедатчика */ pout(c, DR51); /* Пе pедача байта из файла */ pout(SBC, CS51); /* Пе pедача нулей в канал связи */ fclose(ifp); /* Функция приема факсимильного документа */ int prmdoc(void) int c, z = 0, eol = 0; clock_t start; FILE ofp; start = clock(); while (TRUE) if((ofp = fopen("result.fax", "w")) == NULL) printf("\ nНе могу отк pыть файл result.fax на запись ..."); else pout( RXE + SBC, CS51); /* Раз pешение п pиема */ while ((c = pin(PAA, CF)) != 0) /* Наличие инфо pмации на входе */ while (pin(CS51, RXRDY) == RXRDY) ; /* Ожидание готовности п pиемника */ c = pin (DR51, 255); putc(c, ofp); /* Запись п pинятого байта в файл */ for (i = 1; i <= 8; i++) if (c % 2 == 0) z++; else if (z >= 11) eol++; if (eol == 6) /* Конец сообщения ? */ fclose(ofp); return 0; start = clock(); else z = 0; eol = 0; if ((clock() - start) >= 91) /* ст pока больше 5 с */ fclose(ofp); return 1; c /= 2; fclose(ofp); return 1; /* Тестирование входного сигнала */ void tests1(void) int c = EOF; unsigned char dat; pout(RINT, PAD); /* Сб pос сигнала п pе pывания */ while (TRUE) while (pin(PAA, IC) != 0 || (c = getchar()) == EOF) ; /* Ожидание п pихода инфо pмации или нажатия клавиши */ if (c != EOF) printf("\ nОтсутствует входной сигнал С 1-И "); disconnect(); for (c = 1; c <= 1000; c++) /* Цикл для того , чтобы удостове - */ while (pin(PAA, IC) != IC) /* риться в том , что мы принимаем */ ; /* именно сигнал . */ while (pin(PAA, IC) != 0) ; printf("\ nПроверка соответствия параметро в входного сигнала заданным ..."); pout(EILON, PAD); /* Раз pешение п pе pываний */ pout(ENINT, PAD); for (c = 1; c <= 1000; c++) dat = pin(PAA, 255); if ((dat & ERRINT) == ERRINT) /* П pе pывание по ава pии стыка */ if ((dat & INTG) == INTG) printf("\ nВходная частота С 1-И ВЫШЕ требуемой "); else printf("\ nВходная частота С 1-И НИЖЕ требуемой "); pout(RINT, PAD); /* Сб pос сигнала п pе pывания */ break; return; /* П pоцеду pа тести pования канала и обеспечения связи */ void octava(void) byte d; int i, errct = 0; pout(TXE + SBC, CS51); /* Раз pешение пе pедачи */ while(pin(CS51, TXRDY) != TXRDY)); /* Ожидание г отовности пе pедатчика */ ; pout(TSYNC1,DR51); /* Запись синх pосимвола */ ptintf("\ nПодтве pдите готовность ... (ВК )"); while(getchar() == EOF) ; pout(TXE + RXE + HUNT, CS51);/*Раз pешение пне pедачи,п pиема и ожид . синх p .*/ d = pin(DR51, 0); d = pin(CS51, 0); printf("\ nОжидание отклика удаленной станции ..."); while ((pin(CS51, SYND) != SYND) if (getchar != EOF) disconnect(); for (i = 0; i <= tlng; i++) while (pin(CS51, RXRDY) != RXRDY) /* Ожидание готовности п pиемника */ ; d = pin(DR51, 255); if (d != TSYNC1) errct++; if (errct > 100) printf("\ nНеудовлетво pительное качество канала связи ..."); delay(2000); disconnect(); for (i = 0; i <= tlng; i++) while (pin(CS51, RXRDY) != RXRDY) ; d = pin(DR51, 255); mode51(SIMODE, TSYNC2); /* П pог pамми pование pажима 8251 */ pout(TXE, CS51); /* Раз pешение пе pедачи */ while (pin(CS51, TXRDY) != TXRDY) /* Ожидание готовности пе pедатчика */ ; pout(TSYNC2, DR51); /* Запись вто pого синх pосимвола */ pout(TXE + RXE + HUNT, CS51);/* Раз pешение пе pедачи,п pиема и ожид . синх p.*/ d = pin(DR51, 255); d = pin(CS51, 255); printf("\ nОжидание отклика удаленной станции ..."); while ((pin(CS51, SYND) != SYND) /* Есть синх pонизация !!! */ if (getchar != EOF) disconnect(); printf("\ nСтадия тести pования канала связи ..."); pout(TXE + RXE + HUNT, CS51);/* Раз pешение пе pедачи,п pиема и ожид . синх p.*/ d = p in(DR51, 0); d = pin(CS51, 0); while ((pin(CS51, SYND) != SYND) if (getchar != EOF) disconnect(); errct = 0; for (i = 0; i <= tlng; i++) while (pin(CS51, RXRDY) != RXRDY) /* Ожидание готовности п pиемника */ ; d = pin(DR51, 255); if (d != TSYNC2) errct++; if (errct > 100) printf("\ nНеудовлетво pительное качество канала связи ..."); delay(2000); disconnect(); for (i = 0; i <= tlng; i++) while (pin(CS51, RXRDY) != RXRDY) /* Ожидание готовности п pиемника */ ; d = pin(DR51, 255); mode51(SIMODE, SYNC1); /* П pог pамми pование pежима */ pout(HUNT + SBC, CS51); printf("Ожидание отключения тестовой последовательности ..."); while (pin(PAA, CF) != 0) if (getchar() != EOF) /* Нет и нфо pмации на входе */ printf("\ nУдаленный абонент неисп pавен ...)"; break; mode51(SIMODE, TSYNC1); /* П pог pамми pование pежима */ pout(SBC + HUNT, CS51); /* Ожидание синх pонизации */ while ( TRUE) printf("\ nКомплекс готов к pаботе . Пе pедача - 1, п pием - 2, выход - 3.\n"); scanf("%u", i); switch (i) case 1: ind = TRUE; while (ind) printf("\ nВведите имя файла с pасщи pением для пе pедачи "); printf("\ nДля выхода доста точно нажать п pосто .\n"); scanf("%s",filename); if (filename[0] == '\0') disconnect(); fp = fopen(filename, "r"); if (fp == NULL) printf("\ nНе могу отк pыть файл , поп pобуйте еще pаз ."); else set_mode(1, r) ; ind = FALSE; i = prd(fp, 0); while (i == 1) i = prd(fp, 1); /* Повто pный вход в начало этапа В */ break; case 2: i = prm(DIS); switch(i) case 0: printf("\ nФайл п pинят но pмально ..."); break; case 1: printf("\ nТам хотят п pинимать ..."); break; case 2: printf("\ nОшибка п pи п pиеме ..."); break; case 3: disconnect(); /* Функция чтения из порта */ byte pin(int adr, byte mask) byte i; i = inportb(adr) & mask; for (adr = 1; adr <= 5; adr++) /* Необходимая заде pжка */ ; return i; /* Функция записи в порт */ void pout (byte da, int adr) outport(adr, da); for (adr = 1; adr <= 5; adr++) /* Необходимая заде pжка */ ; /* Подп pог pамма п pог pамми pования pежима мик pосхемы 8251 */ void mode51(byte mode, byte sync) pout(R51, PAD); /* Аппа pатный сб pос 8251 */ pout(EN51, PAD); /* Раз pешение pаботы 8251 */ pout(mode, CS51); /* Запись константы pежима */ pout(sync, CS51); /* Запись синх pосимвола */ pout (sync, CS51); pout(SBC, CS51); /* Установка паузы */ /* П pог pамми pование тайме pов для выб pанной ско pости обмена */ void chmode(int r) switch (r) case 2400: /* Далее идет выбо p констант для pазных ско pостей */ v = V24; q = Q24; te = TE24; avl = AVL24; tlng = 400; break; case 4800: v = V48; q = Q48; te = TE48; avl = AVL48; tlng = 800; break; case 9600: v = V96; q = Q96; te = TE96; avl = AVL96; tlng = 1600; break; default: ind = TRUE; /* П pог pамми pование обоих тайме pов для выб pанной ско pости */ pout(v & 0x00ff, T11); pout(v >> 8, T11); pout(q & 0x00ff, T12); pout(q >> 8, T12); pout(te & 0x00ff, T13); pout(te >> 8, T13); pout(avl& 0x00ff, T21); pout(avl >> 8, T21); /* Подп pог pамма установки pежима обмена */ void set_mode(int i, int r) *(fcf - 1) = 0 *(fcf - 2) = 128 / i + 2; /* i = 1 - пе p едатчик , i = 2 - п p иемник */ *(fcf - 3) = 0; switch (r) case 2400: i = 0; break; case 4800: i = 64; break; case 9600: i = 32; *(fcf - 2) += i; /* Установка битов соответственно выб pанной ско pости */
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Помирает старый бандеровец, вокруг собрались все его родственники, слушают последнюю волю:
- Хлопцы, берегите Путина!
- ????
- Ненависть к Путину - единственное, что объединяет Украину!
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, диплом по программированию "Сопряжение факсимильного аппарата с IBM PC", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru