Програма перезапису файлу з одного комп’ютера на інший через послідовний порт

Опис існуючого програмного забезпечення, призначення та область використання. Обґрунтування проектних рішень щодо розробки ПЗ. Мікросхеми асинхронних адаптерів. Налаштування портів. Асинхронна і послідовна передача даних. Опис мови програмування.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 18.12.2013
Размер файла 862,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки, молоді та спорту України

Кіровоградський національний технічний університет

Механіко-технологічний факультет Кафедра програмного забезпечення

Курсовий проект з дисципліни "Модульне програмування"

на тему: "Програма перезапису файлу з одного комп'ютера

на інший через послідовний порт"

Виконав: студент гр. КІ-12(1)

Суржик С.А.

Керівник: Дрєєва Г.М.

Кіровоград 2013

Зміст

Перелік скорочень, символів та спеціальних символів

Вступ

1. Призначення та область використання

2. Опис існуючого програмного забезпечення. Постановка задачі

2.1 Дослідження і аналіз існуючого ПЗ

2.2 Постановка задачі

3. Опис і обґрунтування проектних рішень щодо розробки програмного забезпечення

3.1 Мікросхеми асинхронних адаптерів

3.2 Налаштування портів

3.3 Асинхронна послідовна передача даних

3.4 Стандарт RS-232

3.5 Проблеми передачі даних

3.5.1 Переповнення регістру приймача

3.6 Опис мови програмування

4. Експериментальне підтвердження вірності програмних рішень. Реалізація проекту

4.1 Ініціалізація послідовного порту

4.2 Передача та прийом даних

4.2.1 Передача даних

4.2.2 Прийом даних

4.3 Перевірка стану лінії

4.4 Технічні засоби, які використовувались

5. Інструкція користувача

Основні висновки

Список літератури

Додатки

Перелік скорочень, символів та спеціальних термінів

IBM PC (International Business Machines Personal Computer) - персональний комп'ютер фірми IBM

ОС - операційна система

ПК - персональний комп'ютер

ПЗ - програмне забезпечення

USB (Universal Serial Bus) - послідовний інтерфейс передачі даних

ISA (Industry Standart Architecture) - шина вводу-виводу IBM PC-сумісних комп'ютерів

DOS - дискова операційна система

UART (Universal Asynchronous Receiver/Transmitter) - універсальний асинхроний приймач/передавач

XT (eXtended Technology) - тип комп'ютерів

AT (Advanced Technology) - тип комп'ютерів

BIOS (Basic Input Output System) - базова система вводу/виводу

ЦП - Центральний Процесор

FIFO (First In First Out) - тип черги

DMA (Direct Memory Access) - Контролер прямого доступу до пам'яті

Вступ

Мабуть немає такої іншої загальної біди для усіх програмістів, як асинхронний послідовний порт. Несхожий на більш простий паралельний порт, послідовний порт, як ніякий інший пристрій схильний до цілої сукупності різноманітних типів помилок передачі даних.

Проблема ускладнюється тим, що сигнал "підтвердження зв'язку", який допомагає коректно виконувати відповідну передачу даних, стосовно послідовного порту часто передаються повз шини кабеля, що з'єднує послідовний порт і зовнішній пристрій. Проте, не дивлячись на ці проблеми, послідовний порт використовується частіше усього, оскільки саме він дозволяє використовувати найдешевший шлях для з'єднання двох пристроїв, які знаходяться на відстані, більшої за декілька метрів.

Актуальність теми беззаперечна, адже контролер асинхронного прийому та передачі набув широкого використання в багатьох сферах автоматизації виробництва: COM-порти використовуються для підключення різноманітних периферійних та комунікаційних пристроїв, зв'язку з технологічним обладнанням, об'єктами управління та спостереження, програматорами, внутрішньо схемними емуляторами та іншими пристроями по протоколу RS-232С. COM-порт може слугувати як двонаправлений інтерфейс, в якому є 3 програмно-керованих вихідних лінії і 4 програмно-зчитуваних вхідні лінії. Порядок їх використання визначається розробником.

Отже, тема курсового проекту є досить актуальною на даний час, адже послідовний інтерфейс набув широкого використання і основні його концепції переймають нові інтерфейси, навіть без провідникові.

1. Призначення та область використання

Програмне забезпечення для перезапису файлу з одного комп'ютера на інший через послідовний порт призначена для використання в наступних галузях:

- ПЗ може використовуватись для передачі файлів різноманітних типів між двома комп'ютерами;

- Корисне при вирішенні проблеми стиковки різних типів комп'ютерів.

Програма, створена під час виконання курсового проекту сумісна з комп'ютерами IBM PC, XT, AT або PS/2 (а також на сумісних з цими моделями) під управлінням MS-DOS. Проте ви легко зможете здійснити її перенос в інші операційні системи, включаючи OS/2 за допомогою простої компіляції.

Мета даного курсового проекту - дати основи устрою послідовного порту і роботи з ним, включаючи ініціалізацію, передачу і отримання даних, а також описати найбільш загальні помилки, що виникають під час роботи з послідовним портом.

2. Опис існуючого програмного забезпечення. Постановка задачі

2.1 Дослідження і аналіз існуючого ПЗ

Шукаючи у Всесвітній мережі програмне забезпечення подібного напрямку виявлено, що із розвитком послідовного інтерфейсу USB, COM-порт відійшов на задній план, як інтерфейс передачі даних, тому знайти програмне забезпечення для перезапису файлів з одного комп'ютера на інший було досить складно. Тим не менш, цього вдалося досягти і нижче приведені деякі програми, які можуть зацікавити користувача.

