Форум программистов, компьютерный форум 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
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
01.04.2010, 10:36     Подключить устройство через COM-порт и отправить на него данные
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <string>
#include <conio.h>
 
// 1. здесь нужно #include <windows.h>, а не winbase.h
#include <winbase.h>
 
void open_port();
void close_port();
DWORD __stdcall ReadThread(LPVOID hwnd);
 
// 2. нафига тут public??? ошибка 
public:
      HANDLE hCom;
 
int main()
{
      // 3. ошибка: нужно использовать std::, либо using namespace std
      cout << "<=SERIAL PORT=>\n\n";
      //HANDLE hCom;
 
      // сперва открываем порт
      open_port();
 
      // 4. ошибка: с вероятностью 99% поток не успеет начать работу, ничего не произойдет. А мы его сразу же закрываем.
      // в конце работы закрываем порт
      close_port();
 
      getch();
      return 0;
}
 
void open_port()
{
      // по логике должно быть const char
      char sPortName[] = "COM1";   // 5. ошибка, должно быть: "\\.\\\\COM1", иначе может не работать на NT
      
      hCom = CreateFile(sPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
 
      if (hCom == INVALID_HANDLE_VALUE)
      {
            cout << "Error opening port!\n";
            getch();
            return;
      }
      else
      {
            cout << "Port succesfully opened!\n";
 
            DCB dcb;
            GetCommState(hCom, &dcb);
 
            dcb.BaudRate = CBR_57600;
            dcb.ByteSize = 8;
            dcb.Parity = NOPARITY;
            dcb.StopBits = ONESTOPBIT;
 
            if (SetCommState(hCom, &dcb))
                  cout << "Configuring OK.\n";
            else
                  cout << "Configuring error.\n";
 
            // 6. ошибка: нигде не объявлен hThread                  
            hTread = CreateThread(0, 0, ReadThread, (LPVOID)this, 0, 0);   // 7. опечатка: hThread должно быть; 8. ошибка: this в этом контексте не существует.
      }
}
   
void close_port()
{
      if (hCom == INVALID_HANDLE_VALUE)
            return;
 
      TerminateThread(hThread, 0);   // 9. грубая ошибка: так делать нельзя. Необходимо дать потоку сигнал к завершению и позволить ему завершиться самому.
      CloseHandle(hCom);
      // 10. грубая ошибка: не закрыт хэндл потока hThread - утечка ресурсов
 
      hCom = INVALID_HADLE_VALUE;   // 11. опечатка: должно быть INVALID_HANDLE_VALUE
}
 
DWORD __stdcall ReadThread(LPVOID hwnd)
{
      DWORD iSize;
      char sReceivedChar;
 
      while (true)
      {
            ReadFile(hCom, &sReceivedChar, 1, &iSize, 0);
            // 12. ошибка: IDC_EDIT2 не определен, 13. ошибка: HWND и this - разные вещи, их нельзя смешивать
            SendDlgItemMessage((HWND)hwnd, IDC_EDIT2, WM_CHAR, sReceivedChar, 0);
      }
}
 
// PS: судя по всему, этот код выдернут с корнем из какого-то оконного диалогового приложения, где есть и this, и HWND, и IDC_EDIT2... и просто вставлен в консольное приложение.
 
Текущее время: 15:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru