Enviando datos C # a PIC mediante USB

1

Quiero enviar datos, C # a PIC mediante USB (UsbLibrary.dll). Estoy usando los siguientes códigos para enviar datos;

private void button1_Click(object sender, EventArgs e)
        {
            byte[] my_buffer = new byte[64];
            my_buffer[1] = (byte)0x01;
            usbHidPort1.SpecifiedDevice.SendData(my_buffer);
        }

Pero obtuve un error ya que el valor de usbHidPort1.SpecifiedDevice es nulo (lo que significa que el dispositivo Connected PIC no está identificado por C #), aunque el ID del proveedor y del producto está codificado en C # y CCS C (PIC). ¿Cómo se pueden enviar datos C # a PIC usando UsbLibrary?

    
pregunta ceng

2 respuestas

1

La forma más sencilla de enviar datos desde la PC a su dispositivo PIC es mediante comunicación en serie a través de USB.

  • Haga que su PIC actúe como dispositivo USB CDC .
  • Para ser reconocido por el sistema operativo y para proporcionar un puerto COM virtual,
    • use una combinación de VID / PID que es utilizada por algún dispositivo que usa tal comunicación serial por USB y, por lo tanto, el controlador serial estándar
    • o agregue un controlador personalizado (archivo .inf en Windows) para su dispositivo que luego use el controlador serial estándar (usbser.sys en Windows). Se pueden encontrar ejemplos de dicho archivo .inf en las bibliotecas de aplicaciones de Microchip.
  • 'Hablar' con el dispositivo a través del puerto COM virtual.
    • Use una aplicación de consola serie (por ejemplo, PuTTY) para las pruebas manuales.
    • Las cadenas de eco de la consola como echo hello pic > COM6 .
    • Echo cadenas desde una aplicación / plugin / script / lo que sea al puerto COM virtual.
respondido por el Mape
0

La sugerencia de Mape es justa, pero tiene una clara desventaja con respecto al enfoque HID que ya está tomando, es decir, la necesidad de un controlador de dispositivo.

Ha proporcionado muy poca información para explicar exactamente por qué su configuración no funciona, pero el método más sencillo para llegar a una solución final de trabajo es comenzar desde una configuración básica y expandirla / personalizarla de manera iterativa según sus necesidades. Esto puede ser un progreso difícil y tedioso. Podría considerar seguir un enfoque como el siguiente.

  1. Comience con un firmware HID válido. El Microchip MLA [1] tiene numerosos ejemplos para muchas familias de dispositivos. El ejemplo en \ apps \ usb \ device \ hid_custom probablemente sea compatible con su chip o se adapte fácilmente para admitirlo. CCS puede ofrecer un ejemplo similar. Una vez que lo compile, asegúrese de que el dispositivo se enumere correctamente (aparece en el administrador de dispositivos, sin ningún código de error).

  2. Asegúrate de que puedes comunicarte con el dispositivo. El ejemplo viene con un proyecto C ++ / CLI. Haz que esto funcione antes de continuar.

  3. Comuníquese con el dispositivo HID utilizando la biblioteca de su elección, es decir, su UsbLibrary.dll . Leer desde dispositivos HID no es difícil, pero las bibliotecas pueden aliviar el dolor de la enumeración de dispositivos. Personalmente, he usado "HidLibrary" por Mike O'Brien en el pasado.

  4. Ahora puede comenzar a personalizar el firmware. Mantenga sus descriptores de informes tan simples como sea posible y pruebe su contraparte de C # después de cada cambio para minimizar sus dolores de cabeza. Si el dispositivo ya no funciona, descargue el descriptor de su dispositivo con una herramienta como [2] y revise cuidadosamente sus cambios.

[1] enlace

[2] enlace

    
respondido por el Frank Razenberg

Lea otras preguntas en las etiquetas