C ++ COM-порт Открытие, чтение и запись - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь открыть COM-порт, используя функцию Win32 CreateFile.Я читал документы на MSDN, а также на нескольких форумах о том, как это сделать, но независимо от того, что я делаю, я все равно получаю код ошибки # 2 (порт не существует).Код, который у меня сейчас есть:

m_hCom = CreateFile(
    "\\.\COM10",
    GENERIC_READ | GENERIC_WRITE,
    0,
    0,
    OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED,
    NULL
);
if (m_hCom == INVALID_HANDLE_VALUE) {
    int error = GetLastError();
    return FALSE;
}

Я использую Visual Studio 2010.

Скажите, пожалуйста, что я делаю не так.

Ответы [ 5 ]

3 голосов
/ 10 мая 2011

Попробуйте добавить несколько дополнительных косых черт, например:

"\\\\. \\ COM10"

Поскольку обратная косая черта - это специальный символ, вы должны вставить два для каждогохочу в твою строку.

0 голосов
/ 06 апреля 2017

Запустите следующий код в проекте C ++, и, если Comport, скажем, COMPORT 4, используется, скажем, TeraTerm, он возвращает ошибку, в противном случае он открывает порт.

HANDLE hComm;
hComm = CreateFile (
L "\\. \ COM4",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (hComm == INVALID_HANDLE_VALUE) {
printf ("Comport закрыт или занят другим оборудованием / программным обеспечением! \ N \ r");
}

0 голосов
/ 20 февраля 2015

Попробуйте это:

CreateFile(L"COM1", ...);
0 голосов
/ 14 мая 2011

Я написал тот же код, который вы пытаетесь написать не так давно. Если вы говорите, что есть 10-й COM-порт, то он должен работать до тех пор, пока у вас есть дополнительные слэши. Вы можете попробовать открыть окно свойств проектов и изменить набор символов на многобайтовые символы. Удачи!

0 голосов
/ 10 мая 2011

Я предлагаю написать некоторый временный код, который повторяет или перечисляет доступные COM-порты.

Существует большая вероятность, что имя вашего COM-порта неверно.

...