Вiзуальний облiк вхiдних даних iнтерфейсу RS-232

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование




Вµ звiльняСФться, фiксуСФться помилка тайм-ауту i функцiя завершуСФться.

02h уведення символу (без апаратних переривань). АктивуСФться тiльки сигнал DTR (RTS переходить у пасивний стан), i очiкуСФться готовнiсть прийнятих даних, прийнятий символ мiститься в регiстр AL. Якщо за заданий час данi не отриманi, функцiя завершуСФться з помилкою тайм-ауту.

03h опитування стану модему i лiнii (читання регiстрiв MSR i LSR). Цю гарантовано швидку функцiю звичайно викликають перед функцiями введення/висновку щоб уникнути ризику чекання тайм-ауту.

2.5 Структури управлiння портами

У лiтературi, найчастiше, керування послiдовним i паралельним портами описуСФться на рiвнi регiстрiв цих портiв, причому приклади програм приводяться мовою Assembler. Послiдовний порт досить повiльний пристрiй, до того ж специфiчний. Тому в програмах працюючих з портами використовуються переривання. Паралельний порт швидший, але теж повiльний i не менш специфiчний. Узяти хоча б можливiсть цього порту працювати в двох напрямках.

З послiдовними i паралельними портами в Win32 працюють як з файлами, проте для правильного функцiонування необхiдно заповнити певнi структури, якi задають параметри роботи портiв. Працюючи з портами починати треба з його вiдкриття як файлу. Для цього необхiдно використовувати стандартнi функцii роботи з файлами open i fopen. При цьому необхiдно скористатися функцiСФю CreateFile. Ця функцiя описана у Win32 API. РЗi прототип виглядаСФ так:

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDistribution,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

Функцiя маСФ багато параметрiв. Розглянемо короткий опис параметрiв даноi функцii: lpFileName

Вказiвник на рядок з iмям, що вiдкриваСФться або створюваного файлу. Формат цього рядка може бути дуже складним. Зокрема можна вказувати мережевi iмена для доступу до файлiв на iнших компютерах. Можна вiдкривати логiчнi роздiли або фiзичнi диски i працювати в обхiд файловоi системи. Послiдовнi порти мають iмена "COM1", "COM2", "COM3", "COM4". Паралельнi порти називаються "LPT1", "LPT2" i так далi. Необхiдно врахувати, що якщо до порту СОМ1 пiдключена миша, Windows не дасть вiдкрити цей порт. Аналогiчно не вдасться вiдкрити LPT1 якщо пiдключено принтер.

dwDesiredAccess ЗадаСФ тип доступу до файлу. Можливе використання наступних значень:

0- Опитування атрибутiв пристрою без одержання доступу до нього.

GENERIC_READ - Файл буде зчитуватися.

GENERIC_WRITE - Файл буде записуватися.

GENERIC_READ|GENERIC_WRITE- Файл буде i зчитуватися i записуватися.

dwShareMode

ЗадаСФ параметри спiльного доступу до файлу. Комунiкацiйнi порти не можна робити роздiльними, тому даний параметр повинний дорiвнювати 0.

lpSecurityAttributes

ЗадаСФ атрибути захисту файлу. ПiдтримуСФться тiльки в Windows NT. Однак при роботi з портами повинний у будь-якому випадку дорiвнювати NULL.

dwCreationDistribution

Для комунiкацiйних портiв даний параметр завжди повинен задаватися як OPEN_EXISTING.

dwFlagsAndAttributes

ЗадаСФ атрибути створюваного файлу. Так само керуСФ рiзними режимами обробки. Для наших цiлей цей параметр повинний бути або рiвним 0, або FILE_FLAG_OVERLAPPED. Нульове значення використовуСФться при синхроннiй роботi з портом, а FILE_FLAG_OVERLAPPED при асинхронноi, або iншими словами, при фоновiй обробцi введення/виведення.

hTemplateFile

ЗадаСФ описувач файлу-шаблона. При роботi з портами завжди повинний дорiвнювати NULL.

При успiшному вiдкриттi файлу, у нашому випадку порту, функцiя повертаСФ описувач (HANDLE) файлу. При помилцi INVALID_HANDLE_VALUE.

Вiдкритий порт повинний бути закритий перед завершенням роботи програми. У Win32 закриття обСФкта по його описувача виконуСФ функцiя CloseHandle:

BOOL CloseHandle(

HANDLE hObject

);

Функцiя маСФ СФдиний параметр - описувач обСФкта, що закриваСФться. При успiшному завершеннi функцiя повертаСФ не нульове значення, при помилцi нуль.

Вiдкривши порт ми отримуСФмо його у своСФ розпорядження. Тепер з портом може працювати тiльки наша програма. Однак, перш нiж займатися введенням/виведенням, ми повиннi настроiти порт. Це стосуСФться тiльки послiдовних портiв, для яких необхiдно задати швидкiсть обмiну, параметри парностi, формат даних та iнше. Крiм того iснуСФ трохи специфiчних для Windows параметрiв. Мова йде про тайм-аути, що дозволяють контролювати як iнтервал мiж прийнятими байтами, так i загальний час прийому повiдомлення.

Основнi параметри послiдовного порту описуються структурою DCB. Тимчасовi параметри структурою COMMTIMEOUTS. Настроювання порту полягаСФ в заповненнi керуючих структур i наступному виклику функцiй настроювання.

Основну iнформацiю мiстить структура DCB:

typedef struct _DCB {

DWORD DCBlength; // sizeof(DCB)

DWORD BaudRate; // current baud rate

DWORD fBinary:1; // binary mode, no EOF check

DWORD fParity:1; // enable parity checking

DWORD fOutxCtsFlow:1; // CTS output flow control

DWORD fOutxDsrFlow:1; // DSR output flow control

DWORD fDtrControl:2; // DTR flow control type

DWORD fDsrSensitivity:1; // DSR sensitivity

DWORD fTXContinueOnXoff:1; // XOFF continues Tx

DWORD fOutX:1; // XON/XOFF out flow control

DWORD fInX:1; // XON/XOFF in flow control

DWORD fErrorChar:1; // enable error replacement

DWORD fNull:1; // enable null stripping

DWORD fRtsControl:2; // RTS flow control

DWORD fAbortOnError:1; // abort reads/writes on error

DWORD fDummy2:17; // reserved

WORD wReserved; // not currently used

WORD XonLim; // transmit XON threshold

WORD XoffLim; // transmit XOFF threshold

BYTE ByteSize; // number of bits/byte, 4-8

BYTE Parity; // 0-4=no,odd,even,mark,space

BYTE StopBits; // 0,1,2 = 1, 1.5, 2

char XonChar; // Tx and Rx XON character

char XoffChar; // Tx and Rx XOFF character

char ErrorChar; // error replacement character

char EofChar; // end of input character

char EvtChar; // received event character

WORD wReserved1; // reserved; do not use

} DCB;

Якщо уважно придиви?/p>