2012-05-03 16 views
6

Recientemente descubrí la belleza del mouse óptico como un codificador de posición incremental.Ratón óptico como codificador

Un mouse óptico por lo general contiene un componente en el que una cámara está vinculada a un procesador de imagen vinculado a una interfaz USB. La resolución depende de la resolución de la cámara. En Internet es fácil encontrar las hojas de datos de este tipo de componentes que describen también cómo leer/escribir con ellos.

Mi problema primero que tengo que resolver es cómo asegurarme de que un mouse codificador no sea visto por la laptop/pc como un dispositivo señalador sin deshabilitar el puerto USB al que está conectado. Necesito usar 2 codificadores, lo que significa que deben usarse 3 puertos usb en mi PC (con Windows XP), uno para el mouse como dispositivo señalador y dos para un mouse como codificador.

Una segunda pregunta es cómo leer/escribir instrucciones/datos desde/hacia el mouse del codificador sobre un puerto USB. ¿Podría alguien enviarme un enlace a un tutorial/ejemplo en C++?

Muchas gracias de antemano,

Stefan

+1

Esto no está del todo claro. ¿Qué estás intentando lograr? –

+0

Parece que está pidiendo que se escriba un montón de código, no una respuesta a una pregunta específica. – Linuxios

+1

Si fuera un mouse RS-232, probablemente sería fácil de hacer porque hay un protocolo simple que permite que el sistema operativo encuentre un mouse en un puerto serial (configure el puerto para 1200 bits/segundo, 7 bits de datos, 1 bit de parada , sin paridad, apague RTS y DTR, espere 100 (?) ms, encienda RTS y DTR, el mouse devuelve la letra "M" y comienza la operación normal). Jugando un poco con el cableado, puede asegurarse de que Windows no tenga la oportunidad de descubrir el mouse cuando se inicia. Luego puede programar el puerto serie usted mismo y usar el mouse para usted mismo. –

Respuesta

4

El microcontrolador ratón USB es probablemente codificados a enviar tramas USB que identifican a sí misma como un dispositivo HID. En ese caso, hay pocas esperanzas de que pueda evitar que Windows lo use como un mouse. Después de todo esto ES un mouse.

Si está haciendo bricolaje, puede tratar de hackear el tablero del mouse desoldando componentes/cables y controlando directamente los codificadores con su arduino. De esta manera, el Arduino podría leer los datos del codificador y enviarlos a la PC usando su propio puerto serie USB.

ver un ejemplo allí:

http://www.martijnthe.nl/2009/07/interfacing-an-optical-mouse-sensor-to-your-arduino/

Para obtener más información sobre el dispositivo HID: http://en.wikipedia.org/wiki/USB_human_interface_device_class Extracto: "Hay dos niveles de API relacionados con USB HID: el nivel USB y el sistema operativo En el nivel USB, hay un protocolo para que los dispositivos anuncien sus capacidades y el sistema operativo para analizar los datos que obtiene. El sistema operativo ofrece una vista de alto nivel para las aplicaciones, que no necesitan incluir soporte para dispositivos individuales. pero para clases de dispositivos. Esta capa de abstracción permite que un juego funcione con cualquier controlador USB, fo r ejemplo, incluso los creados después del juego. "

+0

Entonces, ¿no es posible permitir que un mouse envíe sus datos pero no use la información en Windows como datos del mouse? En otras palabras, no es posible usar solo un mouse como mouse en Windows y conectar más? No tengo experiencia con plug and play, pero esperaba que al menos algo se pudiera configurar al lado del sistema operativo. – noste99

+0

SI sabía cómo reprogramar el microcontrolador de mouse, PODRÍA hacerlo enviar los marcos USB que desea. Pero programar un Arduino parece un método mucho más fácil. El problema no está en el lado de Windows. Es que el mouse está enviando marcos que le dicen al sistema operativo: Soy un RATÓN. Es por eso que puedes conectar cualquier mouse USB y tener el sistema operativo Plug'n Play :) – fjardon

+1

Muchas gracias. Los enlaces son muy útiles. Un arduino puede ser una buena solución, pero tengo dificultades para aceptar la idea de que mi pc/CPU está inactiva la mayor parte del tiempo, pero debido a que las cosas se vuelven complejas, es necesario agregar un procesador adicional. Voy a probar lo que se indica en las URL enumeradas anteriormente para recopilar experiencia y continuar la búsqueda. Muchas gracias por la ayuda. – noste99

2

Eche un vistazo a la API Raw Input para ver si puede retomar los eventos de esa manera y evitar que Windows actúe en ellos.

+0

Gracias por la pista. Esto es nuevo para mí, así que necesito algo de tiempo para averiguar más. – noste99

+0

+1 No sabía nada al respecto. Mira exactamente lo que se necesita aquí. – fjardon

+0

Deanma, sin haber estudiado en detalle lo que sugirió, ¿es posible escribir en un dispositivo utilizando la API de entrada Raw? Me parece simplemente leer los datos que se envían y decidir si usarlos o no y procesarlos. Stefan – noste99

Cuestiones relacionadas