USB con labview

Hola amigos los felcito por tan buena pagina, quisiera ver si me pueden ayudar en algo, resulta que tengo que ver como me puedo comunicar en labview 8 por medio del bus USB, no se si es posible realizar la lectura y escritura de un pendrive o realizar un chat por medio del USB, la idea es ver que herramientas dispongo para establecer esta comunicacion, ojala puedan orientarme en aquello que ha sido un dolor de cabeza para mi,
Muchas Gracias y sigan con tan buena pagina..

Atte Lord_Inricam
 
Quisiera comunicar una tarjeta de adquision de datos que yo estoy fabricando a traves del puerto usb con labview. estoy utilizando el pic 18f2550, y segun he leido en la ayuda de labview para facilitar la conexion se requiere que este sea de clase usbtmc (usb test and measurement class) para configurarlo a traves de visa, quisiera que por favor alguien me facilitara un fireware para que mi dispositivo soporte esta clase o me guíen en como hacerlo. he leido en solicitudes de ayuda de personas en años anteriores como altair que requerian lo mismo que yo, si por favor estas personas ya lograron desarrollar sus proyectos les agradecería mucho toda la ayuda e información q me puedan brindar.
desde ya gracias!!! :)
 
Electra,

Una de manera de hacer la conexion es mediante el uso de una dll que proporciona Microchip, esta se llama mpusbapi.dll. Hacerla funcionar en Labview es muy sencillo.

Te recomiendo que visites esta pagina:

http://picmania.garcia-cuervo.com/USB_0_Desencadenado.htm

ahi encontraras mucha información que seguro te va a servir en el desarrollo de tu proyecto.

Ademas espero que compartas tus resultados con el foro.

Saludos..
 
hola eidtech, gracias por tu ayuda, pues te cuento el archivo mpusbapi.dll ya lo tengo en un ejemplo q encontre en la pagina www.hobbypic.com, pero segun he leido en la pagina de NI para labview se crea el driver a travez VISA driver debelopment wizard que se encuentra en inicio->todos los programas-> national instrument->visa, alli se genera una archivo .inf y para ello hay q saber el ID vendor y el ID product que en mi caso al programar el pic para usb se establecen estos numeros con el ejemplo q les hable hecho por J1M, una vez se crea este archivo se copia y se instala en la carpeta WINDOWS/INF, ya luego coencto el usb y se supone se insatala normal con este driver pero el problema q ahora tengo es q me pide una archivo llamado "mchpusb.sys" q es de microchip pero una herramietna de NI en la misma parte de VISA llamado VISA interactive control la cual permite la comunicacion del dispositivo con labview no me lo detecta :( , y es lo q no entiendo como hacer.
 
Hola
Soy nuevo en esta pagina, pero veo son gente muy capaz y que de hecho saben mucho delo que hablan. Tengo un problema, necesito comunicar labview 8.5 con un dispositivo USB. La idea es ver cuales son los requisitos para que labview pueda interactuar con un dispositivo USB, de preferencia cualquiera. Ya vi lo de usar VISA, pero de nuevo me da problemas con los dll.
Me ayudaria mucho si me pudieran dar alguna referencia de manual o algo asi, pues no cuento con un dispositivo especifico USB con el cual me queiro conectar.
Perdon si sueno un poco vago, pero es toda la información que me han dado y soy nuevo en esto.
Gracias por su tiempo.
 
Hola, yo también he usado el pic18f2550 con labview por medio del puerto usb.

Lo que hice fue aprender la parte de la programación del pic por medio de la página www.muchotrasto.com (te la recomiendo ampliamente), ahí te enseñan a programarlo con las librerías CDC del compilador CCS, esto significa que solo tienes que instalar el archivo *.inf (que la misma página te proporciona) y ya está, tu ordenador reconocerá a tu pic como si estuviera conectado a un puerto serial!.

Solo tienes que ver en el administrador de dispositivos qué puerto COM le asignó a tu pic y de ahí el puerto serial es fácil manipularlo desde labview.

Espero te sirva esta información y suerte con tu proyecto, ya nos contarás que curiosidades haces con él.
 
yo tambien saque la comunicacion por usb con la libreria de microchip ya que por visa no pude , y hasta el momento todo handa bien cualquier cosa estamos para ayudarnos
 
Estaría buenisimo que postearas algo con labview de usb. Igual me voy a tener que meter a leer como es la programación con ese lenguaje por que hasta ahora todo lo que programado en la pc lo he hecho en vb 2006.
 
si mira labview es muy sencillo lo unico que hay que tener en cuenta es que no se programa de la forma tipica que conocemos ( por lineas de instruccion ) sino por lenguaje g ( grafico ) en donde no se ejecuta de abajo hacia arriba sino con una perspectiva nodal para que me entiendas es como si estuvieras simulando un circuito
por ejemplo en c para sumar dos numeros que hariamos :
x=2;
y=3;
z=x+y; // 5
en labview tendriamos un esquema que simboliza la suma con dos entradas ( los dos numeros ) y una salida ( resultado ) ;espero que haya servido cualquier cosa avisenme he hecho muchas cosas con este software ,cualquier cosa a la orden
 
La verdad , me gustaría aprender todo lo que pueda de este lenguaje. Igual primero me lo voy a conseguir y después veo si me bajo algunos tutos al respecto , cualquier duda te la comento.
 
Patico21 dijo:
alguien me m puede ayudar a hacer la comunicacion usb con lab view con visa o por lo menos los pasos para poder lograrlo les agradeceria mucho

patico21 como estas antes de meternos con labview no se si ya tengas información del protocolo ; como funciona ,que podemos hacer . si no la tienes hacer lo primero que debes hacer es visitar estos foros y paginas recomendados ya despues integrarlo con labview es facil cualquier cosa estamos para servirte

https://www.forosdeelectronica.com/f24/control-dispositivos-traves-modulo-usb-pic18f2550-17458/
http://picmania.garcia-cuervo.com/USB_0_Desencadenado.php

si por el contrario ya tienes algo de conocimiento sobre el usb entonces dirigite a este foro que lo estoy llevando sobre labview y el primer ejemplo es sobre comunicacion usb el modo cdc (Communications Devices Class) saludos

https://www.forosdeelectronica.com/f26/usb-labview-entre-otros-18338/
 
Hola a todos.
Antes que nada daros a todos las gracias por los aportes que hacen. Gracias a ellos, he conseguido comunicarme en modo usb cdc con el micro sin ningún problema.

El problema lo estoy teniendo con el modo hid. Para empezar he partido del ejemplo de CCS ex_usb_hid.c, modificándolo para usarlo con el pic 18f2550. El programa manda periódicamente un byte constante (0x55) y el valor del ADC. Para probar que funciona, he utilizado una aplicación hiddemo.exe, con la que puedo leer la información mandada con un dispositivo hid. Con esta aplicación, detecto el dispositivo y recibo tanto el byte constante como la lectura del ADC, así que entiendo que el pic funciona perfectamente en modo hid.

Creé una aplicación en labview para hacer la lectura de estos bytes utilizando la librería mpusbapi.dll, pero no conseguí ninguna respuesta. Me bajé el vi de jokelnice para detectar el dispositivo hid y tampoco lo detecta. Llevo un tiempo dándole vueltas al asunto pero no entiendo qué es lo que puedo estar haciendo mal, ¿me podríais echar una mano?

Código:
#define __USB_PIC_PERIF__ 1

//if using a 16bit PIC on an Explorer 16 borad, set this to 1
#define __USB_PIC_EXPLORER16__   1

#if __USB_PIC_PERIF__
#define LED_ON(x) output_high(x)
#define LED_OFF(x) output_low(x)
#DEFINE LED1  PIN_B6
#DEFINE LED2  PIN_B7
#DEFINE LED3  PIN_C0
#define sw1  input(PIN_A3)
 #include <18F2550.h>
 #device ADC=8
 #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
 #use delay(clock=48000000)
 
#endif


#use rs232(baud=9600, UART1, errors)

// you can change the tx and rx packet sizes here.
// in order to be compatbile with hiddemo.exe, these values must be 2.
#define USB_CONFIG_HID_TX_SIZE   2
#define USB_CONFIG_HID_RX_SIZE   2

/////////////////////////////////////////////////////////////////////////////
//
// Include the CCS USB Libraries.  See the comments at the top of these
// files for more informaciónrmation
//
/////////////////////////////////////////////////////////////////////////////

#include <pic18_usb.h>   //Microchip PIC18Fxx5x hardware layer for usb.c

#include <usb_desc_hid.h>   //USB Configuration and Device descriptors for this UBS device
#include <usb.c>        //handles usb setup tokens and get descriptor reports


/////////////////////////////////////////////////////////////////////////////
//
// Configure the demonstration I/O
//
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
//
// usb_debug_task()
//
// When called periodically, displays debugging informaciónrmation over serial
// to display enumeration and connection states.  Also lights LED1 based upon
// enumeration and status.
//
/////////////////////////////////////////////////////////////////////////////
void usb_debug_task(void) 
{
   static int8 last_connected;
   static int8 last_enumerated;
   int8 new_connected;
   int8 new_enumerated;

   new_connected=usb_attached();
   new_enumerated=usb_enumerated();

   if (new_enumerated)
      LED_ON(LED1);
   else
      LED_OFF(LED1);

   if (new_connected && !last_connected)
      printf("\r\n\nUSB connected, waiting for enumaration...");
   if (!new_connected && last_connected)
      printf("\r\n\nUSB disconnected, waiting for connection...");
   if (new_enumerated && !last_enumerated)
      printf("\r\n\nUSB enumerated by PC/HOST");
   if (!new_enumerated && last_enumerated)
      printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration...");

   last_connected=new_connected;
   last_enumerated=new_enumerated;
}

void main(void) 
{
   int8 out_data[2];
   int8 in_data[2];
   int8 send_timer=0;

   LED_OFF(LED1);
   LED_OFF(LED2);
   LED_OFF(LED3);

   printf("\r\n\nCCS Vendor Specific HID Example");

  #ifdef __PCH__
   printf("\r\nPCH: v");
   printf(__PCH__);
  #elif defined(__PCD__)
   printf("\r\nPCD: v");
   printf(__PCD__);
  #else
   printf("\r\nPCM: v");
   printf(__PCM__);
  #endif

   usb_init_cs();

  #if !(__USB_PIC_PERIF__)
   printf("\r\nUSBN: 0x%X", usbn_get_version());
  #endif
   printf("\r\n");

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);

   while (TRUE) 
   {
      usb_task();
      usb_debug_task();
      if (usb_enumerated()) 
      {
         if (!send_timer) 
         {
            send_timer=250;
            out_data[1]=read_adc();
            out_data[0]=0x55;
            if (usb_put_packet(1, out_data, 2, USB_DTS_TOGGLE))
               printf("\r\n<-- Sending 2 bytes: 0x%X 0x%X", out_data[0], out_data[1]);
         }
         if (usb_kbhit(1)) 
         {
            usb_get_packet(1, in_data, 2);
            printf("\r\n--> Received data: 0x%X 0x%X",in_data[0],in_data[1]);
            if (in_data[0]) {LED_ON(LED2);} else {LED_OFF(LED2);}
            if (in_data[1]) {LED_ON(LED3);} else {LED_OFF(LED3);}

         }
         send_timer--;
         delay_ms(1);
      }
   }
}



 
biskinson dijo:
Hola a todos.
Antes que nada daros a todos las gracias por los aportes que hacen. Gracias a ellos, he conseguido comunicarme en modo usb cdc con el micro sin ningún problema.

El problema lo estoy teniendo con el modo hid. Para empezar he partido del ejemplo de CCS ex_usb_hid.c, modificándolo para usarlo con el pic 18f2550. El programa manda periódicamente un byte constante (0x55) y el valor del ADC. Para probar que funciona, he utilizado una aplicación hiddemo.exe, con la que puedo leer la información mandada con un dispositivo hid. Con esta aplicación, detecto el dispositivo y recibo tanto el byte constante como la lectura del ADC, así que entiendo que el pic funciona perfectamente en modo hid.

Creé una aplicación en labview para hacer la lectura de estos bytes utilizando la librería mpusbapi.dll, pero no conseguí ninguna respuesta. Me bajé el vi de jokelnice para detectar el dispositivo hid y tampoco lo detecta. Llevo un tiempo dándole vueltas al asunto pero no entiendo qué es lo que puedo estar haciendo mal, ¿me podríais echar una mano?


Colega el vi solo funciona con usb modo bulk , no en hid
 
OK, he usado #DEFINE USB_HID_DEVICE FALSE y funciona. Gracias, jokelnice. ¿La librería mpusbapi.dll no se puede utilizar en modo hid? ¿Habría que utilizar la librería hid.dll de windows? ¿Tenéis algún ejemplo usando esta librería?
 
Saludos...

Les comparto mis experiencias con la comunicación por puerto USB con PIC de Microchip (compilado con CCS C compiler) y Labview 8.2 usando "Call Library Function Node" para manipular mpusbapi.dll ... espero les sea útil. Espero sus comentarios.
 

Adjuntos

  • daq_384.zip
    592.2 KB · Visitas: 2,666
Atrás
Arriba