📚 Hub Books: Онлайн-чтение книгРазная литератураИнтернет-журнал "Домашняя лаборатория", 2007 №8 - Журнал «Домашняя лаборатория»

Интернет-журнал "Домашняя лаборатория", 2007 №8 - Журнал «Домашняя лаборатория»

Шрифт:

-
+

Интервал:

-
+
1 ... 317 318 319 320 321 322 323 324 325 ... 463
Перейти на страницу:
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 flnX: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;

Если внимательно присмотреться, то можно заметить, что эта структура содержит почти всю управляющую информацию, которая в реальности располагается в различных регистрах последовательного порта. Теперь разберемся, что означает каждое из полей самой важной структуры:

∙ DCBIength

Задает длину, в байтах, структуры DCB. Используется для контроля корректности структуры при передаче ее адреса в функции настройки порта.

∙ Baud Rate

Скорость передачи данных. Возможно указание следующих констант: CBR_110, CBR_ 300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000. Как видно, эти константы соответствуют всем стандартным скоростям обмена. На самом деле, это поле содержит числовое значение скорости передачи, а константы просто являются символическими именами. Поэтому можно указывать, например, и CBR_9600, и просто 9600. Однако рекомендуется указывать символические константы.

∙ fBinary

Включает двоичный режим обмена. Win32 не поддерживает недвоичный режим, поэтому данное поле всегда должно быть равно 1, или логической константе TRUE (что предпочтительней). В Windows 3.1, если это поле было равно FALSE, включался текстовый режим обмена. В этом режиме поступивший на вход порта символ, заданный полем EofChar свидетельствовал о конце принимаемых данных.

∙ fParity

Включает режим контроля четности. Если это поле равно TRUE, то выполняется проверка четности, при ошибке, в вызывающую программу, выдается соответствующий код завершения.

∙ fOutxCtsFlow

Включает режим слежения за сигналом CTS. Если это поле равно TRUE и сигнал CTS сброшен, передача данных приостанавливается до установки сигнала CTS. Это позволяет подключенному к компьютеру прибору приостановить поток передаваемой в него информации, если он не успевает ее обрабатывать.

∙ fOutxDsrFlow

Включает режим слежения за сигналом DSR. Если это поле равно TRUE и сигнал DSR сброшен, передача данных прекращается до установки сигнала DSR.

∙ fDtrControl

Задает режим управления обменом для сигнала DTR. Это поле может принимать следующие значения:

• DTR_CONTROL_DISABLE — Запрещает использование линии DTR

• DTR_CONTROL_ENABLE — Разрешает использование линии DTR

• DTR_CONTROL_HANDSHAKE — Разрешает использование рукопожатия для выхода из ошибочных ситуаций. Этот режим используется, в частности, модемами при восстановлении в ситуации потери связи.

∙ fDsrSensitivity

Задает чувствительность коммуникационного драйвера к состоянию линии DSR. Если это поле равно TRUE, то все принимаемые данные игнорируются драйвером (коммуникационный драйвер расположен в операционной системе) за исключением тех, которые принимаются при установленном сигнале DSR.

∙ fTXContinueOnXoff

Задает, прекращается ли передача при переполнении приемного буфера и передаче драйвером символа XoffChar. Если это поле равно TRUE, то передача продолжается, несмотря на то, что приемный буфер содержит более XoffLim символов и близок к переполнению, а драйвер передал символ XoffChar для приостановления потока принимаемых данных. Если поле равно FALSE, то передача не будет продолжена до тех пор, пока в приемном буфере не останется меньше XonLim символов и драйвер не передаст символ XonChar для возобновления потока принимаемых данных. Таким образом, это поле вводит некую зависимость между управлением входным и выходным потоками информации.

∙ fOutX

Задает использование XON/XOFF управления потоком при передаче. Если это поле равно TRUE, то передача останавливается при приеме символа XoffChar, и возобновляется при приеме символа XonChar.

∙ flnX

Задает использование XON/XOFF управления потоком при приеме. Если это поле равно TRUE, то драйвер передает символ XoffChar, когда в приемном буфере находится более XoffLim, и XonChar, когда в приемном буфере остается менее XonLim символов.

∙ fErrorChar

Указывает на необходимость замены символов с ошибкой четности на символ, задаваемый полем ErrorChar. Если это поле равно TRUE, и поле fParity равно TRUE, то выполняется замена.

∙ fNull

Определяет действии, е выполняемое при приеме нулевого байта. Если это поле TRUE, то нулевые байты отбрасываются при передаче.

∙ fRtsControl

Задает режим управления потоком для сигнала RTS. Если это поле равно 0, то по умолчанию подразумевается RTSCONTROLHANDSHAKE. Поле может принимать одно из следующих значений:

• RTS_CONTROL_DISABLE — Запрещает использование линии RTS

• RTS_CONTROL_ENABLE — Разрешает использование линии RTS

• RTS_CONTROL_HANDSHAKE — Разрешает использование RTS рукопожатия. Драйвер устанавливает сигнал RTS когда приемный буфер заполнен менее, чем на половину, и сбрасывает, когда буфер заполняется более чем на три четверти.

• RTS_CONTROL_TOGGLE — Задает, что сигнал RTS установлен, когда есть данные для пе редачи. Когда все символы из передающего буфера переданы, сигнал сбрасывается.

∙ fAbortOn Error

Задает игнорирование всех операций чтения/записи при возникновении ошибки. Если это поле равно TRUE, драйвер прекращает все операции чтения/записи для порта при возникновении ошибки. Продолжать работать с портом можно будет только после устранения причины ошибки и вызова функции ClearCommError.

∙ fDummy2

Зарезервировано и не используется.

∙ wReserved

Не используется, должно быть установлено в 0.

∙ XonLim

Задает минимальное число символов в приемном буфере перед посылкой символа XON.

∙ XoffLim

Определяет максимальное количество байт в приемном буфере перед посылкой символа XOFF. Максимально допустимое количество байт в буфере вычисляется вычитанием данного значения из размера приемного буфера в байтах.

∙ ByteSize

Определяет число информационных бит в передаваемых и принимаемых байтах.

∙ Parity

Определяет выбор схемы контроля четности. Данное

1 ... 317 318 319 320 321 322 323 324 325 ... 463
Перейти на страницу:

Комментарии

Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!

Никто еще не прокомментировал. Хотите быть первым, кто выскажется?