TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: pocher en 02 de Febrero de 2008, 07:45:28
-
Hasta ahora para recibir datos automáticamente estoy utilizando un Timer que llama constantemente a la función MPUSBRead con lo cual está contínuamente leyendo y actualizando.
Lo ideal sería que solo leyera y actualizara cuando reciba algún dato, vamos como si fuese por interrupción. Y esto es lo que quiero preguntaros.
Hay otra función que es la MPUSBReadInt que aparentemente parece que sea la buena pero la intercambio por la MPUSBRead y no saca nada.
Lo dicho, alguién lo ha hecho "por interrupción".
Un saludo
-
No creo que preguntar cada x tiempo sea una forma de "malgastar" tiempo de proceso del ordenador ya que lo que estamos haciendo es un pulling.
Si lo que queres es hacerlo mediante una interrupción tendrías que utilizar hilos en tu aplicación y alguna interrupción IRQ del PC que no es nada sencillo y mucho menos en visual basic ya que este no tiene suficiente potencia para realizar lo que quieres hacer.
Un saludete.
-
Habeis utilizado la función MPUSBReadInt?
Para qué sirve?
-
Hola Pocher. Yo tambien ando como loco buscando esto.
Todo esta orientado en el API de Windows y, quiza, en unas macros llamadas BEGIN_MESSAGE_MAP, si no me equivoco. O tambien un codigo llamado HOOK. De estos dos tengo muy poca informacion para son escencialmente para capturar los mensajes que windows envia continuamente cuando un evento ocurre, aunque no sabria como especificar el evento de dato alojado y, peor aun, especificar de q dispositivo esperar.
Veras, usmeando en la mpusbapi.dll, la funcion MPUSBReadInt solo es para leer la pipe del modo de comunicacion: Interrupcion. Ocea no sirve :P porque lo q yo quiero es por bulk, igual que tu. Pero lo q si, es la funcion API que usa: DeviceIoControl(...), aunq no estoy del todo seguro como se puede configurar para tal proposito.
Puse algo mas de info, mas detallada, sobre la mpusbapi.dl en el tema de J1M, en PicUSB. Justo AQUI (http://www.todopic.com.ar/foros/index.php?topic=2260.msg153477#msg153477)
La verdad, que ando como loco buscando la manera de lograrlo. Espero puedas brindarm los conocimientos que tienes sobre esto :)
Un saludo.
-
Hola jeremylf.
Yo quería aplicar lo de la interrupción para que en caso de que se desconecte el cable te avise por pantalla.
Has hecho un estudio muy profundo yo no he llegado a tanto, ni mucho menos.
Creo que voy a pasar a otro tema y dejar ya lo del USB. Estoy intentando ponerme medio al día con respecto a otros componentes del FORO, aunque eso es muy dificil, pinché y recuperar posiciones lleva su mucho tiempo.
Un saludo y ánimo con tu estudio.
-
Hola Pocher. Yo enrealidad busco esto porque necesito enviar unos 65000 datos a la PC. Y leer con un timer, aparte de malgastar recursos innecesariamente, no llega a cojer algunos datos. Ocea, los pasa por alto.
Y sobre lo que tu queires, dedusco q tu quieres enviar siempre datos para decirle que aun "sige vivo" no? Para eso tb hay que usar los mensajes de windows y todo eso que aun nose :lol:
Suerte con eso.
salu2.
-
Hola a todos, yo también estube intentando enviar datos por interrupción a la PC con un 18F2550, programando el micro en CCS y en la PC con Visual C#, y utilizo la mpusbapi. El hecho es que lo he simulado en proteus y funciona a la perfección, en mi caso tengo el micro conectado a un teclado matricial de 4X4 y una pantalla LCD 16X2. Pero al momento de tratar de correrlo en el micro no funciona... He intentado buscar como realizar envio de datos por interrupción pero no logro encontrar nada, es decir, esta claro que el pic dispone de un flag cuando recibe datos USB, la cuestión sería poder tener algo similar en la PC, como es en el caso del RS232.
Si alguien ha logrado hacer algo así, se lo agradezco.
Saludos.
-
hola amigos del foro, recurro a ustedes por que no he logrado transmitir mas de 100 bytes en modo BULK USB para visualizarlos en labview y me preguntaba si alguien ha logrado enviar gran cantidad de datos a traves del pic hacia la pc. en mi caso utilizo un PIC18F2550 para enviar datos obtenidos desde el conversor ADC (Aprox. 5000bytes). agradezco su colaboración
-
Grandes cantidades de datos...MMnno.
yo lo maximo que he logrado enviar en modo Bulk han sido unos 8kiloBytes por segundo. migsantiago ha logrado enviar bastante mas que eso, pero usando el modo de interrupcion HID.
-
Migsantiago ha logrado enviar bastante mas que eso, pero usando el modo de interrupcion HID.
Exactamente, un capo! En Dusas USB y 12Mbps (http://www.todopic.com.ar/foros/index.php?topic=25188.msg205849#msg205849) tenes toda la info de como pudo realizarlo ;-)
Saludos!