Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de Virtualboxapi

Programación de Virtualboxapi

Utilice VB para realizar la transmisión de datos de dispositivos de interfaz USB

Este artículo presenta la interfaz hombre-máquina en dispositivos USB, así como los puntos clave y los métodos de comunicación entre los dispositivos HID y el host. Se explica en detalle el método para llamar a funciones APl relevantes en VB y se presenta el método de diseño y desarrollo de un sistema de adquisición de datos basado en el bus USB. El sistema adopta el protocolo USB2.0. Este sistema describe principalmente la comunicación del dispositivo de interfaz hombre-máquina y el formato de informe utilizado para el intercambio de datos con el host desde la perspectiva del dispositivo. Las aplicaciones pueden utilizar cualquier lenguaje de programación que pueda acceder a funciones API, llamar a funciones de ventana y comunicarse con dispositivos USB. Domine las reglas de comunicación entre dispositivos USB y computadoras para lograr la identificación automática de dispositivos USB. Abre una nueva forma de comunicación entre los sistemas de adquisición de datos y las computadoras.

En los últimos años, con la popularidad de una gran cantidad de computadoras personales que admiten USB, USB se ha convertido gradualmente en una interfaz estándar para PC. En términos de hosts, casi 100 de las últimas PC admiten USB. En términos de dispositivos, cada vez más dispositivos utilizan interfaces USB, como cámaras digitales, escáneres, joysticks, unidades de cinta y disquetes, dispositivos de imágenes, impresoras, teclados y ratones. , etc.

2. El proceso de selección del controlador USB en el sistema Windows

Cuando Windows detecta un nuevo periférico USB, una cosa que se debe hacer es averiguar qué dispositivo se debe utilizar y la aplicación del controlador. El software se comunica con el dispositivo y luego carga el controlador seleccionado. Es trabajo del Administrador de dispositivos de Windows, que utiliza clases, instaladores de dispositivos y archivos INF para encontrar esta coincidencia.

El archivo INF es un archivo de texto que contiene información que ayuda a Windows a identificar el dispositivo. Este archivo le dice a Windows qué controladores usar, qué información almacenar en el registro y más.

En tercer lugar, el diseño e implementación de la comunicación entre Visual Basic y dispositivos USB.

El método de utilizar el lenguaje VB para acceder a la interfaz de comunicación en serie. Windows implementa una gran cantidad de trabajo complejo relacionado con la comunicación en serie en el nivel inferior, lo que proporciona a los programadores una interfaz de programación relativamente sencilla. Por ejemplo, Windows coloca automáticamente todos los caracteres recibidos en el búfer de recepción y todos los caracteres enviados en el búfer de envío. Mientras el programa esté inactivo, el programa puede leer datos del búfer de recepción o enviar datos al búfer de envío.

1. El proceso del host que busca dispositivos USB

La primera clase de periférico USB compatible con Windows es el dispositivo de interfaz humana. HID es la abreviatura de DISPOSITIVO de interfaz humana. Se refiere a dispositivos que interactúan directamente con las personas. Como por ejemplo ratón, teclado, etc. Una PC que se ejecuta en WINDOWS98 u otro sistema operativo de versión superior no solo proporciona controladores básicos para dispositivos USB universales, sino que también proporciona controladores completos para algunos dispositivos HID, de modo que las aplicaciones se puedan integrar fácilmente con el sistema operativo HID para comunicarse. Esto facilita el desarrollo y la ejecución de dispositivos USB compatibles con clase HID. En otras palabras, si queremos implementar un dispositivo USB HID, no necesitamos desarrollar nuestro propio controlador en Windows. HID no es necesariamente un tipo de periférico estándar, el único requisito es que los datos intercambiados se almacenen en una estructura de mensaje y el firmware del dispositivo debe admitir el formato del mensaje. Cualquier dispositivo que opere dentro de este rango puede convertirse en un HID, como termómetros, voltímetros, lectores de tarjetas, etc.

El proceso de llamada a funciones API en 2.2. Verbo

(1) Declaración: La siguiente es la declaración de Visual Basic usando la función API WriteFile: Puede usar esta alcantarilla para escribir datos en HID (o en un dispositivo como un archivo).

Función de declaración pública WriteFile Lib _ " kernel32 " _

(Por Val hFile es un entero largo, _ByReflpBuffer es un tipo de byte, _Por Val nNumberOfBytes es un entero largo, _ ByRef lpnumberofbytes es un entero largo, _ ByVal lpOvefiapped es un tipo entero largo)_tipo entero largo

(2) Identifica la función de declaración pública del proceso HID hidd _ gethidguid lib _ " HID . dll " _ (Byrefhidguid como guid) siempre.

3.Procesamiento de datos de Visual Basic

(1) Leer datos en el dispositivo

Función de declaración pública WriteFile Lib " kernel 32 " _(ByVal hFile As Long , _ ByReflpBuffer As Byte _ byvalnnnumberofbytestoswrite As Long, _ byrefnnnumberofbytcs escrito As Long, _ ByVal lpOvefiapped As Long)_ As Long

(2) Función de declaración del dispositivo esclavo leer archivo lib _ "kernel 32 " _(byval hfile es largo, _ byref lpbuffer es byte, _ byvalnnumberofbyte store es largo, _ byreflpnumberofbyte store es largo, _ lpovefiapped es largo) tanto tiempo para leer datos.

Al leer y escribir el búfer de mensajes, el primer byte es el ReportID, seguido de los datos del mensaje. De forma predeterminada, el búfer de mensajes tiene ocho mensajes, dispuestos en un anillo. Dado que la lectura y escritura de datos se produce cuando el host gira el dispositivo de entrenamiento y el dispositivo no lo activa para provocar una interrupción del hardware, si no se pueden leer y escribir a tiempo, los datos nuevos sobrescribirán los datos antiguos, lo que provocará la pérdida de mensajes. Se deben utilizar mensajes característicos cuando los datos se leen y escriben con frecuencia para garantizar que HID no transmitirá datos nuevos si los datos del mensaje no cambian.

Cuando ya no se utilice SetupDiGetClassDevs, utilice la función anterior para liberar la matriz devuelta hDevInfo. También debe utilizar la función CloseHandle, que es una función API muy general que se puede utilizar para cerrar la comunicación.

Cuatro. Conclusión

La programación real muestra que usar VB para desarrollar dispositivos USB HID es una forma muy conveniente y rápida, y no es necesario escribir controladores de bajo nivel. La mayoría de las funciones API involucradas son bien conocidas. funciones generales. Al mismo tiempo, debe tenerse en cuenta que la clase HID solo admite transmisión de control e interrupción de transmisión. Las transferencias de control generalmente no se utilizan para transferencias de datos, mientras que las transferencias de interrupción se caracterizan por una latencia máxima garantizada, es decir, el tiempo entre transacciones. No garantiza la tasa de transferencia, pero sí garantiza que el tiempo entre cada transacción no excederá el retraso máximo. Por lo tanto, la transmisión interrumpida es adecuada para situaciones en las que la cantidad de datos no es demasiado grande, pero se requiere una transmisión rápida y oportuna y los requisitos en tiempo real son altos. La transmisión interrumpida no es adecuada para la transmisión de grandes cantidades de datos. Por lo tanto, la aplicación de equipos HID también debe usarse de manera flexible de acuerdo con esta característica.