#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;
}
Не могу открыть COM порт
Код:
написал на C# еще одну программку для проверки (использовал serialport), она открывает/закрывает порт отлично...
Цитата: Енот_в_Засаде
char sPortName[] = "COM1";
hCOM = CreateFile((LPCWSTR)sPortName,GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
Если в вашем проекте используются UNICODE функции то надо переводить имя порта в формат UNICODE. А то что вы превели, может работать только не в нем...
Цитата: Yos
Если в вашем проекте используются UNICODE функции то надо переводить имя порта в формат UNICODE. А то что вы превели, может работать только не в нем...
спасибо:) я уже разобрался