2009-06-29 2 views
17

У нас есть приложение, которое необходимо, чтобы иметь возможность использовать Bluetooth для следующих требований:Bluetooth в C#, какой стек, какой SDK?

  1. Получение файлов из блютуз устройств (до 2-х устройств одновременно)
  2. Показать все блютус устройства в диапазон
  3. Отправка файлов устройства Bluetooth
  4. сканирование для блютуз устройств и передача файлов одновременно

Мы работаем на Windows XP.

Я сделал некоторые глядя вокруг, и там, кажется, 3 основных стеков:

BlueSoleil

На сайте BlueSoleil, в их SDK разделе, кажется, упомяну только 1 соединение поддерживается , что, очевидно, не очень хорошо.

Окна

только кажется, поддерживает 1 Индикатор Bluetooth донгл, который, вероятно, означает, что мы не можем удовлетворить все наши требования.

Widcomm

дорогой и потенциально излишество? Более сложный API? Мысли?

С точки зрения SDK для C#, смотрел на Franson Bluetools, кто использовал этот API?

Благодаря

ответ

18

Во-первых, отказ от ответственности, я являюсь хранителем библиотеки 32feet.NET. :-)

Я только что проверил, и на XP со стеком Microsoft (используя один ключ) я могу одновременно получать два OBEX PUT, а также обнаруживать устройства. Это использует 32-разрядный класс ObexListener .NET и метод BluetoothClient.DiscoverDevices. Для отправки OBEX PUT можно использовать класс ObexWebRequest. Чтобы выполнить несколько параллельных соединений с ObexListener, у меня просто было несколько потоков, вызывающих его метод GetContext().

Так что это может быть проще, чем мы думали ...

Я также протестировали его с OBEX сервер Энди Юма, используя свою библиотеку Brecham.Obex и одновременно получить отлично работает там. Его доступно от http://32feet.net/files/folders/objectexchange/entry6511.aspx.

О нашей поддержке Widcomm. Надеюсь, он не кажется слишком «неполным» на стороне клиента ... Запрос (обнаружение устройства) и соединения все работают. Однако серверная часть все еще нуждается в небольшой работе, и есть некоторые вещи, которые API-интерфейс Widcomm просто не поддерживает, например. (программная проверка подлинности).

В чем проблема с образцами? Время компиляции или время выполнения? В стеке MSFT или Widcomm? Последующее наблюдение в http://32feet.net/forums/37.aspx, если хотите.

+0

Спасибо alanjmcf :-) Нам нужен материал на стороне сервера. Мы производим устройство, которое позволяет людям передавать вещи со своего мобильного телефона и отправлять их обратно на свой мобильный телефон. Поэтому нам нужно публиковать сервисы для клиентов. Не уверен, что достаточно 2 потоков, поэтому я не увлекаюсь стеком Windows. Вы можете поместить 8 человек вокруг одного из наших устройств. Я отправлю примеры вопросов на вашем сайте. – badbod99

+0

В любое время, когда автор библиотеки отправляет ответ, он получает +1 имхо. –

+0

Спасибо Иордании. О предыдущих комментариях. Интересно, какой прогресс был достигнут. Во всяком случае, на «двух OBEX PUTs, а также на обнаружении устройств» я только что проверил два, возможно, можно было бы поддерживать полные (?) Семь пикосети-сверстников? Тем не менее его не восемь ... – alanjmcf

4

Попробуйте это: 32feet.NET. Начиная с версии 2.4, они поддерживают стек Widcomm в дополнение к стеку Windows.

BTW: Почему вам нужно работать с двумя ключами одновременно? Обычно один ключ может обрабатывать до 7 устройств, подключенных одновременно.

+0

Я понимаю, что хотя он поддерживает несколько устройств одновременно, он может передавать только файл Obex в/из 1 из них одновременно. Поправьте меня если я ошибаюсь! – badbod99

+0

