Работа с COM и LPT в Win32. - [7]
Рассмотренные структуры и функции позволяют программировать порт на достаточно низком уровне. Их, в большинстве случаев, более чем достаточно даже для тонкой настройки порта. Однако бывают и исключения. Например, под именем COM1 может скрываться вовсе не привычный порт RS-232, а какая-нибудь экзотика. Или порт может не позволять задавать скорость более 9600.
Исчерпывающая информация о возможностях коммуникационного устройства и драйвера содержится в структуре COMMPROP:
>typedef struct _COMMPROP {
> WORD wPacketLength; // packet size, in bytes
> WORD wPacketVersion; // packet version
> DWORD dwServiceMask; // services implemented
> DWORD dwReserved1; // reserved
> DWORD dwMaxTxQueue; // max Tx bufsize, in bytes
> DWORD dwMaxRxQueue; // max Rx bufsize, in bytes
> DWORD dwMaxBaud; // max baud rate, in bps
> DWORD dwProvSubType; // specific provider type
> DWORD dwProvCapabilities; // capabilities supported
> DWORD dwSettableParams; // changable parameters
> DWORD dwSettableBaud; // allowable baud rates
> WORD wSettableData; // allowable byte sizes
> WORD wSettableStopParity; // stop bits/parity allowed
> DWORD dwCurrentTxQueue; // Tx buffer size, in bytes
> DWORD dwCurrentRxQueue; // Rx buffer size, in bytes
> DWORD dwProvSpec1; // provider-specific data
> DWORD dwProvSpec2; // provider-specific data
> WCHAR wcProvChar[1]; // provider-specific data
>} COMMPROP;
Поля этой структуры описывают все возможности драйвера. Вы не можете выйти за пределы этих возможностей. Вот какое значение имеют поля:
wPacketLength
Задает размер, в байтах, структуры COMMPROP.
wPacketVersion
Номер версии структуры.
dwServiceMask
Битовая маска. Для коммуникационных устройств всегда SP_SERIALCOMM, включая модемы.
dwReserved1
Зарезервировано и не используется.
dwMaxTxQueue
Максимальный размер, в байтах, внутреннего буфера передачи драйвера. Нулевое значение свидетельствует об отсутствии ограничения.
dwMaxRxQueue
Максимальный размер, в байтах, внутреннего буфера приема драйвера. Нулевое значение свидетельствует об отсутствии ограничения.
dwMaxBaud
Максимально допустимая скорость обмена, в битах в секунду (бпс). Возможны следующие значения данного поля:
| BAUD_075 | 75 бпс. |
| BAUD_110 | 110 бпс. |
| BAUD_134_5 | 134.5 бпс. |
| BAUD_150 | 150 бпс. |
| BAUD_300 | 300 бпс. |
| BAUD_600 | 600 бпс. |
| BAUD_1200 | 1200 бпс. |
| BAUD_1800 | 1800 бпс. |
| BAUD_2400 | 2400 бпс. |
| BAUD_4800 | 4800 бпс |
| BAUD_7200 | 7200 бпс. |
| BAUD_9600 | 9600 бпс. |
| BAUD_14400 | 14400 бпс. |
| BAUD_19200 | 19200 бпс. |
| BAUD_38400 | 38400 бпс. |
| BAUD_56K | 56K бпс. |
| BAUD_57600 | 57600 бпс. |
| BAUD_115200 | 115200 бпс. |
| BAUD_128K | 128K бпс. |
| BAUD_USER | Допускается программирование скорости обмена |
dwProvSubType
Тип коммуникационного порта. Возможны следующие значения данного поля:
| PST_FAX | Факс |
| PST_LAT | LAT протокол |
| PST_MODEM | Модем |
| PST_NETWORK_BRIDGE | Сетевой мост |
| PST_PARALLELPORT | Параллельный порт |
| PST_RS232 | Последовательный порт RS-232 |
| PST_RS422 | Порт RS-422 |
| PST_RS423 | Порт RS-423 |
| PST_RS449 | Порт RS-449 |
| PST_SCANNER | Сканнер |
| PST_TCPIP_TELNET | Протокол TCP/IP TelnetR |
| PST_UNSPECIFIED | Неизвестное устройство |
| PST_X25 | Устройство стандарта X.25 |
dwProvCapabilities
Битовая маска. Определяет возможности предоставляемые устройством. Возможны следующие значения:
| PCF_16BITMODE | Поддерживается специальный 16-битный режим |
| PCF_DTRDSR | Поддерживаются сигналы DTR/DSR. |
| PCF_INTTIMEOUTS | Поддерживается межсимвольный тайм-аут. |
| PCF_PARITY_CHECK | Поддерживается контроль четности. |
| PCF_RLSD | Поддерживается определение наличия сигнала в приемной линии. |
| PCF_RTSCTS | Поддерживаются сигналы RTS/CTS. |
| PCF_SETXCHAR | Поддерживаются задаваемые символы XON/XOFF. |
| PCF_SPECIALCHARS | Поддерживаются спецсимволы. |
| PCF_TOTALTIMEOUTS | Поддерживаются общие тайм-ауты (ожидаемое время). |
| PCF_XONXOFF | Поддерживается программное (XON/XOFF) управление потоком. |
dwSettableParams
Битовая маска. Определяет допустимые для изменения параметры. Возможны следующие значения:
| SP_BAUD | Скорость обмена. |
| SP_DATABITS | Бит в символе. |
| SP_HANDSHAKING | Рукопожатие (управление потоком). |
| SP_PARITY | Четность. |
| SP_PARITY_CHECK | Контроль четности. |
| SP_RLSD | Детектирование наличия сигнала в приемной линии. |
| SP_STOPBITS | Количество стоповых бит. |
dwSettableBaud
Битовая маска. Определяет допустимый набор скоростей обмена. Допустимые для данного поля значения указаны в описании поля dwMaxBaud.
wSettableData
Битовая маска. Определяет допустимые длины символов, в битах. Возможны следующие значения:
| DATABITS_5 | 5 бит |
| DATABITS_6 | 6 бит |
| DATABITS_7 | 7 бит |
| DATABITS_8 | 8 бит |
| DATABITS_16 | 16 бит |
| DATABITS_16Х | Специальный широкий канал через аппаратную последовательную линию. |
wSettableStopParity
Битовая маска. Определяет допустимое количество стоповых бит и режимы четности. Возможны следующие значения:
| STOPBITS_10 | Один стоповый бит |
| STOPBITS_15 | Полтора стоповыx бита |
| STOPBITS_20 | Два стоповых бита |
| PARITY_NONE | Без четности |
| PARITY_ODD | Дополнение до нечетности |
| PARITY_EVEN | Дополнение до четности |
| PARITY_MARK | Бит четности всегда "1" |
| PARITY_SPACE | Бит четности всегда "0" |
dwCurrentTxQueue
Определяет текущий размер, в байтах, внутренней очереди передачи драйвера. Нулевое значение свидетельствует о недоступности данного параметра.
Автор книги — американский специалист по программированию, один из руководителей фирмы IBM, в своей книге делает попытку изложить общие проблемы создания программного обеспечения, его сопровождения и использования. Особенно подробно рассматриваются все фазы разработки программ разных типов. Изложение ясное, удачно иллюстрировано примерами.Для программистов разной квалификации и пользователей ЭВМ.fb2: ВНИМАНИЕ. В тексте присутствуют таблицы. Рекомендуется читать файл с помощью программы, поддерживающей их отображение.
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
Книга посвящена разработке программ для мобильных устройств под управлением операционной системы Android. Рассматривается создание приложений с использованием системных компонентов и служб Android. Приведены базовые данные о структуре приложений, об основных классах и их методах, сопровождаемые примерами кода. Часть 1 содержит шесть глав, описывающих основные принципы создания приложений, пользовательский интерфейс, полномочия приложений, а так же базовые классы: Activity, Intent, Fragment. Книга предназначена для программистов, владеющих языком программирования Java и желающих освоить написание приложений, работающих под ОС Android.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Очень часто под рукой не оказывается ни отладчика, ни дизассемблера, ни даже компилятора, чтобы набросать хотя бы примитивный трассировщик. Разумеется, что говорить о взломе современных защитных механизмов в таких условиях просто смешно, но что делать если жизнь заставляет?..