#c #c #windows #bluetooth #desktop
#c #c #Windows #bluetooth #Для рабочего стола
Вопрос:
Я хотел бы знать, существует ли какой-либо независимый от стека C / C bluetooth api для Windows (XP, Vista, 7, x86 и x64).
Моя цель — создать соединение и отправить / получить некоторое время критически важных данных по Bluetooth.
Мои исследования дали мне следующие варианты и есть недостатки для этой задачи:
- Windows Sockets for Bluetooth
работает только со стеком Microsoft Bluetooth - Использование COM-порта (CreateFile / ReadFile / …)
медленнее, чем опция сокета, и пользователю приходится сначала подключаться к устройству. - Использовать зависящий от стека API
Для этого потребуется определить используемый стек и создать функции чтения / записи для каждого стека. Очень много времени, и я не знаю, возможно ли вообще поддерживать все стеки - Написание драйвера KMDF
Я подумал о написании драйвера функции для прямого взаимодействия с драйвером bluetooth HCI, который должен быть независимым от стека. Это заняло бы очень много времени, потому что мне пришлось бы прочитать всю спецификацию Bluetooth, или есть API для команд HCI?
Я знаю, что существует также коммерческий sdk от btframework.com который поддерживает большинство (или все) стеков Bluetooth, но мне нужен бесплатный вариант.
Пожалуйста, скажите мне, есть ли какие-либо другие варианты для этой задачи.
Если таковых нет, не могли бы вы сказать мне, какие варианты вы бы предпочли и почему?
Можно ли использовать сокеты Windows и игнорировать другие стеки Bluetooth?
Спасибо за вашу помощь 🙂
Комментарии:
1. Просто в сторону, Bluetooth никогда не следует использовать для передачи данных, критичных ко времени, если только вам это абсолютно необходимо.
2. Дхайват, почему бы и нет? Предполагая хорошие FECS и хэширование, очень маловероятно, что что-либо будет повреждено.
3. Эта страница ссылается на академическую статью, в которой говорится, что Bluetooth не подходит для приложений, критичных ко времени: nettoyeur.noisepages.com/2011/01 /…
4. Спасибо за информацию. Для моего проекта требуется Bluetooth, поэтому у меня нет других вариантов 🙂
5.
never
…unless you have to
заставил меня рассмеяться 🙂 Кроме того, действительно, мой предполагаемый приемник Hi-FI Voiis A2DP возвращает воспоминания о старых виниловых проигрывателях: вау, и медленное колебание высоты тона! Это довольно невыносимо с некоторой музыкой, и это происходит при наличии физических помех (например, трафика Wi-Fi)
Ответ №1:
Я предполагаю, что одним из вариантов было бы использовать C / CLI для взаимодействия с моей управляемой библиотекой Bluetooth 32feet.СЕТЬ, которая поддерживает большинство стеков в Windows. http://32feet.codeplex.com /
Комментарии:
1. Спасибо: D Я уже читал о 32feet. NET lib (и о bluecove для java тоже) в других вопросах stackoverflow. К сожалению, я проигнорировал это, потому что это было не для C / C . Я никогда не думал, что что-то вроде C / CLI вообще будет существовать. : D В настоящее время мне нужно написать подтверждение концепции (используя опцию сокета), но я попробую ваше решение как можно скорее, еще раз спасибо 🙂
2. Хорошо. Если вы попробуете маршрут C / CLI, дайте мне знать, как это происходит. 🙂
Ответ №2:
Я успешно использую эту библиотеку, она называется WCL, но она не бесплатна. С его помощью вы можете подключаться через SPP, не требуя создания виртуального COM-порта.
Хотя их документация не очень хороша, они предоставляют несколько хороших демонстрационных кодов, которые вы, возможно, захотите попробовать.
Он поддерживает стеки Microsoft, Toshiba, Widcomm и Bluesoleil и имеет собственную реализацию на C (а также на .NET).
Комментарии:
1. Нет, у меня нет никаких отношений с этими ребятами. Я просто потратил много времени на поиск такой библиотеки, поэтому считаю полезным поделиться этой информацией. Я могу удалить свои сообщения, если это станет для вас таким раздражающим.