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

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

Восстановить пароль Регистрация
 
Simulkin Stas
75 / 75 / 2
Регистрация: 02.12.2011
Сообщений: 293
17.06.2014, 20:52     Копиляция программы работы с COM портом #1
...доброго времени суток, уважаемые форумчане!... не могу понять, как "победить" эти ошибки (скрин-шот, а также проект - 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;
      }
}
...заранее благодарен за ответ...
Миниатюры
Копиляция программы работы с COM портом  
Вложения
Тип файла: rar COM_1.rar (2.70 Мб, 11 просмотров)
Тип файла: rar Работа с COM портом на C++ в Windows _ how2.org.ua.rar (407.5 Кб, 9 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2014, 20:52     Копиляция программы работы с COM портом
Посмотрите здесь:

C++ прекращение работы программы
Скорость работы программы C++
Логирование работы программы C++
Убыстрение работы программы C++
C++ Принцип работы программы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4318 / 3739 / 1260
Регистрация: 14.04.2014
Сообщений: 14,664
17.06.2014, 21:21     Копиляция программы работы с COM портом #2
sPortName у тебя не объявлена нигде, замени на имя порта, а функцию ReadCOM() поставь раньше _tmain().
Simulkin Stas
75 / 75 / 2
Регистрация: 02.12.2011
Сообщений: 293
17.06.2014, 22:19  [ТС]     Копиляция программы работы с COM портом #3
...написал, как в литературе:

C++
1
hSerial = ::CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
...и появилась ошибка, показанная на скрин-шоте
Миниатюры
Копиляция программы работы с COM портом  
Simulkin Stas
75 / 75 / 2
Регистрация: 02.12.2011
Сообщений: 293
17.06.2014, 22:25  [ТС]     Копиляция программы работы с COM портом #4
...всем спасибо... все вопрос снят - сам недосмотрел один момент....
nmcf
4318 / 3739 / 1260
Регистрация: 14.04.2014
Сообщений: 14,664
17.06.2014, 22:26     Копиляция программы работы с COM портом #5
Строка UTF16 нужна: L"COM1"
Yandex
Объявления
17.06.2014, 22:26     Копиляция программы работы с COM портом
Ответ Создать тему
Опции темы

Текущее время: 16:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru