Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Contador En Timer Vigilar Y Contar Cambios De Propiedades
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Contador En Timer Vigilar Y Contar Cambios De Propiedades 
 
hola
hace tiempo que no preguntaba
cambie disco y perdi la contraseña  
y todo lo demas


estaba tratando de hacer el contador calculadora
89e87cac2
mas detalles aqui http://www.taringa.net/posts/hazlo-...alculadora.html
solo que en version pc
entonces buscando encontre el siguiente codigo en delphi

que permite conectar hasta cuatro interuptores al puerto serie  pintar unos shapes segun su estado
abierto o cerrado

begin
    If HComm > 0 then
    Begin
      GetCommModemStatus (HComm, MdmSts);
      If MdmSts And MS_RLSD_ON = 0 Then Shape1.Brush.Color := clRed
                                   Else Shape1.Brush.Color := clTeal;
      If MdmSts And MS_DSR_ON = 0 Then Shape2.Brush.Color := clRed
                                   Else Shape2.Brush.Color := clTeal;
      If MdmSts And MS_CTS_ON = 0 Then Shape3.Brush.Color := clRed
                                   Else Shape3.Brush.Color := clTeal;
      If MdmSts And MS_RING_ON = 0 Then Shape4.Brush.Color := clRed
                                   Else Shape4.Brush.Color := clTeal;
       SoundAlarm;
      End;
end;

 

mirando la documentacion de gambas
no es problema solo se necesita el componente serial y un timer y facilmente se puede hacer lo mismo
y estube probando y funciona

el problema es como hacer un contador

algo como i=1+1 dentro del timer no funciona
debido a que segui contando todo el tiempo que este activada la linea

o sea si pulso el interruptor 1 segundo   i=1+1 se repetira muchas veces  segun el tiempo que este configurado en el timer
cuando deberia solo contar una vez         
e estado durante horas y horas pensando una solucion y no se me ocurre nada

pd  
 
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contador En Timer Vigilar Y Contar Cambios De Propiedades 
 
Bueno, una posible solución es en vez de "contar" la señal en alto, cuentes más bien flancos de de subida (o de bajada)......... Osea, cada vez que la señal cambie de 0 (False) a 1 (True) incrementes tu contador en uno.

Algo así como en pseudocódigo:


PRIVATE flag=False AS Boolean
PRIVATE icount=0 As Integer

Sub timer_Timer()

  If (serial.CTS AND NOT flag) Then icount += 1
  flag = serial.CTS
 
END Sub

 


Aunque claro el tiempo del timer para mejores resultados debiera de ser muy pequeño, depende de la frecuencia de la señal (la frecuencia de muestreo debe de ser por lo menos 2 veces la frecuencia máxima de la señal a muestrear).

Saludos!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contador En Timer Vigilar Y Contar Cambios De Propiedades 
 
Espera, acabo de ver la documentación de la clase SerialPort (es que yo también estoy haciendo un programa que la usa) y tiene los eventos CTSChange  DCDChange  DSRChange  DTRChange  RNGChange  RTSChange gambasdoc.org/help/comp/gb.net/serialport por lo que me parece más útil usar dichos eventos, algo como:

PRIVATE icount=0 AS Integer

Sub serial1_CTSChange(estado)
  IF estado Then icount += 1
END Sub
 


No lo he probado, pero algo así sería.

Saludos
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contador En Timer Vigilar Y Contar Cambios De Propiedades 
 
razaAztk escribió: [Ver mensaje]
Espera, acabo de ver la documentación de la clase SerialPort (es que yo también estoy haciendo un programa que la usa) y tiene los eventos CTSChange  DCDChange  DSRChange  DTRChange  RNGChange  RTSChange gambasdoc.org/help/comp/gb.net/serialport por lo que me parece más útil usar dichos eventos, algo como:

PRIVATE icount=0 AS Integer

Sub serial1_CTSChange(estado)
  IF estado Then icount += 1
END Sub
 


No lo he probado, pero algo así sería.

Saludos

el prrimer codigo no sirvio
pero
estuve pensando en esto
 y encontre 2 soluciones

cuando la señal cambia de false  a true detener el timer
para que no siga contando
realizar  la suma
esperar 20 ms y  reactivar el timer

usar el evento  y una variable publica  bolean"ocupado"
mas menos asi

ocupado as bolean = false
evento()
if ocupado = true then
 salir ' sale  sin hacer nada
endif

if señal= true then
espera 20ms
 contar=contar+1
end if
ocupado=false

endsub


la espera  de 20ms y la variable  ocupado es por un problema de rebote  
tipico de los pulsadores en los circuitos electronicos

asi me aseguro que solo cuente una vez
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contador En Timer Vigilar Y Contar Cambios De Propiedades 
 
codificador:

Me parece bien lo del tiempo de antirebotes.
Y del código que posteé según yo debiese de funcionar con, tal vez, algunas modificaciones. Cómo estás haciendo las conexiones de los switch en el serialport? Para igual yo hacer algunas pruebas.

Saludos.
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Contador En Timer Vigilar Y Contar Cambios De Propiedades 
 
razaAztk escribió: [Ver mensaje]
codificador:

Me parece bien lo del tiempo de antirebotes.
Y del código que posteé según yo debiese de funcionar con, tal vez, algunas modificaciones. Cómo estás haciendo las conexiones de los switch en el serialport? Para igual yo hacer algunas pruebas.

Saludos.

asi
solo que directo sin los optoacopladores

 puerto_serie
 



 
última edición por jguardon el Viernes, 29 Marzo 2013, 01:16; editado 2 veces 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Contar Archivos De Un FileView Shell General 0 Lunes, 28 Enero 2013, 00:24 Ver último mensaje
Shell
No hay nuevos mensajes Contar, Agrupar, Ordenar Shell Bases de Datos 7 Sabado, 23 May 2015, 10:39 Ver último mensaje
shordi
No hay nuevos mensajes Contar Coicidencias De Un Patron En Un String v3ctor General 10 Sabado, 13 Junio 2015, 16:01 Ver último mensaje
shordi
No hay nuevos mensajes Añadir Un Contador De Tiempo A Un Spinner vuott Aplicaciones/Fragmentos de Código 17 Jueves, 19 Septiembre 2019, 16:05 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron