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

Подключить устройство через COM-порт и отправить на него данные - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа для печати всех файлов из указанной папки http://www.cyberforum.ru/cpp/thread110488.html
Добрый день! Весь интеренет облазил не могу найти прогу которая будет печатать файл попадающий в указанную папку и после печати удалять его( Я сам не программист, и поэтому прошу Вас если можете напишите эту программку... Если найдутся добрые люди вышлите ее на мой e-mail пожалуйста: lemuriec@bk.ru. С уважением, lemuriec.
C++ Создание мультфильма вот такая задача: по курсовому проекту с Обектно-ориентовного программирования задали создать мультфильм который длятся около 2-х минут, или игру, который имеет минимум 3-х уровневую иерархию класов. Нужно делать в среде разработки Borland C++ 3.01. Так вот в чём вопрос: может у кого то есть какой проект на такому языке программирования, для образца... Делать буду сам, но просто хотелось бы... http://www.cyberforum.ru/cpp/thread110048.html
C++ Переставить значения
Вообщем, имеется такое задание: На примере этого задания, создал программу для решения таких типов задач Проблема в следующем, результат многочлена, который должен получится, получается немного другой, значения, которые стоят перед иксом должны быть наоборот Коротко: помогите получить в программе, такое уравнение, как ответ в первом скриншоте #include <iostream.h> double f(const...
C++ Минимальные и максимальные значения в массиве
Люди, я начинающий пользователь С++. Помогите с задачей: Задан вектор x. Найти наименьший из положительных элементов вектора и наибольший из отрицательных.
C++ Исходники http://www.cyberforum.ru/cpp/thread109717.html
дайте сайт исходников!!!!!!!!!!!!!!
C++ Перевести первый символ в верхний регистр Здравствуйте. Программа создает строки, добавляет их в текст, меняет все символы в нижний регистр, затем первый символ в верхний регистр и выводит строки. Программа компилируется, но не меняет 1-й символ в верх. рег. Вот код. Спасибо. main #include "stdafx.h" #include "text.h" #include "string.h" #include <iostream> using namespace std; подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,316
02.04.2010, 11:26     Подключить устройство через COM-порт и отправить на него данные
Хмм.... Я бы сказал, что книга Михаила Фленова "С++ глазами хакера" - не из лучших. Листинги содержат массу грубых ошибок.

Так, теперь о TerminateThread. Применять этот способ завершения потока в "мирных условиях" нельзя - его применение оправдано только от безысходности, в исключительной ситуации, когда все другие способы завершить поток оказались безуспешными. Причина состоит в том, что при вызове TerminateThread поток убивается решительно и немедленно, - а достоверно неизвестно,
какой код он в этот момент исполняет (а может случиться, что и в глубине какой-нибудь системной функции), - и, разумеется, все переменные, которые затрагивает его исполнение, остаются в несогласованном состоянии, не вызываются деструкторы локальных объектов и т.п. - короче, система остается в потенциально нестабильном состоянии. Если тебе повезет, то ничего
фатального не случится. Если же не повезет.... значит, не повезет :-)
Более грамотный способ - просигнализировать потоку о необходимости завершения, и дождаться его нормального завершения. Это можно сделать либо с помощью объектов синхронизации (пример - событие, event), либо с помощью переменных, имеющих булевское значение (возможно, придется применять Interlocked-функции). Например, так:
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
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE hThread = CreateThread(.....);
// ... тут еще код ...
 
// все, пора завершать поток:
SetEvent(hEvent);
// ждем завершения
DWORD dwResult = WaitForSingleObject(hThread, INFINITE);
if (WAIT_OBJECT_0 != dwResult)
{
    // что-то пошло не так, обработать ошибку
}
else
{
    // все ок, поток завершился нормально
    CloseHandle(hThread);
    CloseHandle(hEvent);
}
 
//-------------------------------------------
 
DWORD WINAPI ThreadFunc(LPVOID param)
{
    while(TRUE)
    {
        DWORD dwResult = WaitForSingleObject(hEvent, 0);
        if (WAIT_OBJECT_0 == dwResult)
            // дождались сигнала на выход, выходим
            break;
            
        // здесь код, выполняющий полезную работу
    }
    return 0;
}
 
Текущее время: 12:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru