Программирование на C++ глазами хакера



             

Работа с СОМ-портом - часть 2


Если попытаться открыть порт дважды, то будет получено сообщение об ошибке, поэтому первым делом нужно произвести эту проверку. И если порт открыт, то закрыть его. Эта проверка выполняется в функции onBnClickedButton1, которую я покажу чуть позже, и она будет вызываться при нажатии на кнопку Close port.

Теперь получим имя выбранного порта и откроем его. Для этого используется функция работы с простыми файлами CreateFile, только вместо имени файла указывается имя порта.

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

typedef struct _DCB { DWORD DCBlength; // размер структуры DCB DWORD BaudRate; // скорость передачи данных в бодах DWORD fBinary: 1; // двоичный режим без проверки конца // строки DWORD fParity: 1; // включить проверку четность DWORD fOutxCtsFlow:1; // CTS-правление потоком выхода DWORD fOutxDsrFlow:1; // DSR-управление потоком выхода DWORD fDtrControl:2; // DTR-тип управления потоком скорости // передачи данных DWORD fDsrSensitivity:1; // DSR-чувствительность DWORD fTXContinueOnXoff:1; // стоп-сигнал продолжает выполнение DWORD fOutX: 1; // старт/стоп-сигнал для управления // выходящим потоком DWORD fInX: 1; // старт/стоп - сигнал для управления // входящим потоком DWORD fErrorChar: 1; // включить проверку погрешностей DWORD fNull: 1; // отвергать пустой поток данных DWORD fRtsControl:2; // RTS - управление потоком данных DWORD fAbortOnError:1; // проверять операции чтения/записи DWORD fDummy2:17; // зарезервировано WORD wReserved; // зарезервировано WORD XonLim; // порог чувствительности старт-сигнала WORD XoffLim; // порог чувствительности стоп-сигнала BYTE ByteSize; // количество бит (обычно 7 или 8) BYTE Parity; // четность байта BYTE StopBits; // стоповые биты char XonChar; // вид старт-сигнала в потоке char XoffChar; // вид стоп-сигнала в потоке char ErrorChar; // вид сигнала погрешности




Содержание  Назад  Вперед