Member 12330615 Ответов: 2

Как я могу назвать успешным createfile последовательной связи?


В моем первом коде последовательной связи с VC++

Я пытаюсь вызвать CreateFile следующим образом:

m_hcomm = CreateFile(L"//. / " + имя порта,
ПОМОЩЬЮ GENERIC_READ | ПОМОЩЬЮ GENERIC_WRITE,
0,0, параметра open_existing, 0,0);

допущена ошибка m_hcomm = INVALID_HANDLE_VALUE.

Сейчас
ПК имеет один последовательный порт и соединен кабелем RS232 с другим портом ПК.
(Является ли это обязательным условием при вызове CreateFile?)

Последний код ошибки = 2.

Поскольку я новичок в серийной связи. Что я должен заботиться о коде или окружающей среде?

Спасибо заранее.

Что я уже пробовал:

Еще 2 дня потрачено впустую на эту проблему.

2 Ответов

Рейтинг:
2

Jochen Arndt

Код ошибки 2 ERROR_FILE_NOT_FOUND ("Система не может найти указанный файл".).

Вы пытаетесь использовать префикс имени файла для поддержки COM-портов >= 10. Но они используют обратную косую черту ( " \ \ .\") вместо прямой косой черты (//./). Так что попробуйте это:

m_hcomm = CreateFile(L"\\\\.\\" + Portname,
    GENERIC_READ | GENERIC_WRITE,
    0,0, OPEN_EXISTING, 0,0);

Если вы все еще получаете сообщение об ошибке, проверьте, действительно ли имя порта и существует ли он.


Рейтинг:
17

KarstenK

Мой совет заключается в том, что строка имени порта каким-то образом неверна. (Я бы использовал его без косых черт и точек) Посмотрите в Системных настройках, что порт доступен и каково правильное имя порта.

Прочитайте Документация Micorsoft с некоторыми интересными фрагментами кода.

Прочтите эту статью о Создание последовательной связи на Win32