Получить FILE*, указывающий на настроенный COM-порт
От: Аноним  
Дата: 04.02.16 20:45
Оценка:
Добрый день!

Библиотека на C требует предоставить ей FILE* от настроенного COM-порта. Для настройки я, естественно, пользуюсь SetCommState, соответственно, мне нужно получить HANDLE. Если я начинаю с HANDLE, попытка получить файловый дескриптор из handle завершается неудачно с errno=22: http://pastebin.com/c1RcVh7D

int qc9200_fd = _open_osfhandle((intptr_t)qc9200_handle, _O_RDWR|_O_BINARY);

Если я начинаю с получения файлового дескриптора:

int qc9200_fd = _topen(path, _O_RDWR|_O_BINARY);

или с FILE*:

FILE* qc9200 = _tfopen(path, "r+b");

они оба с небольшой задержкой возвращают ошибку (-1 и NULL соответственно) и устанавливают errno=13, даже если запускать программу от администратора, хотя CreateFile в такой же ситуации завершается успешно.

Согласно http://stackoverflow.com/questions/5193579/how-make-file-from-handle-in-winapi и http://stackoverflow.com/questions/3989545/how-do-i-get-the-file-handle-from-the-fopen-file-structure, оба преобразования, которые я пытаюсь выполнить, должны сработать.

COM-порт COM9 получен по Bluetooth и совершенно точно работает (с ним работают любые предназначенные для COM-портов терминалки).
Что я делаю не так? Как добиться от системы FILE* с COM-портом?
serial fopen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.