Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
1

Не получается получить хэндл COM- порта

18.07.2013, 14:07. Показов 1479. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
#include <cstdio>
#include <windows.h>
 
int main(int argc, char *argv[])
{
  LPCWSTR name = L"COM22";
  HANDLE pH = CreateFile(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
  return 0;
}
pH получает значение 0xffffffff

В чём проблема?

Подключённое устройство и правда определяется как "COM22".
Проверял на PuTTY - устройство работает норм.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2013, 14:07
Ответы с готовыми решениями:

Как получить хэндл окна?
Хочу написать чит для какой-нибудь игрушки. Проблемы:1) Как получить хэндл окна. Нашёл пример на...

Как зная ProcessID получить хэндл окна?
Как зная ProcessID получить хэндл окна?

Как получить хэндл меню окна Excel'a?
Подскажите,как получить хэндл меню окна Excel'a? Пробую такой код: hWindow =...

Как правильно получить хэндл окна по его заголовку?
Вроде бы все просто, FindWindow(nil,'Wind1'); Но, наверное, я что-то не так понял, потому что: ...

9
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
18.07.2013, 21:03 2
Некий_Чел,
CreateFile function
<...>
Return value
If the function succeeds, the return value is an open handle to the specified file, device, named pipe, or mail slot.
If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
Что возвращает GetLastError?
1
Заблокирован
Автор FAQ
19.07.2013, 00:32 3
Некий_Чел, попробуй по универсальному идентификатору
CreateFile(L"\\\\.\\COM1"
у и конечно я не ас в хардвеа, но
Цитата Сообщение от Некий_Чел Посмотреть сообщение
COM22
СОМ с номером 22 выглядит весьма подозрительно, м.б СОМ2?
0
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
19.07.2013, 09:21  [ТС] 4
Цитата Сообщение от UI Посмотреть сообщение
Что возвращает GetLastError?
Возвращает: 2
ERROR_FILE_NOT_FOUND
2 (0x2)
The system cannot find the file specified.
0
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
19.07.2013, 09:31  [ТС] 5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
СОМ с номером 22 выглядит весьма подозрительно, м.б СОМ2?
Ниже скрин есть. Пробовал писать COM2 - результат тот же
Миниатюры
Не получается получить хэндл COM- порта  
0
Заблокирован
Автор FAQ
19.07.2013, 09:36 6
Лучший ответ Сообщение было отмечено как решение

Решение

Некий_Чел, попробуй так
C++
1
2
3
4
5
6
7
8
9
#include <cstdio>
#include <windows.h>
 
int main(int argc, char *argv[])
{
  char name[] = "COM22";
  HANDLE pH   = CreateFileA(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
  return 0;
}
и так
C++
1
2
3
4
5
6
7
8
9
#include <cstdio>
#include <windows.h>
 
int main(int argc, char *argv[])
{
  char name[] = "\\\\.\\COM22";
  HANDLE pH   = CreateFileA(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
  return 0;
}
В добвок есть ли увереннсоть что наш Вирутал СОМ действительно обрабатывается чем нибудь от STMicroelectronics?
3
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
19.07.2013, 10:01  [ТС] 7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
"\\\\.\\COM22"
Сработало! Спасибо, -=ЮрА=-. Добра тебе
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
21.07.2013, 02:01 8
-=ЮрА=-, А почему у него не работало, и что значат \\\\ ?
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
21.07.2013, 04:43 9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и что значат \\\\ ?
HOWTO: Specify Serial Ports Larger than COM9
1
Заблокирован
Автор FAQ
21.07.2013, 11:41 10
Kuzia domovenok, это \\\\.\\ называется универсальным идентификатором, его можно писать и перед меткой тома и перед названием порта. При использовании идентификатора CreateFile работает с тем что передано в качестве пути как с устройством.
1
21.07.2013, 11:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 11:41
Помогаю со студенческими работами здесь

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему?
Друзья! Вот код A.exe, суть которого просто стать родительским для B.exe и висеть в системе. ...

Как получить хэндл окна среди окон с одинаковыми классами
опять я с вопросами. вот как получить хэндл окна среди окон с одинаковыми классами, т.е. у меня...

Как получить хэндл окна зная текст его заголовка и ID процесса?
Как получить хэндл окна зная текст его заголовка и ID процесса? Желательно привязаться в ID -а то...

Не получается вывести данные с COM-порта в окне
Всем привет! Изучаю C#. Разбираю работу с COM-портом. Задача: проверить какие COM-порты есть в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru