¿Qué tipo de protocolo USB para el registrador de datos?

Estoy intentando crear un registrador de datos USB y me gustaría comenzar primero con la creación de un programa que transmita Hello World a través de USB sin usar algún tipo de comunicación CDC. Estoy tratando de averiguar qué clase de dispositivo debo usar. ¿Hago bien en intentar configurarlo como un dispositivo HID? Para su información, planeo usar el kit de inicio USB PIC32 para esto.

No creo que HID, Human Interface Device, sea la elección correcta. La salida en serie de CDC parece una opción decente, ¿por qué lo descarta? Otra opción podría ser simplemente un dispositivo de disco.
También votaría por un esquema funcionalmente equivalente a un puerto serie: es lógicamente simple, fácil de crear software alternativo y, por lo tanto, admite varios sistemas operativos host, es posible reemplazar el USB con bluetooth o algún enlace inalámbrico de rango medio, o incluso serie "real" en una situación heredada o si necesita optoacoplarlo en un entorno industrial.
Otra opción para un sistema de registro de datos, si solo desea recuperar los datos, es el almacenamiento masivo USB. Pero esto requerirá un sistema de archivos (un sistema de archivos pequeño está bien). Su dispositivo puede actuar como una memoria USB, simplemente conéctelo a una PC y descargue el archivo con los datos. También puede tener archivos de configuración especiales que el dispositivo puede leer y usar para la configuración. Esto elimina la necesidad de crear sus propias funciones de procesamiento de comandos.

Respuestas (2)

Como ya se discutió, la clase de dispositivo de comunicaciones (CDC) es probablemente una mejor opción que la clase de dispositivo de interfaz humana (HID) para una aplicación de registro de datos. Dicho esto, puede haber algunas razones para usar un protocolo basado en HID en lugar de CDC, como la disponibilidad de controladores del sistema operativo host.

Windows proporciona una interfaz de programación genérica para dispositivos HID que le permite acceder a cualquier dispositivo que utilice la clase HID sin controladores especiales. Si se trata de un producto comercial, el uso de un HID evita la necesidad de tener un controlador firmado como el que se requeriría si se usara CDC. Dado que un dispositivo HID no requiere un controlador para distribuirlo con su producto, la experiencia del usuario final también puede ser más sencilla.

Sin embargo, existen algunos inconvenientes con el uso de un controlador basado en HID. HID no se basa en la transmisión, lo que significa que el sistema operativo host sondeará los datos (informes) y felizmente eliminará los paquetes de informes entrantes si la aplicación no lee los datos entrantes lo suficientemente rápido. Esto requiere que implemente su propio protocolo además de los informes HID proporcionados en la capa de aplicación para proporcionar un transporte confiable utilizando los paquetes de longitud fija del informe de entrada y salida para la transferencia de datos. El rendimiento de datos con este método será significativamente más lento que con un protocolo basado en secuencias como CDC.

Algunos datos útiles sobre USB HID se pueden encontrar en http://www.lvr.com/hidpage.htm

Muy buena respuesta. Sin margen de mejora

Recomendaría usar CDC como se indica arriba. Si eso no funciona para usted, la clase MSD podría hacerlo. La última opción de recurso sería codificar el suyo propio, pero eso requerirá escribir un controlador de dispositivo para el sistema operativo host con el que planea usar su dispositivo.