Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу открыть COM порт

29K
26 марта 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Доброго времени суток. Написал простенький код, который должен открывать COM порт, но всё время выбивает ошибку, помогите разобраться в чём дело:confused: (VS2008)
Код:
#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;

int main()
{  
    HANDLE hCOM = INVALID_HANDLE_VALUE;
    DWORD   dwError;
    DWORD   dwRC;

    char sPortName[] = "COM1";
    hCOM = CreateFile((LPCWSTR)sPortName,              
                      GENERIC_READ | GENERIC_WRITE,
                      0,                           
                      NULL,                        
                      OPEN_EXISTING,               
                      0,                           
                      NULL);                       
   
    if (hCOM == INVALID_HANDLE_VALUE)
    {
        cout<<"Error opening port: ";
        // обработка ошибки
        dwError = GetLastError();
        LPVOID lpMsgBuf;
        lpMsgBuf = NULL;
        dwRC = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
                             FORMAT_MESSAGE_FROM_SYSTEM |
                             FORMAT_MESSAGE_IGNORE_INSERTS,
                             NULL,
                             dwError, //  из GetLastError(),
                             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //
                             (LPTSTR) &lpMsgBuf,
                             0,
                             NULL);

    if (dwRC && lpMsgBuf)
        {
            cout<<"Port="<<sPortName<<" Error="<<dwError<<" - "<<lpMsgBuf<<endl;
           
        }
    else
        {
            cout<<"COM open failed: Port="<<sPortName<<" Error="<<dwError<<endl;
        }



    }
    else
    {
        cout<<"Port opened successfully\n";
    }
    _getch();
    return 0;
}


написал на C# еще одну программку для проверки (использовал serialport), она открывает/закрывает порт отлично...
342
26 марта 2011 года
Yos
209 / / 21.06.2003

char sPortName[] = "COM1";
hCOM = CreateFile((LPCWSTR)sPortName,GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);



Если в вашем проекте используются UNICODE функции то надо переводить имя порта в формат UNICODE. А то что вы превели, может работать только не в нем...

29K
26 марта 2011 года
Енот_в_Засаде
224 / / 09.11.2010
Цитата: Yos
Если в вашем проекте используются UNICODE функции то надо переводить имя порта в формат UNICODE. А то что вы превели, может работать только не в нем...



спасибо:) я уже разобрался

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог