Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

COM порт, потоки, и таймер. Считывание данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор не видит объявление идентификатора http://www.cyberforum.ru/cpp-beginners/thread1200136.html
Есть такое вот объявление: __int64 res; res = 0; И уже на res = 0 компилятор не может распознать идентификатор, говорит, что он не определен. Пыталась копировать имя идентификатора (а вдруг),...
C++ Классы и наследование Доброго времени суток. Помогите решить задание. Дан класс pegasus ,у которого родительский класс horse, надо переделать код, чтобы при выводе pegasus писал что он может летать, а потом вспоминал что... http://www.cyberforum.ru/cpp-beginners/thread1200134.html
C++ Подскажите учебник по c++ для новичков
Есть ли нормальный и понятный книга учащий c++ для новичков? Заранее спасибо.
Создать абстрактный класс "Целое число" C++
створити абстрактний клас ЦІЛЕ ЧИСЛО із чистим віртуальним методом переведення цілого з однієї системи числення в іншу. Створити похідні класи у яких визначити віртуальні методи переведення з...
C++ Ассоциативный массив http://www.cyberforum.ru/cpp-beginners/thread1200096.html
Добрый день. Нужно заполнить map <char,vector<int> > из файла, содержание которого: 1 f 2 g 5 c Вот моя программа #include <iostream> #include <fstream> #include <vector> #include <map>
C++ Игра "Зенитная установка" //figures.h- Интерфейс модуля графических фигур #ifndef figures_h #define figures_h //Базовый класс фигура class TFigure { protected: int theCenterX,theCenterY;//центр фигуры public: подробнее

Показать сообщение отдельно
power12
6 / 6 / 1
Регистрация: 14.04.2010
Сообщений: 100
05.06.2014, 16:46  [ТС]
SatanaXIII, хм, такая же функция получения данных, поток не останавливается.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DWORD WINAPI ReadThread(LPVOID)
{
    COMSTAT comstat;        //структура текущего состояния порта, в данной программе используется
    //для определения количества принятых в порт байтов
    DWORD btr, temp, mask, signal;  //переменная temp используется в качестве заглушки
 
    //создать сигнальный объект-событие для асинхронных операций
    overlapped.hEvent = CreateEvent(NULL, true, true, NULL);
 
    //установить маску на срабатывание по событию приёма байта в порт
    SetCommMask(COMport, EV_RXCHAR);                
    while(1)    //пока поток не будет прерван, выполняем цикл
    {
        //ожидать события приёма байта (это и есть перекрываемая операция)
        WaitCommEvent(COMport, &mask, &overlapped);
 
        signal = WaitForSingleObject(overlapped.hEvent, INFINITE);  //приостановить поток до прихода байта
        if(signal == WAIT_OBJECT_0)                     //если событие прихода байта произошло
        {
            if(GetOverlappedResult(COMport, &overlapped, &temp, true)) //проверяем, успешно ли завершилась
                //перекрываемая операция WaitCommEvent
                if((mask & EV_RXCHAR)!=0)               //если произошло именно событие прихода байта
                {
                    ClearCommError(COMport, &temp, &comstat);       //нужно заполнить структуру COMSTAT
                    btr = comstat.cbInQue;                              //и получить из неё количество принятых байтов
                    if(btr)                                     //если действительно есть байты для чтения
                    {
                        ReadFile(COMport, bufrd, btr, &temp, &overlapped);     //прочитать байты из порта в буфер программы
                    }
                }
        }
    }
    CloseHandle(overlapped.hEvent);
}
но данные не считывает без таймера, прошу помощи(
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru