сигнал окончания потока char EvtChar;
char EofChar; // сигнал окончания потока char EvtChar; // зарезервировано WORD wReserved1; // зарезервировано } DCB;
Если неправильно указаны параметры, то данные не будут передаваться и приниматься. Самое главное — заполнить следующие поля:
BaudRate — скорость передачи данных (бит/с). Указывается константа в виде CBR_скорость, где скорость должна быть равна скорости, поддерживаемой используемым устройством, например, 56000;
ByteSize — размер передаваемого байта (может быть 7 или 8);
Parity — флаг проверки четности;
StopBits — стоповые биты, могут принимать значения ONESTOPBIT (один), ONE5STOPBITS (полтора) или TWOSTOPBITS (два).
Остальные параметры можно оставить по умолчанию (те, которые вернула система). Но прежде чем указывать какие-либо параметры, обязательно прочитайте документацию на аппаратуру, с которой необходимо соединяться. Я не встречал устройств, которые поддерживали бы все режимы работы. Например, модем ZyXel Omni 56 K может поддерживать скорость от 2400 до 56 000, и можно указывать значения только из этого диапазона.
Помимо этого, нужно, чтобы оба устройства (передающее и принимающее) были настроены одинаково (скорость, размер байта и т. д.), иначе данные не будут передаваться.
После конфигурирования порта запускается поток, в котором мы будем бесконечно пытаться считать данные из порта. Это, конечно же, не эффективно, потому что удобнее использовать сообщения Windows, но для простого примера в обучающих целях достаточно. Функция чтения потока ReadThread выглядит следующим образом:
DWORD __stdcall ReadThread(LPVOID hwnd) { DWORD iSize; char sReceivedChar; while(true) { ReadFile(hCom,&sReceivedChar,1,&iSize,0); SendDlgItemMessage((HWND)hwnd,IDC_EDIT2,WM_CHAR, sReceivedChar,0); } }
В этой функции вы можете увидеть бесконечный цикл чтения данных, которое выполняется стандартной функцией чтения из файла — ReadFile.
Теперь посмотрите на функцию закрытия порта, которая будет вызываться по нажатию кнопки
Close port:
void CCOMportDlg::OnBnClickedButton1() { if (hCom == INVALID_HANDLE_VALUE) return;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий