Вопрос № 108163: Здравствуйте. Помогите разобраться с работой с ком портом из под виндоус хр? Сам я мало что понимаю, но очень нужно написать программку и разобраться как она работает на уровне, чтобы мог дописывать потихоньку нужные прибамбасы. Сейчас конкретно нужн...
Вопрос № 108.163
Здравствуйте. Помогите разобраться с работой с ком портом из под виндоус хр? Сам я мало что понимаю, но очень нужно написать программку и разобраться как она работает на уровне, чтобы мог дописывать потихоньку нужные прибамбасы. Сейчас конкретно нужно что бы программа по команде, например по нажатию кнопки, отсылала введенный байт и принимала данные с внешнего устройства. Может у кого есть уже готовая заготовка с исходниками, чтобы можно было разобраться и чайнику? (Настройки порта пока не так важны, главное
знать как их настроить). И еще посоветуйте где почитать можно литературу на русском по работе с ком портом? с примерами. Организую связь микроконтроллера с компьютером, программа для контроллера готова и работает. С гипертерминала данные уходят в контроллер, им обрабатываются и отсылаются обратно в гипер. Пока это просто тестовая прога, сейчас необходимо уже написать приложение под виндоус.
Отправлен: 05.11.2007, 20:27
Вопрос задал: Dark128 (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PavelGM
Здравствуйте, Dark128!
Да вообщем-то все достаточно просто - в Windows COM-порты как файлы
1. Открываем порт
hCom := CreateFile('com1',
GENERIC_WRITE or GENERIC_READ,
0,
nil,
OPEN_EXISTING,
0,
0);
Проверяем на INVALID_HANDLE_VALUE, а то может уже занят кем-то.
2. Устанавливаем скорость и т.п.
var dcb : TDCB;
GetCommState(hCom, dcb);
dcb.BaudRate := 9600;
dcb.ByteSize := 8;
dcb.Parity := 0;
dcb.StopBits := 1;
if not SetCommState(hCom[VC], dcb) then Error('SetCommState FAILED');
4. Запись WriteFile(hCom, data^, size, dwBytes, nil)
5. Статус (наличие данных)
var comstat : TCOMSTAT; dummy : DWORD;
ClearCommError(hCom, dummy, @comstat);
Result := comstat.cbInQue;
6. Заканчиваем работу CloseHandle(hCom);
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 06.11.2007, 01:38
Отвечает: Igor_
Здравствуйте, Dark128!
Я бы посоветовал воспользоваться компонентами ComPort Library, а не писать работу с COM портом самому.
В принципе, компонентов для работы с COM портом хватает, просто яконкретно с этой библиотекой я работал.
Ответ отправил: Igor_ (статус: 4-ый класс)
Ответ отправлен: 06.11.2007, 09:54