Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Il punto è che ogni volta attende un pelo di più di un secondo (1,04 secondi), probabilmente perché nonostante il rimedio proposto, perde comunque qualche centesimo di troppo in ogni iterazione dei cicli. Prova così:
    codice:
    CLS
    PRINT "Il programma legge la tensione sullo shunt da 250 ohm"
    PRINT "L'escurzione di tensione sar… quindi compresa fra 1 e 5v"
    INPUT "OGNI QUANTI SECONDI VUOI VENGA FATTO IL CAMPIONAMENTO "; tempo&
    OPEN "COM1:9600,N,8,1,rs,cs0,ds0" FOR RANDOM AS #10 ' apro la porta seriale
    nomefile$ = "log.txt" 'assegno il nome al file .txt
    
    OPEN nomefile$ FOR APPEND AS #20 'apro il file in scrittura progressiva
    
    'Ottiene la frazione di secondo a cui è iniziato il processo
    t! = TIMER
    begfrac! = t! - FIX(t!)
    DO
        'Calcola il momento in cui si passerà alla prossima iterazione
        t! = FIX(TIMER) + begfrac! + tempo&
        'Correzione necessaria se il programma viene eseguito a cavallo di mezzanotte
        IF t! >= 86400! THEN t! = t! - 86400
    
        i$ = INKEY$
        IF i$ = CHR$(27) THEN END ' se viene premuto "ESC" termina il programma
        CLS
        PRINT "CAMPIONAMENTO OGNI ";tempo&; "SECONDI"
        PRINT "Sto salvando i dati sul file log.txt"
        
        A$ = "255"
        PRINT #10, "**" + CHR$(VAL(A$)) + "#"; 'invio i dati sulla seriale
        
        digital$ = INPUT$(1, #10) 'leggo gli ingressi digitali
        ad1$ = INPUT$(1, #10) 'leggo l'ingresso analogico 1
        ad2$ = INPUT$(1, #10) 'leggo l'ingresso analogico 2
        
        REM PRINT "Ingressi ="; ASC(digital$) 'mostro il valore
        REM PRINT "Convertitore A/D 1 ="; ASC(ad1$) 'mostro il valore
        valore = (ASC(ad1$))
        REM PRINT "Il valore nella variabile valore Š="; valore
        valvolt = valore * 5 / 255
        PRINT ""
        PRINT "La tensione letta Š di volt: "; valvolt
        mA = valvolt / 250 * 1000
        PRINT "Pari a "; mA; "mA"
        kW = mA * .25 * 400
        PRINT "La potenza letta Š di kW: "; kW
        REM PRINT "Convertitore A/D 2 ="; ASC(ad2$)
        PRINT TIME$
        PRINT ""
        PRINT "Press ESC to exit..."
        PRINT #20, DATE$, TIME$, mA 'scrivo sul file i dati
            
        REM Attende quanto manca perchŠ il ciclo duri esattamente un secondo
        DO
        LOOP UNTIL TIMER >= t!
        
    LOOP WHILE i$ = ""
    
    CLOSE #10
    CLOSE #20
    
    END
    Un consiglio: evita di usare numeri fissi come ID di apertura dei file, usa piuttosto FREEFILE per ottenere un ID di file libero prima della OPEN.
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #12
    Ehi funziona alla perfezione!!!!
    Non so proprio come ringraziarti!
    Ora mi resta solo il problema del nome del file...ma per quello ho un altro post

    ciao

  3. #13
    Originariamente inviato da ita124
    Ehi funziona alla perfezione!!!!
    Non so proprio come ringraziarti!
    Ho dovuto rispolverare il vecchio QB45 per collaudarlo... ti ringrazio io, quanti ricordi...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #14
    Ne approfitto...
    Mi spiegheresti il punto esclamativo "!" che tipo di dato definisce ?

  5. #15
    SINGLE (variabile in virgola mobile a precisione singola)
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #16
    Vengo nuovamente a chiedere aiuto...
    Qualcosa non va a cavallo della mezzanotte.
    Ho riscritto tutto semplificando la cosa per una semplice prova:

    OPEN "tempi.txt" FOR APPEND AS #20
    tempo& = 1
    t! = TIMER
    begfrac! = t! - FIX(t!)
    DO
    CLS
    t! = FIX(TIMER) + begfrac + tempo&
    IF t! >= 86400! THEN t! = t! - 86400
    i$ = INKEY$
    IF i$ = CHR$(27) THEN END
    PRINT #20, DATE$, TIME$, TIMER
    PRINT TIME$
    DO
    LOOP UNTIL TIMER >= t!
    LOOP WHILE i$ = ""
    CLOSE #10

  7. #17
    risultato:
    Ecco il risultato:

    03-28-2009 23:59:55 86395.49
    03-28-2009 23:59:56 86396.48
    03-28-2009 23:59:57 86397.47
    03-28-2009 23:59:58 86398.45
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 23:59:59 86399.44
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.5
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.55
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.61
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.66
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.72
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.77
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.83
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.88
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-28-2009 24:00:00 86399.94
    03-29-2009 00:00:00 .49
    03-29-2009 00:00:01 1.48
    03-29-2009 00:00:02 2.47
    03-29-2009 00:00:03 3.46
    03-29-2009 00:00:04 4.44
    03-29-2009 00:00:05 5.49
    03-29-2009 00:00:06 6.48
    03-29-2009 00:00:07 7.46
    03-29-2009 00:00:08 8.45
    03-29-2009 00:00:09 9.44
    03-29-2009 00:00:10 10.49

  8. #18
    Hai ragione, non avevo tenuto conto di un fattore; prova così:
    codice:
    OPEN "tempi.txt" FOR APPEND AS #20
    tempo& = 1
    t! = TIMER
    begfrac! = t! - FIX(t!)
    DO
        CLS
        t2! = TIMER
        t! = FIX(t2!) + begfrac + tempo&
        IF t! >= 86400! THEN t! = t! - 86400 : blocco% = 1
        i$ = INKEY$
        IF i$ = CHR$(27) THEN END
        PRINT #20, DATE$, TIME$, TIMER
        PRINT TIME$
        DO
            IF TIMER < t2! THEN blocco% = 0
            t2!=TIMER
        LOOP WHILE t2! < t! OR blocco% <> 0
    LOOP WHILE i$ = ""
    CLOSE #20
    P.S.: indenta il codice e usa i tag CODE!
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #19
    ...funziona alla grande...ma me lo dovresti spiegare....

  10. #20
    codice:
    tempo& = 1
    'Ottiene il numero di secondi passati da mezzanotte
    t! = TIMER
    'Ottiene la frazione di secondo a cui siamo (in base alla quale vengono calcolati i momenti in cui si passa all'iterazione successiva)
    begfrac! = t! - FIX(t!)
    DO
        'Ottiene il numero di secondi passati da mezzanotte
        t2! = TIMER
        'Calcola il momento in cui bisognerà passare al prossimo ciclo
        t! = FIX(t2!) + begfrac + tempo&
        'Se questo momento è oltre la mezzanotte lo "normalizza" riportandolo sotto a 86400 (TIMER si resetta a mezzanotte)
        'Tuttavia il valore "normalizzato" risulterebbe inferiore a TIMER nel ciclo di attesa, per cui non ci sarebbe alcuna attesa;
        'di conseguenza imposta un flag che dice di bloccare il ciclo di attesa indefinitamente
        IF t! >= 86400! THEN t! = t! - 86400 : blocco% = 1
    
        '...
        
        'Ciclo di attesa
        DO
            'Se TIMER è inferiore rispetto all'ultimo suo valore che abbiamo controllato vuol dire che è passata la mezzanotte;
            'di conseguenza non c'è più bisogno del blocco
            IF TIMER < t2! THEN blocco% = 0
            'Memorizza il valore di TIMER per la prossima iterazione
            t2!=TIMER
        'Continua il ciclo di attesa finché TIMER è inferiore al momento in cui dobbiamo passare all'iterazione successiva
        'o finché il blocco è attivo
        LOOP WHILE t2! < t! OR blocco% <> 0 
    LOOP WHILE INKEY$ = ""
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.