Programación General > C++ Builder

 Pregunta

<< < (2/3) > >>

Devilcpc:
ok, gracias por la informacion

ya q estoy te hago otra pregunta:

estoy haciendo un trabajo para la facultad (2° año de ing electronica), y elegimos hacer el control de alarma y manejo de una casa
en una seccion el usuario puede elegir q las luces de la casa se prendan y se apagen a una hora determinada, la parte de prender y apagar luces ya se como hacerla, mi duda es como hacer q se active y desactive a la hora determinada
supongo q es tambien con el TTimer, pero como le pongo el principio y el fin?

espero q me hayas entendido, sino decime y me trato de explicar mejor

Saludos

Hodoacro:
Efectivamente tienes que utilizar un objeto TTimer que sea visitado cada cierto tiempo, Si quieres ser muy exacto podría ponerle un intervalo de menos de un segundo, pero puedes ponerlo que se visite cada 5 segundos, por ejemplo (TTimer->Interval=5000).

create dos variables del formato de hora, existe gran canitidad de tipos de estas variables, una de ellas, que esta definida en "dos.h" es :

struct time {
   unsigned char ti_min;      /* minutes */
   unsigned char ti_hour;     /* hours */
   unsigned char ti_hund;     /* hundredths of seconds */
   unsigned char ti_sec;      /* seconds */
};

esta estrucutura es usada por funciones como :

void gettime(struct time *timep);
void settime(struct time *timep);

Create dos variables de este tipo, por ejemplo, HoraComienzo y HoraFin, que sean rellenadas en las dos funciones asociadas a los botones hora comienzo y hora final.

create una función que tendrás que asociar al evento OnTimer del Objeto TTimer, que es la que va a comparar la hora actual con estos dos variables:

FuncionXxx(){

struct time TActual;

GetTime (&TActual); // pilla la hora actual del sistema

// ---- a partir de aquí compara los datos TActual con los de HoraComienzo y HoraFin

..
..
..
}

Espero que te sirva.

Devilcpc:
buenas

estoy trabajando en esto y tengo algunas dudas, en vez de usar la libreria dos.h uso la time.h y las variables son asi:

--- Código: Text ---       TTime HoraEncendido;      TTime HoraApagado;      TTime HoraActual;  despues le pongo el valor del campo y voy al TTimer:

--- Código: Text ---     HoraEncendido = CmpEncender-&#62;Text;    HoraApagado = CmpApagar-&#62;Text;    TimerLuces-&#62;Enabled = true;    y en el Evento OnTimer del TTimer:

--- Código: Text ---    HoraActual = Time();   if (HoraEncendido == HoraActual)    Outport(FrmDireccion-&#62;PDirOut,2);   if (HoraApagado == HoraActual)   {     Outport(FrmDireccion-&#62;PDirOut,0);     TimerLuces-&#62;Enabled = false;   }  no me da error pero no se prende el led seleccionado, creo q la comparacion no funciona bien
 <_<

Hodoacro:
Eso es lo que te pasa, no puedes comparar datos complejos (la hora lo es), como si fueran datos simples (con un '=='). Bueno, existe esa posiblidad, pero pasa por crearte tu propio objeto THora y sobracargar operadores, etc..

Pregúntate qué es el objeto TTime. No sé exactamente su naturaleza pero nomarmente será una estructura o clase que tendrá propiedades como TTimer->Hour, TTimer->Minutes, etc...

Las comparaciones serían más o menos así (suponiendo que TTime tengan propidades como las que te he referido anteriormente):


--- Código: Text ---// control de encendido if (TimerLuces-&#62;Enabled=false)   if (HoraEncendido-&#62;Hour&#60;=HoraActual-&#62;Hour)      if (HoraEncendido-&#62;Minutes=HoraActual-&#62;Minute)         if (HoraEncendido-&#62;Secon&#60;=HoraActual-&#62;Secon){            Outport(FrmDireccion-&#62;PDirOut,2);            TimerLuces-&#62;Enabled = true;         }  // control de apagadoif (TimerLuces-&#62;Enabled=false)   if (HoraApagado-&#62;Hour&#62;=HoraActual-&#62;Hour)     if (HoraApagado-&#62;Minute&#62;=HoraActual-&#62;Minute)        if (HoraApagado-&#62;Secon&#62;=HoraActual-&#62;Secon){             Outport(FrmDireccion-&#62;PDirOut,0);              TimerLuces-&#62;Enabled = false;        } 
Échale un vistazo a la estructura TTime.

Hodoacro:
Perdona pero he visto algun bichito en el código.

Te lo paso de nuevo:


--- Código: Text ---// control de encendido if (TimerLuces-&#62;Enabled==false) // la cambiada  if (HoraEncendido-&#62;Hour&#60;=HoraActual-&#62;Hour)     if (HoraEncendido-&#62;Minutes=HoraActual-&#62;Minute)        if (HoraEncendido-&#62;Secon&#60;=HoraActual-&#62;Secon){           Outport(FrmDireccion-&#62;PDirOut,2);           TimerLuces-&#62;Enabled = true;        }  // control de apagadoif (TimerLuces-&#62;Enabled==true) // otra mas  if (HoraApagado-&#62;Hour&#62;=HoraActual-&#62;Hour)    if (HoraApagado-&#62;Minute&#62;=HoraActual-&#62;Minute)       if (HoraApagado-&#62;Secon&#62;=HoraActual-&#62;Secon){            Outport(FrmDireccion-&#62;PDirOut,0);             TimerLuces-&#62;Enabled = false;       } 
Ahora creo que está bien

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa