Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Как правильно ввести два вектора ? надо чтобы элементы векторов вводились с клавиатуры, а у меня что-то не получается. и еще надо будет найти сумму векторов, но это я уже может сам сделаю:) https://www.cyberforum.ru/ cpp-beginners/ thread444984.html Вычислить произведение элементов массива по модулю C++
Дан одномерный массив состоящий из n целых чисел, надо: вычеслить произведение элементов по модулю, которые находятся между максимальным элементом и минимальным ( если возможно с обяснениями)
C++ Какую платформу выбрать новичку? Желательно кроссплатформенную Немного знаю .NET и C# https://www.cyberforum.ru/ cpp-beginners/ thread444948.html C++ Задачи по C++ https://www.cyberforum.ru/ cpp-beginners/ thread444943.html
Есть не сложные задачи, но что бы решить их нужно знать кое что, что я у Вас и хочу спросить: 1. Есть число 1234. Как определить какая из его частей (12 или 34) больше? 2. Есть число 1234. Как сравнить 1е и предпоследнее число? 3. Как поменять последнюю и первую цифры числа местами? Спасибо за ответы!
Есть два потока и глобальный массив, могут ли потоки перепутать элементы глобального массива или другого контейнера? C++
Начать с массивов, допустим То есть ситуация такая: пусть имеется два потока и глобальный массив элементов int из двух элементов, один поток выводит в цикле значение нулевого элемента, а второй- значение первого; вот сижу думаю- могут ли они перепутать элементы? С одной стороны не могут потому как обращение к элементу по индексу однозначаено идентифицирует этот элемент; а с другой стороны,...
C++ Дан одномерный массив состоящий из n целых чисел, надо: вычеслить сумму положительных элементов Дан одномерный массив состоящий из n целых чисел, надо: вычеслить сумму положительных элементов https://www.cyberforum.ru/ cpp-beginners/ thread444920.html
C++ Перевод чисел из одной сс в другую https://www.cyberforum.ru/ cpp-beginners/ thread444913.html
Здравствуйте, помогите пожалуйста перевести код функции переводящий число из десятичной сс в шестнадцатиричную написанной на паскале в аналог на с++ function _10toR(x:longint;R:word):string; var x,ost:longint; s,st,chislo:string; begin repeat ost:=x mod R; x:=x div R;
int=>char C++
Извините за такой тупой вопрос, в гугле искал, не нашёл подходящего ответа. Как по ASCII коду переводить номер символа в символ? допустим код символа '0' это 48, как задав 48 получить '0'?
C++ Release не работает, Debug работает Здравствуйте, подскажите в чем может быть проблема, написал программу (тестирование), запускал, проверял все норм. В настройках стояло: конфигурация решений: debug (VS2010). Поменял на release и клацнул построение->перестроить_testirovanie. Так вот релизный екзешник работает некорректно, а дебаговский нормально. Чем может быть вызвано? https://www.cyberforum.ru/ cpp-beginners/ thread444902.html C++ Разветвление Я прошу прощение за то, что задача на украинском языке, но в противном случае сама суть задания будет совсем иная. Ввести вік людини (від 1 до 150) і вивести його разом з наступним словом "рік", "роки" або "роки". Помогите, пожалуйста, как составить решение! Хотябі так объясните, а на языке с++ я уже сама напишу! Заранее спасибо! https://www.cyberforum.ru/ cpp-beginners/ thread444892.html
Класс "Отрезок". Вычислить длину отрезка. C++
создать класс отрезок,чтобы также можно было вычислить длину отрезка
C++ Кто сам выучил С++ Вот хотел спросить как вы сами выучили С++ и что для это надо что бы ументь программировать на С++, https://www.cyberforum.ru/ cpp-beginners/ thread444860.html
10 / 10 / 1
Регистрация: 15.08.2011
Сообщений: 411
0

Проблемка winapi - C++ - Ответ 2482914

12.02.2012, 16:23. Показов 856. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно считать байты пришедшие по ком порту.
Проблема в том что точное количество пришедших байт я незнаю.
Взял пример:
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
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);     //прочитать байты из порта в буфер программы
         rx_counter+=btr;                                          //увеличиваем счётчик байтов
                                    //вызываем функцию для вывода данных на экран и в файл
        }
       }
    }
  }
}
Сделал такую функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Com
{
protected:
static unsigned char rx_buf[BUFSIZE], tx_buf[BUFSIZE];
static unsigned char tx_count, rx_index, rx_count;
public:
void open(void);
void pclose(void);
void write(unsigned char data);
void send(void);
unsigned char read(void);
void clear_data(void);
};
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
35
36
unsigned char Com::read(void)
{
unsigned char data;
if(!rx_count)
{
COMSTAT comstat;
DWORD btr, temp, mask, signal;
overlapped.hEvent = CreateEvent(NULL, true, true, NULL);
SetCommMask(COMport, EV_RXCHAR);
 
 do{
    WaitCommEvent(COMport, &mask, &overlapped);
    signal = WaitForSingleObject(overlapped.hEvent, INFINITE);
    if(signal == WAIT_OBJECT_0)
     {
      if(GetOverlappedResult(COMport, &overlapped, &temp, true))
       if((mask & EV_RXCHAR)!=0)
        {
         ClearCommError(COMport, &temp, &comstat);
         btr = comstat.cbInQue;
         if(btr)
         {
          ReadFile(COMport, rx_buf, btr, &temp, &overlapped);
          rx_count+=btr;
 
         }
        }
     }
 
 }while(!rx_count);
CloseHandle(overlapped.hEvent);
}
data=rx_buf[rx_index++];
if(!--rx_count)rx_index=0;
return data;
}
Проблема том что запускается функция в потоке. При первом запуске потока функция работает нормально. А вот при повторном запуске потока выскакивает ошибка.
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
35
36
37
38
DWORD WINAPI MyroboThread(LPVOID)
{
Robo r;
Com c;
 
 
if(nead_read)
  {
   switch (c.read())
   {
   case 0:
   r.synchronization();
   break;
   case 1:
   param1=c.read();
   param2=c.read();
   r.radar_read(param1,param2);
   break;
   case 2:
   r.read_sensor(c.read());
   break;
   case 3:
   break;
   case 4:
   break;
   case 5:
   break;
   case 6:
   ls.show_deg();
   break;  // */
   default:
   r.synchronization();
   break;
   }
  nead_read--;
  }
}
}
Подскажите в чём дело?

Вернуться к обсуждению:
Проблемка winapi C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2012, 16:23
Готовые ответы и решения:

Проблемка
Доброго всем времени суток. Подскажите,что это за ошибка и что не так? // linaer_system.cpp :...

Проблемка
#include "stdafx.h" #include <math.h> #include <iostream> int _tmain(int argc, _TCHAR* argv)...

Проблемка с g++
Вот недавно установил винду (раньше была линь), и хотел чтоб всё было привычно, установил g++...

Проблемка с exit
Пример из книги. #include <iostream> #include <iomanip> // для setw() #include...

0
12.02.2012, 16:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2012, 16:23
Помогаю со студенческими работами здесь

В чем проблемка?
Сделал метод итерации, но програма после компиляции как бегущая строка... в чем ошибка програми?...

Проблемка с istringstream
Суть в том, что istringstream() превращает строку в поток и разделителем между словами служит...

Проблемка с указателями
Нужно перегрузить "+" чтобы он делал слияние 2ух массивов(элементы не повторялись) вот код: ...

Проблемка с cin
Мне нужно сделать так, чтобы в конце программы нажимался "enter". Ну, как в паскалеreadln;

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru