Pergunta

Eu preciso para se conectar a um dispositivo Bluetooth através da porta COM virtual criada no Windows. É fácil quando a porta já foi criado durante procedimento de emparelhamento manual. Mas eu gostaria que meu aplicativo para aliviar um usuário do emparelhamento manual de um dispositivo. Gostaria de apresentar todos os dispositivos na gama de, permitir ao utilizador escolher um, e, em seguida, criar porta virtual ligada com o dispositivo seleccionado. Eu não estou tentando evitar o procedimento de emparelhamento si, mas eu gostaria de chamá-lo pelo meu aplicativo.

eu comecei a ficar familiarizado com API Microsoft Bluetooth . E então surgiram algumas dúvidas. Fiquei me perguntando o que aconteceria se algum usuário usaria diferente (do que da Microsoft) pilha de Bluetooth? É API da Microsoft a API Bluetooth real, que têm de ser implementadas por qualquer outro Bluetooth pilha provedor? Ou melhor, cada provedor tem sua própria API, ea Microsoft do é apenas um dos muitos outros?

Foi útil?

Solução

Obrigado a todos pela valiosa contribuição. Eu gostaria de resumir o que eu encontrei até agora. A API Microsoft Bluetooth não está funcionando API do sistema. Pedido por escrito contra ela não vai cooperar corretamente com qualquer outro Bluetooth pilha . Parece que as aplicações que se destinam a cooperar com várias pilhas precisará fornecer alguma camada pilha de abstração, e o código de pilha específica para todos them.The outra solução é permitir que o usuário para o emparelhamento manual do dispositivo Bluetooth, o que, eventualmente, criar algum dispositivo virtual no sistema operativo (por exemplo, porta COM). Em seguida, o aplicativo pode usar a interface padrão de tal dispositivo a.

Outras dicas

Eu não posso falar para o API Microsoft Bluetooth, mas há múltipla Bluetooth pilhas disponível para a plataforma PC (ainda mais para dispositivos móveis).

A API subjacente é definido pelo Bluetooth Núcleo Spec por isso todas as pilhas devem ser capazes de interagir, de fato, é obrigatório que eles interoperabilidade ou eles não podem usar o nome eo logotipo Bluetooth.

Como para o emparelhamento, o seu vai ter um tempo difícil obter dispositivos para par se eles têm segurança padrão, o que requer um código pin.

As coisas poderiam ser mais simples no futuro (próximo), como o padrão Bluetooth introduziu um novo modelo de segurança, seguro simples emparelhamento, que tem um modo 'apenas obras' que não requer nenhum código PIN. Este é ainda mais forte, em seguida, o segurança atual, exceto contra homem no meio ataques. No entanto, poderia ser um pouco antes de ver as fichas com esse recurso em PCs.

Se você pode mudar para a utilização NET: - / I pode recomendar a nossa biblioteca 32feet.NET . Para o emparelhamento explícita há BluetoothSecurity.PairDevice. Podemos também criar a porta virtual para você, por exemplo:

   BluetoothClient cli = new BluetoothClient();
   BluetoothDeviceInfo[] list = cli.DiscoverDevices();
   BluetoothDeviceInfo selected = GetUserToSelectOne(list);
   BluetoothSecurity.PairDevice(selected, pin);
   // Ask Win32 to create a virtual serial port
   selected.SetServiceState(BluetoothService.SerialPort);

No entanto, eu realmente não gosto de portas seriais virtuais assim que eu sempre sugiro que as pessoas usam uma conexão normal soquetes usando nossa classe BluetoothClient, ele vai tratar automaticamente um pedido de emparelhamento, se necessário.

Em Win32 apoiamos as pilhas da Microsoft, Widcomm / Broadcom e BlueSoleil. Em Widcomm não há suporte para SetServiceState ainda lá, e sua API não tem suporte para responder a emparelhar solicitações . BlueSoleil devem apoiar ambos.

Um guia do usuário breve está em 32feet.NET - Guia do Usuário , e toda a documentação da classe está disponível no site principal http://32feet.net , a documentação Widcomm é só no nosso código repositório no momento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top