toshiba windows-mobile stack bluetooth broadcom

windows-mobile - toshiba - broadcom bluetooth drivers windows 7



Widcomm bluetooth: cómo abrir el COM virtual (2)

Estoy tratando de usar la pila de bluetooth Widcomm de Broadcomm y debería funcionar, pero hay una cosa que todavía no puedo entender: ¿CÓMO PUEDO ABRIR AUTOMÁTICAMENTE EL COM VIRTUAL CUANDO NECESITO COMUNICARME?

Estoy tratando de usar SPP (Perfil de puerto serie) pero la documentación con el SDK no es tan exhaustiva.

POR FAVOR, ¡NO PUEDO UTILIZAR 32FEET!

Envolví el servidor SPP como parte de la API:

[DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)] internal static extern IntPtr CreateSppServer(IntPtr pStack); [DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)] internal static extern void DeleteSppServer(IntPtr pServer); [DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)] internal static extern bool SppServerStart(IntPtr pServer, IntPtr pszServiceName); [DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)] internal static extern bool SppServerStop(IntPtr pServer); [DllImport("wcbts.dll", SetLastError = false, CharSet = CharSet.Unicode)] internal static extern IntPtr SppServerNotifyWindow(IntPtr pServer, IntPtr hWnd, int nMsg);

¿Qué es pszServiceName? ¿Donde puedo encontrarlo? y hWnd y nMsg ???

Gracias


¡Publiqué una respuesta a esto antes, pero parece que nunca apareció! :-(

De todos modos, soy el mantenedor de la biblioteca 32feet.NET y el autor del soporte de Widcomm. En primer lugar, hasta donde sé, la licencia no debería ser un problema para la distribución comercial. Ver el comentario de Peter Foot en http://32feet.net/forums/t/2289.aspx :

"32feet.NET es gratuito para uso comercial o no comercial. Si usa los archivos binarios, puede usar la biblioteca tal como está, si realiza modificaciones en la fuente, debe incluir el documento 32feet.NET License.txt y asegurarse de que los encabezados de los archivos no se modifican / eliminan ".

Veré si Peter puede publicar un comentario aquí para dar certeza.

De todos modos, no hemos implementado el soporte para la funcionalidad del puerto COM virtual de Widcomm (sin duda es posible aunque nadie lo haya pedido, aparte de usted). No soy un gran admirador de los puertos COM virtuales. Siempre parece mucho más fácil utilizar una conexión directa de ''sockets'', en lugar de intentar configurar un puerto COM, y tratar de encontrar el nombre que se creó como [1], y luego tener que abrir un SerialPort para usarlo, y luego si la conexión se pierde, uno no sabe y simplemente tiene que volver a intentarlo ... Es mucho más fácil solo hacer lo siguiente:

Dim addr As BluetoothAddress _ = BluetoothAddress.Parse("001122334455") '' Dim ep As New BluetoothEndPoint(addr, BluetoothService.SerialPort) Dim cli As New BluetoothClient cli.Connect(ep) Dim peerStream As Stream = cli.GetStream() peerStream.Write/Read ...

Ver más en http://www.alanjmcf.me.uk/comms/bluetooth/32feet.NET%20--%20User%20Guide.html

Para responder a sus preguntas específicas sobre Widcomm. Se pueden crear múltiples instancias de un servicio Bluetooth, es decir, múltiples servicios SPP (cada uno utilizando el Id. De clase de servicio SPP), cada uno puede proporcionar un atributo de Nombre del servicio para permitir a los clientes seleccionar entre ellos. En la mayoría de los casos, no será necesario, así que pase una cadena nula o de longitud cero: los documentos Widcomm SDK no dicen lo que está permitido. En cuanto a los identificadores de Ventana, Widcomm usa métodos virtuales de C ++ (yuk - esto hace que P / Invocar sea prácticamente imposible) para implementar eventos / devoluciones de llamada, presumiblemente el código de Mr Figueira convierte esas devoluciones de llamada en mensajes de Ventana.

[1] La creación de puertos COM virtuales Bluetooth no es sencilla. En MSFT + Win32, no se dice a nadie qué nombre se seleccionó para el puerto COM. En MSFT + WM, la API oficial no funciona bien en muchos tipos de dispositivos. Y nuestro método no oficial de hacerlo requiere reiniciar el IIRC. :-(


Entonces, primero dices que no puedes usar 32feet.net . ¿Por qué? Obviamente está utilizando la biblioteca de pila bluetooth de João Paulo Figueira , porque eso es lo que es wcbts.dll, por lo que no puede ser un mandato contra el uso de una biblioteca de terceros (y 32feet es de código abierto y gratuito).

Eso me lleva a la pregunta # 2. Si estás usando su biblioteca, ¿has visto su muestra sobre cómo usar esa biblioteca? Se descarga desde el mismo lugar que la DLL que debe tener.

En cuanto a lo que son hWnd y nMsg, basados ​​en el hecho de que esto es la programación de Windows y el nombre de la API, diría que hWnd es el manejador de la ventana que recibirá las notificaciones cuando algo suceda en la biblioteca y nMsg es lo que sea personalizado constante de mensaje que desea pasar a esa ventana para que pueda buscar esos mensajes. Una vez más, apuesto a que la muestra que proporciona muestra todo esto.