Посмотрел на 32feet. Их реализация widcomm довольно неполна, и я не мог получить ни один из своих образцов, готовых к работе. Я рад потратить на компонент, но просто не могу найти хорошего! Примеры синих инструментов тоже не работают. – badbod99

+0

Я еще не пробовал реализацию widcomm. Что касается нескольких устройств, я не могу сказать точно, потому что не пытался, но насколько я знаю, ограничений для типа подключения нет, поэтому вы должны иметь несколько одновременных передач без каких-либо проблем. – arbiter

5

Время, чтобы объяснить то, что мы в конечном итоге делает ...

2 почему ключи?

  1. Если ключ делает сканирование скорость передачи массово замедлена
  2. донгл может поддерживать только 7 одновременные переводы, если вы делаете сканирование, это падает до 6. Если вы хотите отправить , принимать и сканировать все одновременно, все замедляется, плохо, и вы очень ограничены в каналах.

Итак, идея состоит в том, чтобы запускать непрерывный сканирование каждого ключа (так что устройства отображаются как можно быстрее), а другой ключ, зарезервированный для переносов, и поскольку он не сканирует, передачи являются приятными и быстрыми.

Библиотека мы использовали

После долгих испытаний и думал, мы в конечном итоге выбор в пользу WirelessCommunicationLibrary from BT framework.

Он поддерживает Widcomm, Windows, BlueSoleil и стек Toshiba. Он поддерживает все необходимые серверные компоненты, это хорошо поддерживаемый коммерческий продукт, который отлично работает без ошибок.

Какой стек?

Ну, это сложный вопрос. NONE стеков поддерживает 2 ключа одновременно. Таким образом, единственный вариант - запустить один ключ на одном стеке, а другой - на другой. Именно здесь вам пригодится библиотека WCL!

Microsoft - Если во время сканирования возникает ошибка, общий для всего стека выдается из строя. Это не идеально! Вы должны закрыть и перезапустить радиоустройство, это требует времени и подвержено ошибкам. Но ... стек Microsoft действительно отлично переносит передачи файлов.

Widcomm - Стек Widcomm не подходит для передачи файлов. Есть досадные небольшие приложения, которые устанавливаются с помощью Widcomm, которые продолжают пытаться взять управление из вашего приложения. Вы можете убить bttray.exe, что помогает, но вы все равно получаете странное поведение из стека во время передач. Я уверен, что это можно решить, но так как Windows для сканирования сканируется плохо, имеет смысл использовать Widcomm для сканирования.

Итак ... у нас есть один ключ для Widcomm для сканирования снова и снова, и один ключ, установленный в Microsoft, предназначен для обработки только передачи файлов (в и из).

Получение 2 донглова работать

Мы пошли для использования 2 одинаковых ключей, мы можем заказать их оптом и запасти их все же уменьшая путаницу. Для каждого устройства требуется всего два Bluetooth-ключа, простые.

Единственная проблема заключается в том, что это ключи widcomm, и нам нужен один ключ в стеке Windows. Windows не распознает их как ключи Windows, поэтому не будет регистрировать их для стека Windows. Итак ... это взлом, который вы можете сделать в бит.inf, чтобы он распознал ключ для Windows. Затем вам нужно переключить драйверы на один из ключей для запуска драйверов Windows, и все готово.

Резюме

Итак ... у нас есть один ключ сканирования всего времени, один трансфер обработки, каждый из которых на отдельных стеки, и все это прекрасно работает. Это единственный способ, по которому я нашел 2 рабочих ключа, гладко работающих в Windows. Если у вас есть лучшее предложение, пожалуйста, опубликуйте его!

+1

Просто обратите внимание, что моя библиотека 32feet.NET поддерживала использование двух ключей с 2,5 (на самом деле 2.4.1). Один с MSFT и один с Widcomm похожим на используемый в этом случае. :-) – alanjmcf

+0

Единственная проблема в том, что 32feet не поддерживает функции сервера Widcomm. – badbod99