DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Моделювання послідовного інтерфейсу RS-232C

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Комп’ютерні науки
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Периферійні пристрої
Група:
КІ-4
Коротко про документ

Про що ця робота

У роботі описано структуру пристрою передавання даних для емуляції інтерфейсу RS-232C у середовищі Microsoft Visual Studio. Наведено програмну реалізацію класів CTransmitter та CGenerator для моделювання передачі бітів у лінії зв'язку.

У роботі розглядаються

  • Послідовний інтерфейс RS-232C
  • Програмна емуляція
  • Передавання даних
  • Генератор тактових імпульсів
  • Об'єктно-орієнтоване програмування в C++
  • Цифрові пристрої

Зміст і розділи

  1. Мета роботи
  2. Опис модулів
  3. Клас CTransmitter
  4. Клас CGenerator
  5. Метод proceed
  6. Висновок
Для кого:Студенти технічних спеціальностей, які вивчають комп'ютерні системи та периферійні пристрої.
Викладачі:Не вказано

Ключові поняття

RS-232CCTransmitterCGeneratorCLineтактовий імпульслінія зв'язкубібліотека C++швидкість передачіпрограмна емуляціяінтерфейс

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет “Львівська політехніка” Кафедра ЕОМ Лабораторна робота №1 з предмету “ Периферійні пристрої ” Моделювання послідовного інтерфейсу RS-232C Львів – 2005 Мета роботи: Описати структуру пристрою передавання даних для емуляції інтерфейсу RS-232C. Для засвоєння принципу роботи послідовного інтерфейсу RS-232C було запропоновано написати програмну емуляцію цього інтерфейсу. Програма має в графічному режимі відобразити процес передачі даних. Для написання програми було використано середовище розробки Microsoft Visual Studio 6.0 (C++). Для того щоб забезпечити передавання даних необхідні наступні модулі: Передавач даних (виділений в клас CTransmitter) Приймач даних (Виділений в клас CReceiver) Середовище передавання даних, або лінія зв’язку (CLine) Генератор тактових імпульсів для передавача та приймача (CGenerator) Алгоритм передачі даних буде повністю описаний в третій лабораторній роботі. Клас CTransmitter відповідає за відправку даних в лінію зв’язку. Було виділено такі методи і змінні цього класу: class CTransmitter { public: CTransmitter(int freq,CString str,CLine *line,int del/*, *LINE */); virtual ~CTransmitter(); void Proceed(); void NextBit(); int GetCLK() const {return TxGEN.GetFront();} bool Sent() const {return sent;} private: CString data; int bit; //current data bit int delay; bool sent; //if ==1 => data sent STOP CGenerator TxGEN; CLine *usedline; }; Методи класу: Процесс (void Proceed) Отримання наступного біту даних для передачі (void NextBit()) Отримання значення синхроімпульсу (int GetCLK) Змінні класу: Дані для передачі (CString Data) Поточний біт даних (int bit) Затримка видачі на лінію (int delay) Генератор тактових імпульсів (CGenerator TxGEN) Вказівник на лінію зв’язку з приймачем (CLine *usedline) Генератор тактових імпульсів винесений в окремий клас, бо ГТІ також використовується в приймачі. Розглянемо клас, що описує ГТІ: class CGenerator { public: CGenerator(); void Init(int freq); void Proceed(); virtual ~CGenerator(); int GetFront() const {return front;} private: int front; int frequency; //DIFF int i; }; Метод Init використовується для ініціалізації об’єкту CGenerator. На цьому етапі ми задаємо тривалість такту тактового генератора (int frequency). Це необхідно для того, щоб реалізувати розбіжність частот ГТІ приймача і передавача. Метод Proceed являє собою процес генератора. Його призначення – генерувати поточне значення сигналу ГТІ (int front). Ця змінна може набувати таких значень: 0, 1, 2. Найбільш нас цікавить значення 2, що відповідає додатному перепаду синхроімпульсу. Додатній перепад сигнал відповідає початку періоду синхроімпульсу (кожні frequency викликів методу proceed). Метод GetFront використовується приймачем або передавачем для отримання поточного значення сигналу свого ГТІ. Повернемось до класу CTransmitter. При створенні об’єкту цього класу викликається конструктор. В його тілі відбувається ініціалізація об’єкту ГТІ, ініціалізуються дані для передавання, відбувається прив’язка до лінії передачі даних (вказівник на об’єкт типу CLine), встановлюється значення затримки виводу результату в лінію. Метод NextBit призначений для послідовного вибирання всіх бітів для відсилання. Метод Proceed являє собою основний процес передавача. Його алгоритм роботи такий: Для достовірної передачі даних частота синхроімпульсу передавача (і приймача) в вісім разів більша швидкості передачі даних, тобто кожен інформаційний біт передається напротязі 8 тактів ГТІ. Статична змінна fcnt призначена для підрахунку тактів ГТІ. Якщо вона стане рівною 8, то це означатиме, що нам необхідно вибрати наступний біт для пересилки. Статична змінна delcnt призначена для затримки виведення в лінію (характерна особливість усіх цифрових пристроїв). В цьому методі отримується поточне значення сигналу ГТІ. Якщо цей сигнал рівний 2 (тобто відбувся додатній перепад імпульсу), то це означає, що нам необхідно збільшити значення лічильника fcnt (призначення описано вище). І, незалежно від поточного значення ГТІ, в лінію зв’язку ми записуємо передаваємий біт. Підкреслимо, що в лінію зв’язку передавач завжди записує дані, незалежно від того чи відбувся додатній перепад ГТІ. По додатному перепаду у нас може змінитись лише передаваємий біт інформації! void CTransmitter::Proceed() { static int fcnt=0; static int delcnt=0; TxGEN.Proceed(); if (fcnt==8) { if (delcnt==delay) {NextBit();fcnt=0;delcnt=0;} else delcnt++; } switch (TxGEN.GetFront()) { case 2: fcnt++; case 0: case 1: usedline->Write(bit);//Output is determined every time!!!!! break; } } Висновок: у ході виконання лабораторної роботи ми описали структуру класу CTransmitter (і CGenerator), що являє собою пристрій передавання даних.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!