|
Входит и выходит...Работаем с COM-портом Николай "GorluM" Андреев Xakep, номер #053, стр. 053-086-2 // Убиваем нить чтения данных TerminateThread(hThread,0); // Отправляем текст WriteFile(hCom, writebuffer, strlen(writebuffer), &n1, 0); // Заново создаем поток hThread = CreateThread(0, 0, ReadThread, (LPVOID)hwnd, 0, 0); Параметры порта Читать и писать мы научились :). Теперь нам надо научиться менять параметры порта. Это можно сделать в device manager, зайдя в свойства устройства, а можно и из своей программы. Все параметры порта будут храниться в огромной структуре под названием DCB. Вот ее основные значения: BaudRate - скорость порта. Может принимать значения CBR_9600, CBR_19200, CBR_38400 и т.д. ByteSize - размер байта, варьируется от 4 до 8. Нам необходимо 8. Parity - четность. Нам она не нужна, поэтому присваиваем defined-значение NOPARITY. StopBits - стоповые биты, у нас - ONESTOPBIT. Для того чтобы отредактировать параметры, их надо сначала получить. Поэтому мы воспользуемся функцией GetCommState: в первом аргументе передается хэндл порта, а во втором - переменная типа структуры DCB. После выполнения функции структура будет заполнена текущими установками порта. Теперь мы можем смело редактировать любой из них. После редактирования параметров их, естественно, надо сохранить. Для этого создана функция SetCommState. Вот так выглядит код реконфигурации в нашей программе: DCB dcb; GetCommState(hCom, &dcb); dcb.BaudRate = CBR_57600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; SetCommState(hCom, &dcb); С работой портов разобрались. Теперь напишем графическую оболочку для нашей программы. Пишем GUI В последнее время у многих начинающих программистов сложилось впечатление, что писать программы, использующие диалоги (окошки), без VCL или MFC очень сложно. А все из-за стереотипа, будто приходится прорисовать ручками каждую кнопочку. Но это совсем не так. Нужно просто использовать ресурсы. Например, при помощи того же Visual Studio мы создадим диалог, набросаем на него прямо как в Delphi или C++ Builder всяких кнопочек и других необходимых нам контролов, а затем создадим в нашей программе функцию обработки сообщений. Что ж, приступим. Для того чтобы слепить желаемый диалог, надо загрузить наш проект в VS, перейти в закладку Resource View, а там кликнуть правой кнопкой мышки и выбрать Insert (или Add Resource для VS .NET). Тебе предложат разные типы ресурсов. Выбирай Dialog. Появится редактор, очень похожий на редактор форм в дельфях. Помести drug`n`drop'ом на диалог две кнопочки: одну - для открытия заданного порта, другую - для посылки данных, и три EditBox'а. Один - для ввода названия порта, один - для посылаемых данных и еще один (побольше) - для вывода читаемых данных. На последнем нужно кликнуть, выбрать свойства, а в свойствах включить для EditBox'а полосу прокрутки и multiline, т.к. данные будут выводиться построчно. У каждого помещенного тобой на диалог контрола будут свои идентификаторы. Запомни эти названия, с их помощью мы будем взаимодействовать с диалогом из программы. После сохранения в папке с проектом появится хидер resource.h, его мы включим в нашу программу: |