DOS Interlink - стандартна DOS-програма. Головна перевага полягає в тому, що один комп'ютер може виступати як повноцінний сервер, тобто надавати свої диски і порт принтера. На одній машині запускається програма InterSrv, іншу треба перезавантажити, не забуваючи поставити команду запуску InterLnk в файл Config.sys. Після виконаних операцій можна починати працювати. Можна надавати для користування окремі диски і порти, попередньо налаштувавши програмне забезпечення.

FastWire][ - програма, створена дуже давно для MS-DOS. Для використання програми необхідно на одному комп'ютері запустити програму розміром приблизно 30 кб, а на іншій - просту, але достатньо зручну оболонку, яку продемонстровано на рисунку 1. Тип кабелю програма визначає самостійно.

Рисунок 1 - Оболонка програми Fast Wire

Із знайденого в мережі програмного забезпечення можна зробити висновок, що більшість програм або застаріла і не може запускатись на сучасних операційних системах, або їх функціонал їх дуже і дуже обмежений.

2.2 Постановка задачі

Дослідивши існуючі матеріали, методичні вказівки до виконання курсового проекту та проконсультувавшись з викладачем, метою проекту поставлено: програмний асинхронний порт адаптер

- Детально вивчити будову контролеру послідовного інтерфейсу та функції для роботи з ним;

- Розробити програмне забезпечення відносно погодженого з керівником курсового проекту алгоритму роботи, яке б задовольняло проблеми, а саме надавати користувачу без проблем перезаписувати файли різних типів з комп'ютера на комп'ютер.

3. Опис і обґрунтування проектних рішень щодо розробки програмного забезпечення

3.1 Мікросхеми асинхронних адаптерів

Процесор взаємодіє з усіма підсистемами комп'ютера за допомогою паралельних кодів, мінімальна довжина посилки, що адресується, складає один байт.

У COM-портах перетворення паралельного коду в послідовний при передачі і зворотне перетворення при прийомі даних виконують спеціалізовані мікросхеми UART. Ці ж мікросхеми формують та оброблюють керуючі сигнали інтерфейсу. COM-порти IBM-PC XT/AT базуються на мікросхемах сумісних на рівні регістрів з UART i8250/16450/16550A. Це сімейство являє собою удосконалення попередньої моделі, спрямоване на підвищення швидкодії, пониження споживаної енергії та навантаження процесора при інтенсивному обміні. Треба зазначити деякі особливості:

- Мікросхема 8250 має помилки (поява хибних переривань), які враховано в XT BIOS;

- У мікросхемі 8250А помилки виправлені, але в результаті втрачена сумісність з BIOS. Ця мікросхема працює в деяких мікросхемах АТ, але непридатна для швидкості 9600 біт/с;

- В мікросхемі 8250В виправлені помилки 8250 та 8250А, але відновлена помилка в перериваннях, завдяки чому повернена сумісність з XT BIOS. Працює в АТ під DOS (окрім швидкості 9600 біт/с).

Мікросхеми 8250 мають невисоку швидкодію за звертаннями від системної шини. Вони не дозволяють звертатись до своїх регістрів в суміжних шинних циклах процесора - для коректної роботи з ними потрібно введення програмних затримок між звертаннями ЦП.

В комп'ютерах класу АТ застосовують UART, перерахованих нижче модифікацій:

- 16450 - швидкодіюча версія 8250 для АТ. Помилок 8250 і повної сумісності з XT BIOS немає;

- 16550 - модифікація 16450. Може використовувати канал DMA для обміну даними. Має FIFO-буфер, але некоректність його роботи не дозволяє ним скористатись;

- 16550А - має робочі 16-байтові FIFO-буфери прийому та передачі та можливість використання DMA. Саме цей тип UART повинен застосовуватись в АТ при інтенсивному обміні на швидкостях 9600 біт/с та вище. З цією мікросхемою сумісна більшість мікроконтролерів портів вводу-виводу, які входять до складу сучасних чипсетів.

Мікросхеми UART 16550A з програмної точку зору являються набором регістрів, доступ до яких визначається адресою (зміщенням адреси регістра відносно базової адреси порту) і значенням біту DLAB (біту 7 регістру DCR). В адресному просторі мікросхема займає 8 суміжних адрес.

3.2 Налаштування портів

Комп'ютер може мати до чотирьох послідовних портів COM1 - COM4 для машин класу АТ типова наявність двух портів. Керування послідовним портом поділяється на попереднє конфігурування (Setup) апаратних засобів порту та поточне (оперативне) перемикання режимів роботи за допомогою прикладного та системного ПЗ. Налаштування COM-порту залежить від його будови. Порт на платі розширення конфігурується джамперами на самій платі. Порт на системній платі налаштовується через CMOS Setup. Параметри налаштування перераховані нижче:

Базова адреса для портів COM1 - COM4 зазвичай має значення : 3F8h, 2F8h, 3E8h та 2Е 8h. При ініціалізації BIOS перевіряє наявність портів за адресами саме в такому порядку і надає виявленим портам логічні імена COM1, COM2, COM3 та COM4. Для портів COM3 та COM4 можливі альтернативні адреси 3Е 0h, 338h та 2E8h, 238h відповідно.

Лінія запиту переривань. Для COM1 та COM3 зазвичай використовується лінія IRQ4 або IRQ11, для СОМ 2 та СОМ 4 - IRQ3 або IRQ10. В принципі, номер переривання можна призначити в довільних послідовностях з базовою адресою (номером порту), але деякі програми та драйвери (наприклад, драйвери миші) налаштовані на стандартні послідовності. Кожному порту, що має потребу апаратного переривання, призначають окрему лінію, яка не співпадає з лініями запитів переривань інших пристроїв. Переривання необхідні для портів, до яких підключаються пристрої введення-виведення, UPS або модеми. При підключенні принтера або плоттера, перериваннями користуються лише багатозадачні ОС (не завжди) і цей дефіцитний ресурс ПК можна зекономити. Також, переривання непотрібні при підключенні двох комп'ютерів за допомогою нуль-модемного кабелю. Можливість поділу однієї лінії запиту декількома портами (або портом та іншими пристроями) залежить від реалізації апаратного підключення та ПЗ. При використанні портів, підключених до шини ISA, переривання, які можна моділити, зазвичай не працюють.

Канал DMA (для мікросхем UART 16450/16550/16550A, розташованих на системній платі) - дозвіл використання DMA і номер каналу. Режим DMA при роботі з COM-портами використовується рідко.

Режим роботи порту по замовчуванню (2400 біт/с, 7 біт даних, 1 стоп-біт і контроль парності), заданий при ініціалізації порту під час тесту POST-системи BIOS, може використовуватись в будь-який момент під час налаштування комунікаційних програм або консольною командою MODE COMx: з указанням параметрів (синтаксис можна дізнатись, запустивши команду MODE з ключом /?). Взагалі, контролер послідовного інтерфейсу є досить зручним пристроєм, адже при проектуванні цього інтерфейсу інженери попіклувались про стабільність передачі даних, хоча в мікросхемі є свої нюанси.

3.3 Асинхронна послідовна передача даних

Перед тим, як перейти до вивчення послідовного асинхронного порту взагалі необхідно отримати деякі відомості про принципи асинхронної передачі даних (надалі для простоти викладу матеріалу називатимемо асинхронний послідовний порт - "послідовним портом"). Дані передаються через послідовний порт порціями в один біт за одиницю часу. У цьому полягає відмінність послідовного порту від паралельного, який здійснює передачу даних порціями в один байт за одиницю часу. Передача даних називається асинхронною тому, що довжина інтервалу часу між передачею наступного байту інформації (по 1 біту за одиницю часу) не має ніякого значення. Тому основними є синхронізація і послідовність передачі ланцюжка біт, які зрештою складають байт або іншу інформаційну одиницю.

Кожен байт даних, що передається через послідовний порт, складається з наступної послідовності сигнальних бітів:

- Один стартовий біт;

- Біти даних (5, 6, 7 або 8);

- Необов'язковий біт паритету;

- Один або два стопові біти.

Між передачею кожного байту може проходити деякий час.

Час простою каналу передачі для цього режиму досить тривалий. Молодший біт порції даних, що передається має нульове, старший біт, який завершує наступну порцію даних, приймає значення одиниці. Старший біт сигналізує про початок передачі нового байту, який зчитується в канал за один цикл починаючи з молодшого біта, потім передаються біти даних та біт парності. У кінці пересилаються один або два біта, що сигналізують про кінець порції даних, прочитаних за один цикл. Завершаючи (стопові) біти визначають мінімальний час між передачею двох байтів. Кількість стопових бітів зазвичай не має великого значення, тому можна використовувати або один або два завершаючи біти залежно від того, яке їх число використовують передавач та приймач.

Біт парності, якщо він наявний в повідомленні, що перелається, використовується для контролю коректності передачі і пошуку помилок. Контроль передачі може проводитись як на парність (контрольний розряд рівний сумі по модулю двох інформаційних розрядів і загальне число одиничних розрядів парне) так і на непарність (контрольний розряд не рівний сумі по модулю двох інформаційних розрядів і загальне число одиничних розрядів непарне).

3.4 Стандарт RS-232

RS-232 - стандарт інтерфейсу обміну даними між пристроєм передачі інформації (модемом) і комп'ютером шляхом послідовної передачі даних.

Офіційна назва "Інтерфейс між кінцевим обладнанням обробки інформації і кінцевим каналом передачі даних, що використовує послідовний обмін двійковими даними". Стандарт визначає тип конектора, призначення його контактів і напруги, що використовується для з'єднання двох пристроїв таким чином, щоб вони могли посилати дані один одному. Одним із цих пристроїв може бути послідовний порт COM1 комп'ютера, а іншим обладнання каналу передачі даних, апаратура передачі даних (наприклад, модем).

Цей стандарт з'єднання устаткування був розроблений в 1969 році рядом великих промислових корпорацій і опублікований Асоціацією електронної промисловості США. Міжнародний союз електрозв'язку ITU-T використовує аналогічні рекомендації під назвою V.24 та V.28. В СРСР подібний стандарт описаний у Держстандарт 18145-81.

Стандарт не визначає швидкості передачі. Загальноприйнята швидкість для RS-232 - 9600 біт/сек на відстань до 15 м. Сучасні пристрої підтримують швидкість 115 кб/сек та більше. Існує 8-, 9-, 25- і 31-контактні варіанти роз'ємів. На даний момент найчастіше використовується 9-контактні роз'єми.

У загальному випадку протокол описує чотири інтерфейсні функції:

- визначення керуючих сигналів через інтерфейс;

- визначення формату даних користувача, переданих через інтерфейс;

- передачу тактових сигналів для синхронізації потоку даних;

- формування електричних характеристик інтерфейсу.

3.5 Проблеми передачі даних

Під час організації передачі даних за допомогою модему деякі сигнали використовуються для визначення готовності даних або визначення наступного байта посилки. Проте, коли передача даних здійснюється між двома комп'ютерами, то набір сигналів (не необхідний, але бажаний), що використовується для обміну даними, може бути обмеженим лише сигналами GRD, TxD і RxD.

Основними аргументами за використання цих трьох апаратно-реалізованих мікропрограм є значне зменшення вартості передачі даних у порівнянні з використанням п'яти або, скажімо, шести мікропрограм керування. Якщо два комп'ютера одного типу сполучені каналом передачі даних і один з них готовий передавати дані, то теоретично другий завжди готовий прийняти їх. Проте в стандарті RS-232 є прямо-таки справжнім ящиком Пандори, який містить в собі помилки, пов'язані з можливістю втрати або обходу сигналів протоколу RS-232.

Під час роботи з COM-портом задіюють відповідні апаратні переривання - їх використовують при підключенні модему, миші та інших пристроїв введення. Непрацездатність цих приладів може бути викликана некоректним налаштуванням запиту переривання. Тут можливі як конфлікти з іншими приладами, так і невідповідність номеру переривання адресі порту.

Найбільш небажаними помилками є помилки, пов'язані з переповненням регістру (overrun error).

3.5.1 Переповнення регістру приймача

Якщо для з'єднання двох послідовних портів використовується тільки три мікропрограми (cигналу), то виникає необхідність використовувати своєрідний "трюк" з портом-передавачем, припускаючи, що порт-приймач вже готовий до прийому даних. Цей "трюк" зазвичай виконується шляхом з'єднання разом 6-го,8-го і 20-го виходів 25-пінового роз'єму. У разі невдачі ця процедура дозволяє визначити помилку переповнення регістру даних з великою вірогідністю. Припустимо тепер, що більшу комп'ютер А має більшу потужність, ніж комп'ютер В. Якщо апаратне підтвердження зв'язку не використовується, а комп'ютер А починає відправку наступного байту повідомлення в комп'ютер В, в той час, як комп'ютер В виконує читання інформації з регістра введення даних, то буде зареєстрована помилка переповнення регістру (overrun error). Помилка цього типу буде також зареєстрована навіть якщо комп'ютер B має більшу потужність, ніж комп'ютер А, але програмне забезпечення комп'ютера В менш реактивне. Ця проблема виникає тому, що виходу 6, 8 і 20 сполучені і порт-передавач вважає, що порт-приймач завжди готовий до прийому даних. Очевидно, що цей шлях вирішення проблеми є досить складним.

3.6 Опис мови програмування

Серед сучасних мов програмування мова Сі є однією з найбільш поширених. Мова Сі універсальна, проте найбільш ефективне її застосування в завданнях системного програмування - розробці трансляторів, операційних систем, екранних інтерфейсів, інструментальних засобів. Мова Сі добре зарекомендувала себе ефективністю, лаконічністю запису алгоритмів, логічною стрункістю програм. У багатьох випадках програми, написані на мові Сі були однаковими за швидкістю роботи з програмами, написаними на мові асемблера, при цьому вони наочніше і простіші у супроводі.

Однією з основних переваг мови Сі вважається висока переносимість написаних на ній програм між комп'ютерами з різною архітектурою, між різними операційними середовищами. Транслятори мови Сі існують практично для усіх використовуваних нині персональних комп'ютерів.

Мова Сі має ряд істотних особливостей, які виділяють її серед інших мов програмування. Значною мірою на формування ідеології мови вплинула мета, яку ставили перед собою її творці - забезпечення системного програміста зручною інструментальною мовою, яка могла б замінити мову асемблера, В результаті з'явилася мова програмування високого рівня, яка забезпечувала легкий доступ до апаратних засобів комп'ютера.

4. Експериментальне підтвердження вірності програмних рішень. Реалізація проекту

4.1 Ініціалізація послідовного порту

Контролер послідовного інтерфейсу забезпечує дуплексний обмін даними тобто можливо одночасно приймати і передавати дані. Але всі параметри обміну (швидкість, формат знаку та ін.) для прийому та передачі повинні бути однаковими.

Для ініціалізації контролера послідовного інтерфейсу необхідно зробити наступні кроки:

- записати за адресою 3FB (2FB) керуючий байт з одиницею в біті D7;

- записати код поділювана частоти за адресами 3F8 (2F8) та 3F9 (2F9);

- записати за адресою 3FB (2FB) керуючий байт з нулем в біті D7 і з необхідним значенням інших бітів;

- записати керуючий байт за адресою 3FC;

- записати керуючий байт за адресою 3F9.

В розробленому програмному забезпеченні за ініціалізацію відповідає функція initializing(), лістинг якої наведено нижче:

int initializing(int port)

{

outportb(port+3,0x80);

printf("\n\t -> Set D7 (xbH) = 1");

outportb(port+0,0x60);

printf("\n\t -> molodshui byte dilnuka");

outportb(port+1,0x00);

printf("\n\t -> starshui byte dilnuka");

outportb(port+3,0x0b);

printf("\n\t -> Settings of sending parametrs");

outportb(port+4,0x00);

printf("\n\t -> Turning off modem");

outportb(port+1,0x00);

printf("\n\t -> Zaborona of interrupt");

printf("\n Success!\n");

}

На рисунку 2 зображено процес ініціалізації контролеру послідовного інтерфейсу. Спочатку, користувач вводить порт, за допомогою якого він хочу реалізувати передачу даних (COM1 або COM2, COM3 та COM4 не враховуються так, як зараз дуже важко знайти материнську плату з більш, ніж двома послідовними портами). Далі змінній port надається відповідне значення: якщо натиснуто клавішу 1 - то port = 3F8h, якщо 2 - port = 2F8h. Далі керування передається вищезазначеній функції initializing(), яка виконує ініціалізацію контролеру послідовного інтерфейсу за наведеним вище алгоритмом.

Рисунок 2 - Ініціалізація контролера послідовного інтерфейсу

При успішній ініціалізації керування передається функції parametrs(), яка виводить на екран користувача інформацію про налаштування контролера послідовного інтерфейсу. Дану функцію реалізовано за допомогою наступної послідовності операторів:

int parametrs(int port)

{

int check,n=0;

printf("\nParametrs of connection:");

check=inportb(port+3); printf("\n\t -> Dovzhyna slova: ");

switch(check&3)

{

case 0: printf("5"); break;

case 1: printf("6"); break;

case 2: printf("7"); break;

case 3: printf("8"); break;

}

printf(" bit;\n\t -> Kilkist stop-bitiv: ");

switch(check&4)

{

case 0: printf("1"); break;

case 4: printf("2"); break;

}

printf("\n\t -> Kontrol na parnist: ");

switch(check&8)

{

case 0: printf("Is not using;");n--; break;

case 8: printf("Using"); n++; break;

}

printf("\n\t -> Type of control: ");

switch(check&0x10)

{

case 0: printf("neparnui");break;

case 0x10: printf("patnui");n++;break;

}

printf("\n\t -> Fiksaciya parnosti: ");

switch(check&0x20)

{

case 0: printf("Is not using;"); break;

case 0x20: if(n==1) printf("bit=1;");

if(n==2) printf("bit=0;"); break;

}

printf("\n\t -> Interrupt: ");

switch(check&0x40)

{

case 0: printf("Is not using;"); break;

case 0x40: printf("Using;"); break;

}

getch();

}

Після ініціалізації послідовного порту та виведення на екран параметрів передачі, користувачу пропонується вибрати одну з двох дій: виконати прийом або передачу даних, які будуть виконуватись за ініціалізованими параметрами. Ініціалізація виконує функцію частотної синхронізації. Якби параметри приймача і передавача відрізнялися один від одного, то неможливо б було виконати передачу даних.

4.2 Передача та прийом даних

Під час передачі даних дуже важливою є злагодженість дій приймача та передавача. Відповідно до цього, при виконанні курсового проекту, було розроблено своєрідний "протокол" передачі даних.

4.2.1 Передача даних

Передачу даних з передавача на приймач реалізовує функція sendfile(). Спочатку користувач вводить назву файлу, який потрібно передати. Потім, ця назва посимвольно передається на приймач. Після передачі назви, виконується побайтна передача файлу з передавача на приймач. Передача виконується доти, доки не зустрінеться кінець файлу (feof()). Лістинг цієї функції:

int sendfile(int port)

{

int x,i;

FILE *fp;

char fname[20];

char buf;

puts("\n\t Please enter a title of file to send: ");

scanf("%s",&fname);

outportb(port,sizeof(fname));

i=0;

do

{

outportb(port,fname[i]);

i++;

}

while(i!=sizeof(fname));

buf=0;

fp=fopen(fname,"r");

do

{

fscanf(fp,"%c",buf);

outportb(port,buf);

}while(!feof(fp));

fclose(fp);

}

Для передачі даних на комп'ютер-приймач повинен бути налаштований на прийом даних.

4.2.2 Прийом даних

Для прийому даних в курсовому проекті реалізовано функцію getfile(). Особливістю цієї функції є те що, при запиті користувача на прийом, виконується цикл перевірки, який триває до тих пір, поки в біті D0 регістру 3FE (2FE) не з'явились дані для прийому. Формат регістру 3FE приведено на рисунку 3.

Рисунок 3 - Формат регістру 3FE

При появленні даних для зчитування з послідовного порту, зчитується

розмір назви файлу, сама назва та побайтно передається сам файл. Послідовність операторів, які реалізують даний алгоритм наведено нижче:

int getfile(int port)

{

FILE *fp;

char fname[20];

char buf,buf1;

int x,i;

do

{

delay(100);

}

while((inportb(port+5)&1)==0); /*Zatrumka doku ne zyavlyatsya dani dlya pruiomy*/

x=inportb(port);

i=0;

do

{

fname[i]=inportb(port);

i++;

}while(x!=i);

fp=fopen(fname,"w");

do

{

buf=inportb(port);

fprintf(fp,"%x",buf);

}while(!feof(fp));

fclose(fp);

return(1);

}

4.3 Перевірка стану лінії

Важливою функцією в програмі є функція перевірки стану лінії. Реалізовано її в функції errors(). На рисунку 4 наведено блок-схему алгоритму роботи функції errors():

Послідовність операторів, що реалізовують даний алгоритм:

int errors(int x)

{

int n=0;

if (x&0x10==0x10)

{

printf("\n Connection error!");

n=1;

}

if(x&0x8==0x8)

{

printf("\n Error of synchronization!");

n=1;

}

return(n);

}

Якщо зафіксовано розрив з'єднання або помилку синхронізації, то на екран монітора виводиться відповідне повідомлення і виконується аварійне завершення програми. Після завершення програми можна подивитись результати роботи.

4.4 Технічні засоби, які використовувались

При написанні програми використовувались такі технічні засоби:

- комп'ютер на основі процесора AMD Vision A4(tm) 64 X2 Dual Core 1.90 GHz;

- DDR III - 800 MHz 4 Gb;

- HDD 500 Gb;

- Motherboard HP-Pavilion.

Програма може працювати на всіх версіях Windows, включаючи Windows 7 (фактично на цій операційній системі ПЗ і розроблялось, за допомогою компілятора Turbo C). Для роботи програми буде достатньо слабкого комп'ютера на базі Intel Celeron та 32 Mb оперативноъ пам'яті та вбудованим контролером послідовного інтерфейсу.

В цій частині курсового проекту було розглянуто основні функціональні вузли програми та концепції її роботи.

5. Інструкція користувача

Для запуску програми потрібно двічі натиснути на ярлик програми з назвою COM_send.exe. Після запуску програми користувачу буде запропоновано вибрати COM-порт для ініціалізації. Після ініціалізації на екран монітора буде виведено детальну інформацію про параметри прийому-передачі. Далі буде запропоновано вибрати потрібну дію: натиснути 1 для передачі і 2 - для прийому. Якщо буде натиснено 1, то буде запитано про назву файлу для передачі та після ввдення назви та натиснення клавіші Enter буде запущено функцію передачі файлу на другий комп'ютер. Якщо ж буде натиснено клавішу 2, то буде запущено програму прийому, яка буде чекати доти, доки не з'являться дані для прийому. Потім буде прийнято файл і програма завершить свою роботу.

Рисунок 5 - Вікно програми

На рисунку 5 зображено вікно програми, такі результати повинні бути при правильному налаштуванні послідовного порту.

Основні висновки

Розробляючи ПЗ курсового проекту було досліджено контролер послідовного інтерфейсу. Метою курсового проекту було детальніше дослідити властивості мікросхем UART, розширити знання, отримані на заняттях в університеті та відповідно до цього написати програмне забезпечення для передачі даних з одного комп'ютера на інший.

Виконавши курсовий проект стало зрозумілим, чому адаптер послідовного інтерфейсу так широко використовувався 10-20 років тому (хоча і зараз можна зустріти хоча б один порт на сучасних системних платах). Причиною цього стала, по-перше, економність послідовного порту в порівнянні з паралельним (у послідовному дані передаються побітно по одному провіднику, а в паралельному - по 8 контактах). По-друге, послідовний інтерфейс є досить надійним (про що свідчить наявність контролю паритету, стартового та стопових бітів). По-третє, його універсальність дозволяє використовувати порт для підключення до ЕОМ різноманітних приладів: АЦП, UPS, модемів, програматорів і т. д. Контролер послідовного інтерфейсу також широко використовується для зв'язку з технологічним обладнанням. Але технології постійно розвиваються і на зміну послідовному порту приходить USB, який являється дуже перспективним інтерфейсом.

Після створення ПЗ вдалося передати файл з комп'ютера на ноутбук, що свідчить про працездатність ПЗ. Під час детальнішого вивчення системного програмування вважаю доцільним вдосконалення ПЗ для передачі файлів за допомогою різноманітних інтерфейсів.

Список літератури

1. Гук М.Ю. Аппаратные средства IBM PC. Энциклопедия. 3-е изд. - СПб.: Питер, 2006. - 172 с.: ил.

2. Кузьминов А.Ю. Интерфейс RS-232: Связь между компьютером и микроконтроллером: от DOS к Windows 98/XP. - Издательский дом "ДМК-пресс", 2006. - 320 с.

3. Фролов А., Фролов Г. Аппаратное обеспечение IBM PC. / т. 2, книга 2. - М.: Диалог - МИФИ, 1992. - 200 с.

4. Авдеев В.А. Периферийные устройства: интерфейсы, схемотехника, программирование. - М: "ДМК-пресс", 2009. - 848 с.

5. Э. Таненбаум Архитектура компьютера. 4-е изд. - СПб.: Питер, 2003. - 698

6. Jan Axelson Serial Port Complete. Programming and Circuits for RS-232 and RS-485 Links and Networks. Lakeview Research, Madison, WI 53704. 1998. - 306 с.

7. Смит Дж. Сопряжение компьютеров с внешними устройствами. Уроки реализации: Пер с англ. - М: Мир, 2000. - 266 с., ил.

8. Керниган, Брайан У., Ритчи, Деннис М. Язык программирования Си, 2-е издание. : Пер. с англ. - М: Издательский дом "Вильямс", 2009. - 304 с. : ил. - Парал. тит. англ.

Додаток А

Додаток Б. Лістинг програми СOM_kurs.c

//Програма перезапису файлу з одного комп'ютера

// на інший через послідовний порт

#include<stdio.h> /*Підключення бібліотек*/

#include<conio.h>

#include<dos.h>

int initializing(int port);

int errors(int x);

int parametrs(int port);

int getfile(int port);

int sendfile(int port);

void main()

{

int send=0,x,check,key,port;

clrscr();

printf("################################################################################");

printf("\nPlease choose a port for work:\n\t\tCOM 1: press 1\n\t\tCOM 2: press 2");

printf("\n################################################################################");

do /**Вибір користувачем порту для ініціалізації/

{

key=getch();

if(key=='1')

{

port=0x3F8;

printf("\nInitializing COM 1:");

}

if(key=='2')

{

port=0x2F8;

printf("\nInitializing COM 2:");

}

}

while(key!='1' && key!='2');

initializing(port); /*Ініціалізація вибраного порту*/

parametrs(port);/*Виведення на екран параметрів передачі*/

printf("\n\n");

do

{

check=inportb(port+5);

printf("\n-> Dlya peredachi faila natusnit 1\n-> Dly pruiomy - 2");

scanf("%d",&x);

if(x==1) send=sendfile(port);/* Передача файлу*/

else

if(x==2) send=getfile(port);/*Прийом файлу*/

else

send=errors(check); /*Перевірка з'єднання*/

delay(1000);

}while(send!=1);

printf("\n\n Enter to quit:");

while(getch()!=13);

getch();

}

int initializing(int port) /*Функція ініціалізації*/

{

outportb(port+3,0x80); /*запис 10000000*/

printf("\n\t -> Set D7 (xbH) = 1");

outportb(port+0,0x60); /**завантаження швидкості*/

printf("\n\t -> molodshui byte dilnuka");

outportb(port+1,0x00);

printf("\n\t -> starshui byte dilnuka");

outportb(port+3,0x0b);

printf("\n\t -> Settings of sending parametrs");

outportb(port+4,0x00);/*Модем не використовується*/

printf("\n\t -> Turning off modem");

outportb(port+1,0x00);

printf("\n\t -> Zaborona of interrupt");

printf("\n Success!\n");

}

int errors(int x)

{

int n=0;

if (x&0x10==0x10)/*Перевірка біту D4*/

{

printf("\n Connection error!");

n=1;

}

if(x&0x8==0x8) /*Перевірка біту D3*/

{

printf("\n Error of synchronization!");

n=1;

}

return(n);

}

int parametrs(int port) /*Параметри передачы*/

{

int check,n=0;

printf("\nParametrs of connection:");

check=inportb(port+3);

printf("\n\t -> Dovzhyna slova: ");

switch(check&3)

{

case 0: printf("5"); break;

case 1: printf("6"); break;

case 2: printf("7"); break;

case 3: printf("8"); break;

}

printf(" bit;\n\t -> Kilkist stop-bitiv: ");

switch(check&4)

{

case 0: printf("1"); break;

case 4: printf("2"); break;

}

38

printf("\n\t -> Kontrol na parnist: ");

switch(check&8)

{

case 0: printf("Is not using;");n--; break;

case 8: printf("Using"); n++; break;

}

printf("\n\t -> Type of control: ");

switch(check&0x10)

{

case 0: printf("neparnui");break;

case 0x10: printf("patnui");n++;break;

}

printf("\n\t -> Fiksaciya parnosti: ");

switch(check&0x20)

{

case 0: printf("Is not using;"); break;

case 0x20: if(n==1) printf("bit=1;");

if(n==2) printf("bit=0;"); break;

}

printf("\n\t -> Interrupt: ");

switch(check&0x40)

{

case 0: printf("Is not using;"); break;

case 0x40: printf("Using;"); break;

}

getch();

}

int getfile(int port)/*Функція прийому даних*/

{

FILE *fp; /**вказівник на файл/

char fname[20]; /*назва файлу*/

char buf,buf1;

int x,i;

do

{

delay(100);

}

while((inportb(port+5)&1)==0); /*Затримка доки не з'являться дані для прийому*/

x=inportb(port); /*прийом розмірності назви файлу*/

i=0;

do /*побітний прийом назви файлу*/

{

fname[i]=inportb(port);

i++;

}while(x!=i);

fp=fopen(fname,"w"); /**Створення файлу з прийнятою назвою/

do/*Побітний прийом даних*/

{

buf=inportb(port);

fprintf(fp,"%x",buf);

}while(!feof(fp));/*закінчення прийому при досягненні кінця файлу*/

fclose(fp);

return(1);

}

int sendfile(int port)/*Функція відправки даних*/

{

int x,i;

39

FILE *fp;

char fname[20];

char buf;

puts("\n\t Please enter a title of file to send: ");

scanf("%s",&fname);/*Зчитування назви файлу*/

outportb(port,sizeof(fname));/*Передача розміру файлу*/

i=0;

do/*Побайтна передача назви файлу*/

{

outportb(port,fname[i]);

i++;

}

while(i!=sizeof(fname));

buf=0;

fp=fopen(fname,"r");

do/*Побайтне зчитування та передача файлу*/

{

fscanf(fp,"%c",buf);

outportb(port,buf);

}while(!feof(fp));/*Закінчення передачі при досягненні кінця файлу*/

fclose(fp);

return(1);

}

Размещено на Allbest.ru

...

Подобные документы

  • Формати прийому та передачі даних через послідовний порт, його технічні характеристики, будова і принцип роботи. Характеристика протоколів послідовної передачі. Способи керування портами у WINDOWS95 та WINDOWS XP. Опис алгоритму і функціонування програми.

    дипломная работа [752,6 K], добавлен 09.06.2010

  • Аналіз предметної області, опис проекту бази даних, моделей майбутнього програмного забезпечення гри для персонального комп'ютера "Міста". Функціональні можливості програмного забезпечення, які необхідно реалізувати. Інтерфейс програмного забезпечення.

    курсовая работа [2,3 M], добавлен 02.06.2016

  • Розрахунок часових затримок для формування імпульсів у програмі передачі даних через послідовний порт мікроконтролера, а також розрахунок швидкості передачі даних через послідовний порт. Алгоритм підпрограми обробки переривань від послідовного порту.

    курсовая работа [29,9 K], добавлен 07.06.2010

  • Програма, яка приймає дані з зовнішнього пристрою через паралельний порт і використовується на комп’ютері з паралельним адаптером, операційною системою MS-DOS. Огляд існуючих пристроїв, систем, програмного забезпечення. Реалізація проекту, текст програми.

    курсовая работа [18,0 K], добавлен 08.08.2009

  • Опис інтерфейсу паралельного порту Centronics, який має 25-контактний 2-рядний роз'єм DB-25-female. Швидкість передачі даних, фірмові розширення. Розгляд BIOS для LPT-порту. Опис програмного середовища. Приклад виконання програми, блок-схема алгоритму.

    курсовая работа [1,2 M], добавлен 23.04.2014

  • Порядок використання комп'ютера для автоматичного перекладу текстів, умови доцільності використання спеціального програмного забезпечення. Характеристика програми PROMT, її можливості та опис інтерфейсу, принцип та правила роботи. Переклад Web-сторінок.

    реферат [14,9 K], добавлен 21.09.2009

  • Створення інформаційної системи для спортивного магазину харчування. Обґрунтування вибору мови програмування. Текстуальний опис алгоритму. Проектування бази даних. Комп'ютеризація торгівельних закладів, отримання необхідних даних в автоматичному режимі.

    дипломная работа [1,3 M], добавлен 12.05.2015

  • Створення програми для роботи з веб-камерою з автоматичним визначенням встановленої камери на комп'ютері. Характеристика апаратної конфігурації програми. Опис мови і середовища програмування. Розробка алгоритму, інструкції для програміста та користувача.

    курсовая работа [1,2 M], добавлен 26.07.2013

  • Дослідження класифікації автоматизованих інформаційних систем. Обґрунтування вибору мови і системи програмування. Програмне забезпечення та опис компонентів середовища. Інтерфейс програмного комплексу. Розрахунок повної собівартості програмного продукту.

    дипломная работа [584,1 K], добавлен 26.06.2015

  • Основні характеристики мови "С ++". Сучасне системне та прикладне програмне забезпечення. Середовище програмування Borland Builder С++. Перелік та опис програмного забезпечення, яке використовується в обчислювальному центрі. Розробка програми Шифр Цезаря.

    отчет по практике [307,5 K], добавлен 28.09.2015

  • Модель аналізу-синтезу компіляції. Формальний опис вхідної мови програмування. Вибір технології програмування, проектування таблиць транслятора та вибір структур даних. Опис програми реалізації лексичного аналізатора. Розробка дерев граматичного розбору.

    курсовая работа [75,8 K], добавлен 26.12.2009

  • Класифікація програмного забезпечення, системне та прикладне забезпечення, інструментальні системи. Програмна складова комп'ютерної системи, опис алгоритмів розв'язання певної задачі. Класифікація операційних систем, основні групи прикладних програм.

    презентация [945,0 K], добавлен 01.04.2013

  • Проектування бази даних (БД). Проектування логічної моделі БД. Реалізація БД та створення таблиць. Встановлення зв’язків, вибір мови та середовища програмування. Опис функціональних елементів та реалізація програми. Опис та тестовий приклад програми.

    дипломная работа [1,6 M], добавлен 07.01.2017

  • Роль комп'ютерної техніки в різних сферах сучасного суспільства, необхідність його комп’ютеризації. Поняття про програмне забезпечення, складові, коротка характеристика його основних типів. Опис, призначення і можливості електронних таблиць MS Excel.

    реферат [2,3 M], добавлен 10.10.2009

  • Організація часових характеристик мікросхеми AT24C32 з висновком щодо придатності LPT-порту. Порядок розробки алгоритмів та текстів підпрограм виконання команд читання та запису даних. Опис та блок-схеми програми та підпрограм, що обслуговує пристрій.

    курсовая работа [233,5 K], добавлен 16.06.2009

  • Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.

    курсовая работа [22,2 K], добавлен 08.08.2009

  • Прості та умовні оператори мови С++. Робота з двовимірними масивами. Пошук та сортування даних. Робота з файлами та з динамічними структурами даних. Опис мови програмування Delphi. Складення програми до розроблених алгоритмів. Організація циклів.

    отчет по практике [4,3 M], добавлен 28.08.2014

  • Цілі і завдання розробки, її предмет і актуальність. Опис предметної області, цілі і завдання програми. Вибір методу рішення, опис процесу програмування і вибір інструментальних засобів для реалізації проекту, опис вхідних та вихідних даних, інтерфейсу.

    курсовая работа [327,1 K], добавлен 01.09.2014

  • Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.

    курсовая работа [3,4 M], добавлен 17.11.2014

  • Мови програмування. Алгоритм програми, функціональні обмеження на застосування. Опис логічної структури. Типи комп'ютерів, що використовуються при роботі програми. Виклик і завантаження. Організація, характер та попередня підготовка вихідних даних.

    курсовая работа [95,0 K], добавлен 01.04.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.