Título: Pulsos rapidisimos al puerto paralelo Publicado por: SOMBRIO en 7 Enero 2010, 19:10 pm Hola El tema del que les quiero hablar es para los que usamos el puerto lpt en vb6 y queremos leer datos desde el statusport con la libreria inpout32.dll
El problema con el que me tope es que lee super facil statusport = Inp(&H379) y esto lo leemos cada intervalo de tiempo con el timer puesto en cierto intervalo timer1.interval= 50 o 80 o 100 o 20 diferentes valores pero esto falla cuando leeemos valores enviados rapidisimo por ejemplo un pagador de monedas las revoluciones de un motor etc.. falla por que cuando vuelve a leer el statusport este ya cambio y volvio a la normalidad es decir yo quiero leer unos 1 y mi aparato a medir motor ya mando un 101 en lo que mi timer salto en ese intervalo y leyo un solo 1 o bien el segundo caso el motor trabajo mas lento y el timer ya leyo 3 intervalos y este motor solo esta en 1/16 del giro si en ese 16 de giro prende o acciona algo y mi pc debe leer cada que lo acciona otra vez falla por que el timer lee 3 lineas marcando que ya dio 3 tres unos "1" o dos o 4 etc.. y el motor no ha dado ni un 1 esta en 00000000 no se si me explique pero quien haya tenido este problema me entendera a la perfeccion lo ideal para resolver esto seria que el statusport solo cambiara cuando cmabia su lectura sin hacer intervalos de tiempo para leerlo Bueno pues para resolverlo se me ocurrio algo la verdad muy facil con el mismo timer este solo debe cambiar una vez que lea un cambio total de 360 grados es decir un 0 y un 1 y no solo un 1 o un 0 como es acostumbrado ejemplo de mi programa usando un etado de lectura de 11101 f variable usada para crear contador accion prender apagar algo despues de que de x giros en los que mi programa decide despues de cada que tanto intervalo de giro de 360 grados del motor acciono algo formload() Out &H378, 15 "mitad corriente mitad tierra ideal para un transistor y un rele" timer1.interval=20 "emasiado pequeño como para que se le vaya algo" timer1_timer() statusport = Inp(&H379) If (statusport = 143) And d = 0 Then d = d + 1 End If ""ahi ley 0001 If (statusport = 111) And d > 0 Then "111 es decimal binario es 11101" t = 1 f = (f - t) If f > 0 Then Label1.Caption = (f) d = 0 Else Out &H378, 255 WindowsMediaPlayer1.URL = "C:\e.mid" Label1.Caption = "0" Picture9.Visible = False d = 0 End If End If solo se activo si dio el cambio completo Se los dejo y si algun dia chocan con este problema les sea de ayuda ya que a mi me funciono La idea principal es reducir el intervalo del timer muy pequeño y solo leer el dato despues de que haya sido totalmente cambiado por ejemplo 10 110 001 01 0001 1110 leo el valor hasta que este cambia Saludos Título: Re: Pulsos rapidisimos al puerto paralelo Publicado por: ABDERRAMAH en 7 Enero 2010, 19:18 pm Joder, yo hubiera pensado en hacerlo por hardware, como los teclados que tienen un minicache de puro hardware que manda las órdenes pendientes en órden. Pero obviamente tu método es mucho mejor, más barato y no lo se, pero posiblemente más ligero.
Título: Re: Pulsos rapidisimos al puerto paralelo Publicado por: SOMBRIO en 7 Enero 2010, 19:21 pm si se reduce mucho el costo yo tambien pense en montarle un pic y que este mandara los pulsos mas lentos y constantes para que la pc los pudiera leer pero el solo hecho de meter el pic ya es un incremento de tiempo trabajo esfuerzo y mas tosco
Saldudos amigo Título: Re: Pulsos rapidisimos al puerto paralelo Publicado por: Meta en 8 Enero 2010, 01:05 am Que curioso, estoy creando ahora mismo una interfaz (http://www.forosdeelectronica.com/f26/interfaz-puerto-paralelo-29436/) para controlar el puerto paralelo con Visual C#. Cuando acabe, lo haré uno para Visual C++ y el otro para Visual Basic .net
qHVsolpOPXQ Título: Re: Pulsos rapidisimos al puerto paralelo Publicado por: SOMBRIO en 9 Enero 2010, 03:29 am Se ve muy coqueto tu programa pero solo escribe ? o tambien lee datos ?
tengo una aplicacion llamada vbtoconverter totalmente parcheado y pasa muy bien de un lenguaje a otro si lo necesitas para tu proyecto te lo paso avisame voy a poner unas fotos de el sistema terminado para que veas el motor que use en mi proyecto y el uso que tiene use un fototransistor para conocer el intervalo del giro del motor en el que se encuentra Saludos amigo |