реклама на сайте
подробности

 
 
> Bluetooth c++ winapi
juvf
сообщение Sep 21 2016, 18:44
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Как взаимодействовать с БТ из винды? Начал использовать "Windows Sockets Support for Bluetooth" но чото лыжи не едут. Делаю следующий алгоритм с winsock

Код

Код
socket();
connect();
send(sock, array, 8, 0);
shutdown(sock, SD_SEND);
recv();


если в дебаге прошагать, то всё прекрасно работает. создается сокет и конектиться без ошибок. удаленное устройство видит коннект. посылаются данные, удаленное устройство получает их и отвечает. recv() возвращает кол-во принятых байт. как в аптеке.

если без остановки выполнить.... то send() возвращает 8, shutdown() возвращает 0, recv() возвращает 0. Удаленное устройство видит подключение, но не получает ни одного байта. если между этими функциями понаставить пауз секундных, то код выполняется без остановки нормально... уходит запрос и возвращается ответ. Почему без пауз не работает? Если из-за неблокирующего сокета, то как сокет сделать блокирующим?

ps Может вместо этой API есть более годные либы для работы с bluetooth под винды?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aiwa
сообщение Sep 23 2016, 03:30
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Посмотрел исходник, мне нужен был неблокирующий сокет. Я вызывал ioctlsocket с командой FIONBIO перевода сокета в неблокирующий режим.
Насколько я понимаю Вам нужно проделать обратную операцию.
Go to the top of the page
 
+Quote Post
juvf
сообщение Sep 23 2016, 07:49
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(aiwa @ Sep 23 2016, 08:30) *
Посмотрел исходник, мне нужен был неблокирующий сокет. Я вызывал ioctlsocket с командой FIONBIO перевода сокета в неблокирующий режим.
Насколько я понимаю Вам нужно проделать обратную операцию.
а вам нужен был неблокирующий сокет Bluetooth? вы с сокетом bluetooth работали?

по дефолту сокет блокирующий. чтоб он стал неблокирующим нужно сделать
Код
u_long iMode=1;
ioctlsocket(sock,FIONBIO,&iMode);

я в своём коде принудительно джелаю
Код
u_long iMode=0;
ioctlsocket(sock,FIONBIO,&iMode);
Не помогает. и ещё.... до кучи... если так и не пришел ответ.... то как сокет выйдет из recv()? Где то же должны задаваться таймауты ожидания.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 01:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016