View Full Version : [c] Programma per gestione parallela....
frizzo28
14-08-2006, 12:11
Qualche consiglio per ottimizzare questo programma perchè usare un ciclo che si ripete una marea di volte per controllare se l'ora impostata è uguale all'ora di accensione/spegnimento di un rele nn mi sembra molto ottimale.... Poi per uscire dal ciclo infinito ho usato kbhit() solo che avendo messo un delay per ritardare l'esecuzione del ciclo è difficile riuscire ad uscire... come posso risolvere?
Grazie a tutti
P.S. allego il codice sorgente....
frizzo28
14-08-2006, 17:19
UP
trallallero
16-08-2006, 09:51
P.S. allego il codice sorgente....
mi sa che hai allegato il binario :fiufiu:
DanieleC88
16-08-2006, 16:14
Il codice a dire il vero è un po' confuso... :p
Il problema di kbhit() lo puoi risolvere così - anche se è un metodo un po' grezzo, ma non mi viene altro in mente...
int main(void)
{
int cycle = 1;
/* ... */
while (cycle)
{
unsigned int x;
_bios_timeofday(_TIME_GETCLOCK, &bios_time);
/* ... */
for (x = 0; x < 900; x++) {
cycle = (!kbhit());
if (!cycle)
break;
delay(10);
}
}
/* ... */
}
trallallero
16-08-2006, 16:34
Il codice a dire il vero è un po' confuso... :p
Il problema di kbhit() lo puoi risolvere così - anche se è un metodo un po' grezzo, ma non mi viene altro in mente...
int main(void)
{
int cycle = 1;
/* ... */
while (cycle)
{
unsigned int x;
_bios_timeofday(_TIME_GETCLOCK, &bios_time);
/* ... */
for (x = 0; x < 900; x++) {
cycle = (!kbhit());
if (!cycle)
break;
delay(10);
}
}
/* ... */
}
ocio che kbhit mi sembra sia solo borland ;)
frizzo28
17-08-2006, 11:58
ocio che kbhit mi sembra sia solo borland ;)
Si infatti io ho Turbo c 3.0 della borland .... ora provo la soluzione di DanieleC88 e vi faccio sapere....qualche consiglio su come poter ottimizzare il codice? Xke io nn ho idea di come fare.... anche perchè poi volevo modificare il programma per poter impostarre per ogni relè più di un ora di accensione e una di spegnimento ma magari una 10a e usando le variabili come ho fatto qui verrebbe una cosa assurda perchè dovrei fare variabili tipo: accendi1, accendi1minuti,spegni1,spegni1minuti.. etc fino a 10 verrebbe un casotto qualche consiglio su come potrei usare dei vettori? che so 1 per i minuiti di accensione, uno per le ore di accensione,uno per i minuti di spegnimento, uno per le ore di spegnimento quindi usando quattro vettori in tutto???? tks a tt ciao
DanieleC88
17-08-2006, 18:51
EDIT: sorry, doppio post... -_-'
DanieleC88
17-08-2006, 18:52
ocio che kbhit mi sembra sia solo borland ;)
Si, ma se lui lo compila solo per sé non ha problemi di portabilità.
Per rispondere a frizzo28, potresti usare una array di strutture, tipo:
struct rele_time_info {
unsigned int accensione_ore;
unsigned int accensione_minuti;
unsigned int spegnimento_ore;
unsigned int spegnimento_minuti;
};
int main()
{
struct rele_time_info tempi[10];
tempi[0].spegnimento_ore = 1;
tempi[0].spegnimento_minuti = 35;
/* e via dicendo */
return 0;
}
frizzo28
22-08-2006, 09:56
Grazie mille ho risolto con le strutture come mi hai detto tu....
P.S. Questo è il sorgente completo...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.