Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как общаться с Com портом?

270
14 октября 2005 года
Drew
265 / / 20.07.2000
подскажите пожалуйста, есть ли компонента для работы с COM портом в WINDOWS
ну то есть не через fopen как в ДОС....
мне нужно чтобы тред в постоянно сканировал порт и по готовности последнего считывал данные АСИНХРОННО... (fopen открывает поток и ПОСТОЯННО гонит данные, независимо готов порт или нет)
1
15 октября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Drew
подскажите пожалуйста, есть ли компонента для работы с COM портом в WINDOWS
ну то есть не через fopen как в ДОС....
мне нужно чтобы тред в постоянно сканировал порт и по готовности последнего считывал данные АСИНХРОННО... (fopen открывает поток и ПОСТОЯННО гонит данные, независимо готов порт или нет)


Такая(точнее такие есть) - поищи на королевстве или на торри - у меня где-то валялась но не могу сейчас быстро найти. Кроме того, ты вполне можешь использовать СreateFile - мне вроде как быстрее было и меньше грузило систему.

270
15 октября 2005 года
Drew
265 / / 20.07.2000
Цитата:
Originally posted by kot_
Такая(точнее такие есть) - поищи на королевстве или на торри - у меня где-то валялась но не могу сейчас быстро найти. Кроме того, ты вполне можешь использовать СreateFile - мне вроде как быстрее было и меньше грузило систему.


мне надо чтобы она ожидала готовность данных из буфера приёма и при готовности читала их

1
16 октября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Drew
мне надо чтобы она ожидала готовность данных из буфера приёма и при готовности читала их


Примерно так:

Код:
HANDLE hCom;
OVERLAPPED ovl;
BOOL fSuccess;
DWORD dwEvtMask;

hCom = CreateFile( "COM1",GENERIC_READ |GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,   NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
  return;
}
fSuccess = SetCommMask(hCom,EV_RXCHAR );
if (!fSuccess)
{
    return;
}
ovl.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL    );
if (WaitCommEvent(hCom, &dwEvtMask, &ovl))
{
    if (dwEvtMask & EV_RXCHAR)
    {
         ReadFile(hComm,// и т.д. ...)
    }

   
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог