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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Simulkin Stas
76 / 76 / 2
Регистрация: 02.12.2011
Сообщений: 293
#1

Копиляция программы работы с COM портом - C++

17.06.2014, 20:52. Просмотров 497. Ответов 4
Метки нет (Все метки)

...доброго времени суток, уважаемые форумчане!... не могу понять, как "победить" эти ошибки (скрин-шот, а также проект - COM_1.rar прилагаются)... не связаны ли они с тем, что работаю в Visual Studio 2008, а не в 2010?
...исходник взят отсюда http://how2.org.ua/программирование/...в-windows.html , а сама страница в архиве - Работа с COM портом на C++ в Windows _ how2.org.ua.rar

...вот исходный код:

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
// COM_1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
 
HANDLE hSerial;
 
int _tmain(int argc, _TCHAR* argv[])
{
    hSerial = ::CreateFile(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
   if(hSerial==INVALID_HANDLE_VALUE)
    {
      if(GetLastError()==ERROR_FILE_NOT_FOUND)
        {
           cout << "serial port does not exist.\n";
        }
       cout << "some other error occurred.\n";
    }
 
 DCB dcbSerialParams = {0};
 dcbSerialParams.DCBlength=sizeof(dcbSerialParams);
  if (!GetCommState(hSerial, &dcbSerialParams))
   {
      cout << "getting state error\n";
   }
 dcbSerialParams.BaudRate=CBR_9600;
 dcbSerialParams.ByteSize=8;
 dcbSerialParams.StopBits=ONESTOPBIT;
 dcbSerialParams.Parity=NOPARITY;
  if(!SetCommState(hSerial, &dcbSerialParams))
   {
      cout << "error setting serial port state\n";
   }
 
// Строка, которая будет передаваться и переменные необходимые для этого:
 char data[] = "Hello from C++";  // строка для передачи
 DWORD dwSize = sizeof(data);   // размер этой строки
 DWORD dwBytesWritten;    // тут будет количество собственно переданных байт
 
// Посылаем строку
BOOL iRet = WriteFile (hSerial,data,dwSize,&dwBytesWritten,NULL);
// Контрольо размера строки и количества отосланных байт:
cout << dwSize << " Bytes in string. " << dwBytesWritten << " Bytes sended. " << endl;
 
// В конце программы бесконечный цикл чтения данных:
    while(1)
    {
        ReadCOM();
    }
    return 0;
}
 
// Теперь функция чтения:
void ReadCOM()
{
      DWORD iSize;
      char sReceivedChar;
      while (true)
      {
            ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0);  // получаем 1 байт
            if (iSize > 0)   // если что-то принято, выводим
                cout << sReceivedChar;
      }
}
...заранее благодарен за ответ...
1
Миниатюры
Копиляция программы работы с COM портом  
Вложения
Тип файла: rar COM_1.rar (2.70 Мб, 12 просмотров)
Тип файла: rar Работа с COM портом на C++ в Windows _ how2.org.ua.rar (407.5 Кб, 10 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2014, 20:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копиляция программы работы с COM портом (C++):

Нужен пример работы с последовательным портом - C++
Всем здравствуйте. Поделитесь пожалуйста примером роаботы с последовательным портом. Желательно через API, можно и через &quot;SerialPort&quot;: ...

Скрин работы программы - C++
Завтра сдавать работу, а мой visual тупит. Нужен только скрин) Зарание спасибо!)) #include &quot;stdafx.h&quot; #include&lt;math.h&gt; ...

Время работы программы - C++
как считать?и как микросекунды?именно микросекунды нужны.

Прекращение работы программы - C++
int main() { string s; int c=0; int g={0}; int j=1,i=1; cin&gt;&gt;s;

прекращение работы программы - C++
int main(){ int i; cin&gt;&gt;i; cout&lt;&lt;i; if(i==5) cout&lt;&lt;&quot;i=&quot;&lt;&lt;i&lt;&lt;endl; else (как тут прекратить программу просто что бы ничего не...

Убыстрение работы программы - C++
Написал программу по поиску максимальной подстроки из заданных строк. Работает правильно, но нужно оптимизировать по времени выполнения(Не...

4
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
17.06.2014, 21:21 #2
sPortName у тебя не объявлена нигде, замени на имя порта, а функцию ReadCOM() поставь раньше _tmain().
1
Simulkin Stas
76 / 76 / 2
Регистрация: 02.12.2011
Сообщений: 293
17.06.2014, 22:19  [ТС] #3
...написал, как в литературе:

C++
1
hSerial = ::CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
...и появилась ошибка, показанная на скрин-шоте
0
Миниатюры
Копиляция программы работы с COM портом  
Simulkin Stas
76 / 76 / 2
Регистрация: 02.12.2011
Сообщений: 293
17.06.2014, 22:25  [ТС] #4
...всем спасибо... все вопрос снят - сам недосмотрел один момент....
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
17.06.2014, 22:26 #5
Строка UTF16 нужна: L"COM1"
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 22:26
Привет! Вот еще темы с ответами:

Время работы программы - C++
Здорова! Бывает в некоторых задачах нужно сравнить производительность программ, то есть время работы той или иной программы. Как их...

Принцип работы программы - C++
Смысл программы: подсчет количества слов и предложений из подключенного файла. Код есть, только не понимаю, почему подсчет слов (s) идет...

Скорость работы программы - C++
Здравствуйте, не подскажите примерами, как можно посчитать скорость работы части программы, например: Sum= a-b; Узнать за сколько...

Логирование работы программы - C++
Всем доброго времени суток! Столкнулся с проблемой - мне дали программу и сказали разбирайся. Там полно различных функций и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
17.06.2014, 22:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru