• Viernes 17 de Mayo de 2024, 07:30

Autor Tema:  Problemas Timer1_timer()  (Leído 3907 veces)

IAO

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Problemas Timer1_timer()
« en: Martes 16 de Agosto de 2005, 16:39 »
0
Hola a todos.

Soy un Novato. Este mi primer Mensaje.
Trataré comunicarles mi problema.
Hice a medias un programa que envía al Puerto físico (LPT1) unos Bits.
Luego le añadí un Puerto Lógico (200) y comenzaron los conflíctos.

Ambos Puertos (Lógico y Físico) tienen sus respectivos Módulos.

El programa funciona bién si lo compilo con uno solo de esos puertos (Lógico o Físico).
 
Pero al unir los 2 puertos  en el  "Private Sub Timer1_Timer()", los indicadores de salida (led's), muestran intermitencia.

Entiendame por favor, no le pido, que me lo haga.
Solo que me oriente, en lo que pueda.
Si debo leer algo en particular, muestreme el enlace.
He intentado varias maneras y formas, pero sin resultado.


Por favor.
Dele un vistazo al código, y hágame algún comentario.
Será de mucha utilidad para mí.
Si prefieres bájate el proyecto completo, al final puedes tomarlo.
*-*-* (Gracias y recontra Gracias)*-*-*


Private Sub Timer1_Timer()

    ' Read SIGNED WORD from port 200:
    EmuPto = 200 'READ_IO_WORD(200)
    Dim i As Integer
    Dim v As Byte
    For i = 0 To 7
        v = EmuPto Mod 2 'Cantidad de digitos. 1 y 0 Aquí.
        Led(i).Picture = dig(v).Picture
        EmuPto = Int(EmuPto / 2) '10)
    Next i

'Lee el dato del puerto.  'Inp(&H378)
m = Inp(Puerto)  '+ 1) Esto Daba un problema en la salida.

'Debe ir en éste Orden.
'=========================
'Otra forma de Entenderlo.
If m > 127 Then Bit(7) = 0: m = m - 128 Else Bit(7) = 1 '0 'Invertido
If m > 63 Then Bit(6) = 0: m = m - 64 Else Bit(6) = 1
If m > 31 Then Bit(5) = 0: m = m - 32 Else Bit(5) = 1
If m > 15 Then Bit(4) = 0: m = m - 16 Else Bit(4) = 1
If m > 7 Then Bit(3) = 0: m = m - 8 Else Bit(3) = 1
If m > 3 Then Bit(2) = 0: m = m - 4 Else Bit(2) = 1
If m > 1 Then Bit(1) = 0: m = m - 2 Else Bit(1) = 1
If m > 0 Then Bit(0) = 0: m = m - 1 Else Bit(0) = 1

'Controla los Led's de estado.
For Ciclo = 0 To 7
If Bit(Ciclo) = 0 Then _
Led(Ciclo).Picture = LoadPicture(App.Path + "\LR.BMP") _
Else Led(Ciclo).Picture = LoadPicture(App.Path + "\LG.BMP")
Next Ciclo
End Sub
[/size]
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

eliza_marti

  • Miembro MUY activo
  • ***
  • Mensajes: 267
    • Ver Perfil
    • http://www.solocodigo.com
Re: Problemas Timer1_timer()
« Respuesta #1 en: Martes 16 de Agosto de 2005, 18:14 »
0
Holas IAO  :hola: ...Estuve viendo tu code y analizando lo que nos dices..que te funciona bien por separado...pues..creo que tu problemita está en que los dos Timers los mandas a ejecutar al mismo tiempo predeterminadamente (Enabled= true)   :(   y ...como dentro de los dos timer tambien mandas a simular el encendido y apagado habilitando y desabilitando los mismos Leds (Bmp's) ..tonces eso te podría estar ocasionando la intermitencia visualmente hablando.. :) ..mmm..si hicieras otro arreglo de Leds podrias notar la diferencia..o si ..no se ..podrías validar para que por ejemplo .. si Port.ListIndex=0 tonces timer1.enabled=true y timer2.enabled=false ....y hacer algo parecido si el Port.ListIndex=1 tonces te tocaría lo contrario..timer2.enabled=true y timer1.enabled=false...
 :)  ...Bueno...ese lo que yo haría en tu caso..para probar si ese es el error.. :P ...mucha suerte..y nos cuentas como te fue.. ;) ..ojalá que te valla bien.. :)  Bye..bye.. :hola: .. :comp:  :guitar:

PDTA: IAO..noté que el Combobox llamado Port está muy chiquito..y no se podía ver las otras 2 opciones de los puertos LPT1 y LPT2.. :( ...yo las tuve que agrandar para evitar confusiones..te aconsejaría lo mismo.. :)  ahora si me voy.. :hola:  no los canso más.. :P ...
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....

http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
[

eliza_marti

  • Miembro MUY activo
  • ***
  • Mensajes: 267
    • Ver Perfil
    • http://www.solocodigo.com
Re: Problemas Timer1_timer()
« Respuesta #2 en: Martes 16 de Agosto de 2005, 19:25 »
0
Ah.. :unsure: ..se me olvidaba..IAO..date cuenta tambien de los Interval de los Timers..mira que uno es de 300 y el otro de 100..uno se ejecuta detrás del otro..y como su resultado está en el mismo arreglo  de Leds (Bmp's)..(1 para 2)..mmm...por ahi tambien puede estar tu error.. :)
Ahora si..emprendo la retirada..Adios.. :hola:
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....

http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
[

IAO

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Problemas Timer1_timer()
« Respuesta #3 en: Miércoles 17 de Agosto de 2005, 17:34 »
0
Hola...

Gracias "Eli" por sus comentarios.
Los analizaré, luego les comento.

Sobre el ComboBox, te comento que: Siempre_Encima Control32, True
es el responsable de mantener en primer plano el "FORM". Esto hace que el
ComboBox se comporte un tanto extraño. Hice una trampa para evitar ese problema.

Disculpen si tardo un poco en responder.

Lo de "Eli" es por cariño. Se ve lindo.

Regresaré.

IAO

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Problemas Timer1_timer()
« Respuesta #4 en: Jueves 18 de Agosto de 2005, 00:50 »
0
Hola.

Como les decía, !!!!!YA ESTA¡¡¡¡¡    :beer:

El Programa tomó otro rumbo, pero funciona Igual.
No pude hacerlo funcionar con el "ComboBox", pero le
apliqué unos "RadioButom" y todo bién.

Aquí se los dejo como muestra de amistad.
El que quiera bájelo y disfrútelo, sino déjelo allí.

Gracias "Eli"  , no me funcionó, pero me ayudó a otro enfoque.

Por los momentos, queda así, mientras termino mis proyectos
de Assembler que son muchos.

Chao, espero lo disfruten. Chao "Eli"  :kiss:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

eliza_marti

  • Miembro MUY activo
  • ***
  • Mensajes: 267
    • Ver Perfil
    • http://www.solocodigo.com
Re: Problemas Timer1_timer()
« Respuesta #5 en: Jueves 18 de Agosto de 2005, 16:59 »
0
Holas IAO!.. :hola: .me alegra que todo esté bien.. :)  ..sabes?..de pronto no me hice entender bien.. :P  ..pero el enfoque por separado que le diste ..poniendo los RadioButom..pues es lo que trataba de decirte al principio pero que lo hagas con el ComboBox...ya que estabas haciendo mal mandando a encender los mismos leds sin importar si eran de parte del Emu8086 Port o del LPT1 - (378)..y ..como los dos timers se ejecutaban al mismo tiempo (aunque a intervalos distintos)..pues te daba errores.. :( ....pero bue.. :)  ..me alegro que todo haya tenido un feliz termino.. :sorcerer:  y...mucha suerte con tus proyectos en assembler.. :yes: ..
porcia...es el assembler de los pic's?.. :huh: ..

Mucha Suerte!!.. ;)  ..Nos Vemos..ba baye.. :hola:
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....

http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
[

IAO

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Problemas Timer1_timer()
« Respuesta #6 en: Jueves 18 de Agosto de 2005, 17:59 »
0
Hola..

Si "Eli".
Anoche en casa, analizando más. Logré implementarlo con el ComboBox.

Encerré en un "If <-------------> End If" cada puerto y funcionó.

';Para el EmuPort
';========================================================
';Read SIGNED WORD from port 200:
EmuPto = READ_IO_WORD(200)
   
If Port.ListIndex = 0 Then
   
    ';Display 7 digits:
    Dim i As Integer
    Dim v As Byte
    For i = 0 To 7
        v = EmuPto Mod 2 ';Cantidad de digitos. 1 y 0 Aquí.
        Led(i).Picture = dig(v).Picture
        EmuPto = Int(EmuPto / 2)
    Next i
End If


Bueno sobre assembler: para Pics y para Macro Asseembler. (Mams32)

Hablamos, felicidad.