2008-10-02 19 views
10

Estoy buscando un dispositivo que lea los voltajes de cableado a través de una interfaz USB y devuelva los datos. ¿Cómo podría programar algo para interpretar esta información y qué idioma usaría?

edit: Si ayuda, este proyecto es desarrollar un tacómetro digital para motores más antiguos que no admiten un puerto de datos ODB2 completo. Por lo tanto, leerá voltajes en un circuito de CC y tendrá una interfaz gráfica precisa. ¡No tengo ni idea de por dónde empezar con todo esto, pero estoy decidido a hacerlo funcionar! es para ventanas¿Cómo programo un controlador para un dispositivo USB para la plataforma de Windows?

Respuesta

3

Eche un vistazo a libusb. Está disponible para Linux y Windows.

8

Truco y uso libusb. Hice esto para un proyecto en el que he estado trabajando durante un tiempo y escribí una aplicación C++/wxWidgets para manejar los datos.

He estado pensando recientemente en volver a escribir la aplicación en la PC en wxPython, ya que es mucho más rápido para el desarrollo de la GUI.

¿Cómo desea visualizar/registrar los datos? Hay muchas opciones disponibles. Puede hacer algunas cosas realmente geniales (fácilmente) con the OpenGL capabilities of wxWidgets ya sea en representación de datos 2D o 3D.

1

Me parece que si quiere leer los voltajes de cableado, entonces necesita un convertidor A/D. ¿Estás haciendo tu propio convertidor A/D? Si es así, tienes algo de agradable programación de firmware para hacer en el lado del dispositivo, más que el controlador del lado del host que estás preguntando aquí. De lo contrario, vas a comprar un convertidor A/D y solo debes usar el controlador que el proveedor suministra con él.

6

Si puede, sugeriría utilizar una biblioteca como libusb, como han sugerido Kris y Jon Cage.

Si libusb no se adapta a sus necesidades y usted está desarrollando para Windows, debe echar un vistazo al software que Jungo proporciona. De nuevo, esto mueve el software usb al espacio de usuario en lugar de requerir el desarrollo del kernel de Windows. (edición 3: Ilya señala en el comentario que Jungo también está disponible para Linux)

Si debe hacer algún desarrollo del kernel (ya sea Windows o Linux), entonces C es la única opción que tiene. Investigue el libro this de Rubini para el desarrollo de Linux. Para el desarrollo del controlador de Windows, puedo recomendar el libro this de Oney. Pero investigaría la opción libusb de preferencia al desarrollo del controlador en ambos casos.


Btw. Si todo lo que le interesa es poder medir los voltajes en un dispositivo usb (y escribir el código no es importante) hay muchos productos que lo harán por usted. Eche un vistazo a algunas de las ofertas del National Instruments. Estos se ocuparán del arduo trabajo del usb y la adquisición de datos y le proporcionarán una agradable interfaz de programación para usar en su aplicación.


(edit 2) también hay algunas fichas USB-serie (por ejemplo. these) que se puede acoplar directamente a un USIG procesador embebido solamente una UART. Por lo general, estos vienen con controladores.

+0

La herramienta de Jungo no es solo para Windows, también es compatible con Linux – Ilya

+0

Gracias Ilya - actualizado en consecuencia –

+0

+1 por mencionar FTDI; esa es probablemente una opción más simple. –

1

A menos que esté golpeando su propio controlador USB en el lado del firmware, su chip probablemente vendrá con un controlador para la PC. Por ejemplo, los microcontroladores PIC de Microchip vienen no solo con firmware para el PIC, sino con un controlador de Windows. Espero que otros chips con USB también tengan sus propios controladores.

Recuerde que mientras interactúa con el puerto USB directamente en el lado del firmware, en el lado de la PC todo lo que realmente interactúa es el controlador para el controlador del host.

2

Como todavía está buscando un dispositivo que convierta voltajes en información, le sugiero que eche un vistazo a los dispositivos que implementan una interfaz USB-HID (dispositivo de interfaz humana), como los found here.

Tienen la ventaja de no requerir el desarrollo de ningún controlador de dispositivo ni la instalación de controladores. Son tan plug and play como un mouse, teclado o unidad flash. La interfaz es bastante genérica, y la mayoría de los fabricantes también proporcionan las bibliotecas necesarias para leer la información del dispositivo, recibir notificaciones cuando un dispositivo se conecta o desconecta, descubre dispositivos, etc.

Además, eche un vistazo a this article que explica cómo usar un dispositivo HID en C#, por ejemplo.

de Dave

1

Su opción más sencilla es probablemente para comprar algún tipo de dispositivo de adquisición de datos off-the-shelf. Muchas empresas hacen ese tipo de cosas, pero a veces son terriblemente caro:

  1. National Instruments
  2. Amplicon
  3. LabJack

También puede crear su propio de un kit, aunque no puedo encontrar ningún enlace para ti ahora mismo.

Si quiere algo más personalizado, puede usar un EZ-USB o un PIC. Proporcionan controladores USB (para Windows, al menos) que le permiten interactuar con el dispositivo sin escribir controladores.

Con la mayoría de estos tiene una gran variedad de lenguajes de programación, he escrito software para comunicarme con dispositivos EZ-USB desde Visual Basic 6 en el pasado.

+0

NI tiene módulos OEM que pueden hacer esto a un costo razonable (<$ 200). También tendrá canales analógicos adicionales y entradas digitales para jugar, si desea expandir las características. Eche un vistazo al OEM USB-6008. – Nick

1

La mayoría de los microcontroladores han incorporado ADC, y muchos de ellos también tienen un subsistema usb incorporado. Cypress, PIC, AVR vienen a la mente. Cada vez que uso USB para mis propios proyectos, uso pyusb y wxPython. Hacen que sea muy fácil hacer el trabajo, aunque hay una curva de aprendizaje inicial bastante dura.

Dejando de lado el tapón sin sentido, escribí un pequeño controlador de python con pyusb para un dispositivo USB-LCD. Puedes ver mi código fuente here.

+0

Solo un aviso de que su enlace está roto. – Ponkadoodle

1

Personalmente, utilizo Microchip PIC (tienen convertidores AD/DA, puertos USB, controladores gratuitos y cargadores de arranque) y todo esto por menos de $ 4. Después de conectar un dispositivo de este tipo, obtiene un puerto COM adicional; el resto es trivial.

1

Usted no dice qué plataforma está mirando. Si se dirige a Windows, USB Revealed es una referencia increíble.

1

Para hardware, échele un vistazo a FTDI productos.

Si tiene hardware y desea acceder a él en Windows, descubrí recientemente WinUSB. Si eso es lo que necesita, eche un vistazo al this white paper.

0

Además de WinUSB, libusb y Jungo, existe otra opción para programar dispositivos USB desde el modo de usuario: User-Mode Driver Framework (UMDF).

Escribir un controlador UMDF es básicamente crear un componente COM en proceso con sus herramientas favoritas.

Cuestiones relacionadas