Domanda

Abbiamo un'applicazione che deve essere in grado di utilizzare il bluetooth per i seguenti requisiti:

  1. Ricevi file da dispositivi bluetooth (fino a 2 dispositivi contemporaneamente)
  2. Visualizza tutti i dispositivi Bluetooth nel raggio di azione
  3. Invia file a dispositivi bluetooth
  4. Cerca dispositivi Bluetooth e trasferisci i file contemporaneamente

Siamo in esecuzione su Windows XP.

Ho guardato in giro e sembra che ci siano 3 stack principali:

BlueSoleil

Sul sito Web BlueSoleil, nella sezione SDK, sembra che sia supportata solo una connessione, il che ovviamente non va bene.

di Windows

Sembra supportare solo 1 dongle bluetooth, il che probabilmente significa che non possiamo soddisfare tutti i nostri requisiti.

Widcomm

Costoso e potenzialmente eccessivo? API più complesse? Pensieri?

In termini di SDK per C #, guardando Franson Bluetools, qualcuno ha usato questa API?

Grazie

È stato utile?

Soluzione

Innanzitutto il disclaimer, sono il manutentore della libreria 32feet.NET. : -)

Ho appena verificato, e su XP con lo stack Microsoft (usando un dongle) posso ricevere contemporaneamente due PUT OBEX e anche scoprire dispositivi. Questo utilizza la classe ObexListener di 32feet.NET e il metodo BluetoothClient.DiscoverDevices. Per inviare i PUT OBEX è possibile utilizzare la sua classe ObexWebRequest. Per fare più connessioni parallele con ObexListener ho appena avuto più thread che chiamavano il suo metodo GetContext ().

Quindi è forse più semplice di quanto pensassimo ...

L'ho anche testato con il server OBEX di Andy Hume usando la sua libreria Brecham.Obex e la ricezione simultanea funziona bene anche lì. È disponibile da http://32feet.net/files/folders/objectexchange/entry6511.aspx .

Sul nostro supporto Widcomm. Speriamo che non sembri troppo & Quot; incompleto & Quot; sul lato client ... Richiesta (rilevamento dispositivo) e connessioni funzionanti. Il lato server ha comunque bisogno di un po 'di lavoro e ci sono alcune cose che l'API Widcomm semplicemente non supporta ad es. (gestione dell'autenticazione programmatica).

Qual è stato il problema con i campioni? Tempo di compilazione o runtime? Su stack MSFT o Widcomm? Se preferisci, segui http://32feet.net/forums/37.aspx .

Altri suggerimenti

È ora di spiegare esattamente cosa abbiamo finito per fare ...

2 dongle perché?

  1. Se una chiave hardware sta eseguendo una scansione, la velocità di trasferimento viene notevolmente rallentata
  2. Un dongle può supportare solo 7 trasferimenti simultanei, se stai eseguendo una scansione, questo scende a 6. Se vuoi inviare, ricevere e scansionare tutti allo stesso tempo, tutto rallenta, male e sei molto limitato nei canali.

Quindi, l'idea è di eseguire un dongle a scansione continua (in modo che i dispositivi appaiano il più rapidamente possibile) e l'altro dongle riservato ai trasferimenti, e poiché non è la scansione, i trasferimenti sono facili e veloci.

Libreria che abbiamo usato

Dopo molti test e riflessioni, abbiamo finito per optare per WirelessCommunicationLibrary da BT framework .

Supporta Widcomm, Windows, BlueSoleil e lo stack Toshiba. Supporta tutte le cose lato server di cui abbiamo bisogno, è un prodotto commerciale ben supportato, che funziona perfettamente senza errori.

Quale stack?

Bene, questo è complesso. NESSUNO degli stack supporta 2 dongle contemporaneamente. Quindi l'unica opzione è eseguire un dongle su uno stack e l'altro dongle su un altro. Qui è utile la libreria WCL!

Microsoft - Se si verifica un errore durante una scansione, è normale che l'intero stack si blocchi. Questo non è l'ideale! Devi chiudere e riavviare il dispositivo radio, ci vuole tempo ed è soggetto a guasti. Ma ... lo stack Microsoft gestisce molto bene i trasferimenti di file.

Widcomm - Lo stack Widcomm non è eccezionale per i trasferimenti di file. Ci sono fastidiose piccole app che si installano con Widcomm che continuano a provare a prendere il controllo della tua app. Puoi uccidere bttray.exe, il che aiuta, ma ottieni comunque un comportamento strano dallo stack durante i trasferimenti. Sono sicuro che questo può essere risolto, ma poiché Windows è scarso per le scansioni, ha senso usare Widcomm per le scansioni.

Quindi ... abbiamo un dongle impostato su Widcomm per la scansione più e più volte, e un dongle impostato su Microsoft impostato per gestire solo i trasferimenti di file (dentro e fuori).

Far funzionare 2 chiavi hardware

Abbiamo scelto 2 dongle uguali, possiamo ordinarli in blocco e immagazzinarli tutti allo stesso modo riducendo la confusione. Ogni dispositivo spedito richiede solo 2 dongle bluetooth, semplici.

L'unico problema è che si tratta di dongle widcomm e abbiamo bisogno di un dongle nello stack di Windows. Windows non li riconosce come dongle di Windows, quindi non li registrerà per lo stack di Windows. Quindi ... è un trucco che puoi fare sul file bt.inf per farlo riconoscere il dongle per Windows. Quindi è necessario cambiare i driver per uno dei dongle da eseguire sui driver di Windows e il gioco è fatto.

Riepilogo

Quindi ... abbiamo sempre una scansione del dongle, una gestione dei trasferimenti, ognuno su pile separate e tutto funziona bene. Questo è l'unico modo che ho trovato per far funzionare senza problemi 2 dongle su Windows. Se hai un suggerimento migliore, per favore pubblicalo!

Prova questo: 32feet.NET . A partire dalla versione 2.4, supportano lo stack Widcomm oltre allo stack di Windows.

A proposito: perché devi lavorare con due dongle contemporaneamente? Di solito il singolo dongle può gestire fino a 7 dispositivi collegati contemporaneamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top