2012-07-07 51 views
5

Estoy tratando de establecer una conexión en serie entre la PC (Linux 32 bits) y un dispositivo de hardware a través de Bluetooth.Comunicación Bluetooth con Mono C#

Ya he probado el sistema usando cutecom. Funciona. Baud 115200, /dev/rfcomm0 etc ...

Ahora intento crear un software cliente con Mono para poder implementar un protocolo de comunicación. He probado el SerialPort objeto:

SerialPort mySerial; 
    mySerial = new SerialPort("/dev/rfcomm0", 115200); 
    mySerial.Open(); 
    mySerial.ReadTimeout = 1000; 

No funciona. Probé el sistema a través de una conexión serial cableada, en /dev/ttyACM0, y funcionó. Entonces no creo que este sea el camino.

He intentado usar FileStream y StreamReader pero arroja un Exception.IO: WIN32 IO returned 997.

¿Cómo utilizar una conexión en serie con un dispositivo Bluetooth con Mono C#?

+0

¿Qué versión de mono? – IanNorton

+0

¿Cómo no funciona? ¿Ha llamado a mySerial.Read(); ¿Has probado mySerial.DataReceived + = new (etc.)? – Neil

+0

Cuando se trabaja con comunicaciones serie como una buena práctica, vale la pena establecer los valores de paridad y de parada en algunos valores predeterminados establecidos. Y siempre comience con un valor bajo de velocidad en baudios, y aumente la velocidad cuando esté seguro de que todo está funcionando. Ejemplo aquí un buen punto de partida, http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx – Phill

Respuesta

0

A partir de bluez 5, dbus is the preferred method de interactuar con bluez vs interoperabilidad. Hay una serie de publicaciones sobre este tema here, básicamente implica conectarse a dbus y hacer lo siguiente.

  • Registro de un agente de emparejamiento
  • la asociación del dispositivo
  • Registro de un perfil en serie/rfcomm
  • señalización del dispositivo que desea conectar a la espera de la conexión en su perfil de objeto
  • La apertura de una corriente del objeto descriptor de archivo devuelto.

Una vez que tenga la secuencia, puede realizar todas las operaciones habituales de lectura/escritura en la transmisión de la misma manera que lo haría si la hubiera abierto como un puerto serie.

+0

La implementación de BlueZ DBus funciona con proxies, que forman la abstracción central de casi todo lo relacionado con Bluetooth: dispositivos periféricos, controlador bluetooth (adaptador), características GATT si está utilizando LE, y así sucesivamente. Los objetos DBus publican una interfaz con métodos y propiedades que deberían usarse. No sé cuál es la intención de OP con el perfil serial/rfcomm, pero las escrituras se pueden administrar de otra manera usando DBus. – Zimano

Cuestiones relacionadas