Autore Topic: MeteoMachine Linux: calcoli e raccolta di dati meteorologici  (Letto 95048 volte)

Offline stef

  • Grande Gambero
  • ***
  • Post: 144
    • Mostra profilo
    • http://www.altabrianza.org
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #30 il: 30 Aprile 2009, 23:13:55 »
Tu cosa dici di fare?
Forse meglio riprogettare tutto, mettere un form solo con 31 campi, ciascuno per giorno, con temp min, max, stato del cielo e precipitazioni...che dici?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #31 il: 30 Aprile 2009, 23:41:49 »
Scusate, ma non è meglio l'uso di un solo DB, con all'interno gli anni divisi per tabelle e tutti i dati all'interno delle rispettive tabelle annuali?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline claudio

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #32 il: 30 Aprile 2009, 23:51:19 »
Ciao a tutti.
Ho provato l'applicazione e vi segnalo un piccolo errore nel
modulo: datab   function: media:

al primo inserimento della temperatura min e max, se lascio uno dei due campi
non valorizzati e salvo i dati, mi esce il classico errore di divisione per zero,
in quanto la variabile sommamin o sommamax è pari a zero.

  IF contmin <> 0 THEN
          media.Add(sommamin / contmin, 0)
          media.Add(sommamax / contmax, 1)
  ELSE
          media.Add(0, 0)
          media.Add(0, 1)
  ENDIF

Offline claudio

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #33 il: 01 Maggio 2009, 00:05:50 »
Rettifico il messaggio precedente:

è la variabile contmin o contmax che provoca l'errore di divisione per 0.
La soluzione è di bloccare il salvataggio delle temperature, se sia la minima che la massima non sono state inserite correttamente.

Offline stef

  • Grande Gambero
  • ***
  • Post: 144
    • Mostra profilo
    • http://www.altabrianza.org
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #34 il: 01 Maggio 2009, 18:10:42 »
Ciao, è vero, forse è del tutto inutile e ridondante mettere un'altra finestra per l'inserimento dei dati giornalieri...allora facciamo tutto su DB!
Ora modifico un po' l'interfaccia, poi carico qui i nuovi sorgenti.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #35 il: 01 Maggio 2009, 21:16:15 »
Citazione
    Scusate, ma non è meglio l'uso di un solo DB, con all'interno gli anni divisi per tabelle e tutti i dati all'interno delle rispettive tabelle annuali?


per fare un db unico la struttura sarebbe piuttosto articolata

ho provato a rifare il db usando un db per ogni anno e risulta molto + semplice

(per chi scrive il codice del db)fare le varie operazioni

vi lascio i sorgenti modificati con il nuovo db  per ora funziona solo la gestione delle temperature minime e massima, adesso scrivo il codice per i dati pluviometrici e le ossevazioni


ps: grazie cbsoft l' errore è stato corretto (almeno credo)

edit: eliminato allegato

Offline stef

  • Grande Gambero
  • ***
  • Post: 144
    • Mostra profilo
    • http://www.altabrianza.org
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #36 il: 01 Maggio 2009, 21:54:56 »
Aspetta un attimo fsurfing a metterti a scrivere il codice, mi è venuto in mente che forse sarebbe meglio nel DB aggiungere anche un campo non obbligatorio in cui tramite magari una ComboBox l'utente possa aggiungere l'eventuale tipo di precipitazione registrato in un certo giorno.

Le scelte possibili potrebbero essere:

- (nessuna precipitazione, opzione di default)
Pioggia
Pioviggine
Temporale
Temporale/Grandine
Temporale/Neve
Neve
Neve/Pioggia
Pioggia che gela
Nebbia

E' un problema?
Stefano

PS Io intanto sto andando avanti con degli altri pezzi...ma stiamo incasinandoci un po' con i sorgenti mi sa... :-)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #37 il: 01 Maggio 2009, 22:09:54 »
per l' incasinamento non è un problema

i tuo codice è il principale

dei miei sorgenti basta che copi i seguenti file e li metti nella tua cartella
 di progetto


Codice: [Seleziona]


fwait.form

fwait.class
grafico.module

datab.module

Ftemperaturefs.class

Ftemperaturefs.form


 


e poi riavvii gambas

se aggiungo altri file te lo dico

Citazione
spetta un attimo fsurfing a metterti a scrivere il codice, mi è venuto in mente che forse sarebbe meglio nel DB aggiungere anche un campo non obbligatorio in cui tramite magari una ComboBox l'utente possa aggiungere l'eventuale tipo di precipitazione registrato in un certo giorno.  Le scelte possibili potrebbero essere:  - (nessuna precipitazione, opzione di default) Pioggia Pioviggine Temporale Temporale/Grandine Temporale/Neve Neve Neve/Pioggia Pioggia che gela Nebbia  E' un problema?


non è un problema

Offline claudio

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #38 il: 01 Maggio 2009, 22:10:00 »
Ho visto che avete corretto l'errore da me segnalato.

Dovreste migliorare la gestione delle form, aprirle tutte con lo stesso metodo
(showdialog) e centrarle nel desktop

PUBLIC SUB Form_Open()
    ME.Center
END

Oppure in questo modo:
PUBLIC SUB mnuconversione_Click()
  ME.Hide
  'mostra il convertitore gradi °C / °F
  Fconversionegradi.Show
END

e poi all'evento Form_Close di Fconversionegradi
PUBLIC SUB Form_Close()
    FMain.Show
END

cosi si evita di avere tante form aperte sul desktop.

Poi non capisco la scelta di costruire il database come avete fatto,
non era più semplice questa struttura:

Id       Integer Primary key
Giorno   DateTime
Minima   Integer o Float
Massima  Integer o Float

potendo inserire le misurazioni senza limiti di tempo, poi con delle semplici query di selezione si possono estrapolare i dati relativi ad ogni periodo selezionato.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #39 il: 01 Maggio 2009, 22:12:02 »
mi sorge un dubbio

per le precipitazioni poniamo di default che siano zero o teniamo conto che può anche esserci un non pervenuto segnato dal solito "-" ?

Offline stef

  • Grande Gambero
  • ***
  • Post: 144
    • Mostra profilo
    • http://www.altabrianza.org
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #40 il: 01 Maggio 2009, 22:46:55 »
Ciao, sì direi che uno può segnare Pioggia ma non avere l'accumulo (magari perché gli si è rotto il pluviometro ;-) )...non saprei però se è meglio segnare "-" o "0"...

Citazione
e poi all'evento Form_Close di Fconversionegradi PUBLIC SUB Form_Close() FMain.Show END  cosi si evita di avere tante form aperte sul desktop.


E' voluto quell'effetto; così un utente può tenere aperti più strumenti!
Piuttosto, sarebbe una buona cosa cercare di togliere il bottoncino di riduzione (non ha molto senso e se apre più strumenti di conversione all'utente si riempie inutilmente la barra delle applicazioni)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #41 il: 01 Maggio 2009, 22:49:21 »
Citazione
Poi non capisco la scelta di costruire il database come avete fatto, non era più semplice questa struttura:  Id Integer Primary key Giorno DateTime Minima Integer o Float Massima Integer o Float  potendo inserire le misurazioni senza limiti di tempo, poi con delle semplici query di selezione si possono estrapolare i dati relativi ad ogni periodo selezionato.


la tua è un ottima idea

per ora non ho + voglia di rifare di nuovo da capo però :)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #42 il: 02 Maggio 2009, 00:11:56 »
implementato inserimento piogge


se vuoi dopo averlo provato puoi copiare questi file nella tua cartella progetto
per renderla compatibile al db

fwait.form

fwait.class
grafico.module

datab.module

Ftemperaturefs.class

Ftemperaturefs.form
precipitazioni.form
precipitazioni.class

ricopiali tutti che sono cambiati tutti :)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #43 il: 02 Maggio 2009, 13:13:36 »
piccole migliorie

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: MeteoMachine Linux: calcoli e raccolta di dati meteorologici
« Risposta #44 il: 02 Maggio 2009, 13:23:42 »
il modulo datab contiene le seguenti funzioni che possono essere di varia utilita per altre parti del programma

PUBLIC FUNCTION cercaTmin(giorno AS Integer, mese AS Integer, anno AS Integer) AS String

ritorna una stringa contenente la temperatura minima del giorno mese e anno richiesto

PUBLIC FUNCTION cercaTmax(giorno AS Integer, mese AS Integer, anno AS Integer) AS String

idem per la temperatura massima

PUBLIC FUNCTION mediaTmax(mese AS Integer, anno AS Integer) AS Float

ritorna un float contenente la temperatura massima mmedia di un determinato mese

PUBLIC FUNCTION mediaTmin(mese AS Integer, anno AS Integer) AS Float
 
idem ma per la media della minima


PUBLIC FUNCTION valoriTmin(mese AS Integer, anno AS Integer) AS String[]

ritorna un array float contenente tutti i valori di temperatura minima del mese richiesto

PUBLIC FUNCTION valoriTmax(mese AS Integer, anno AS Integer) AS String[]

idem ma per la temp massima

PUBLIC FUNCTION cercaP(giorno AS Integer, mese AS Integer, anno AS Integer) AS String

ritorna una stringa contenente la precipitazione di un dato giorno

PUBLIC FUNCTION cercaPtipo(giorno AS Integer, mese AS Integer, anno AS Integer) AS String

ritorna una stringa contenente il tipo di precipitazione di un dato giorno

PUBLIC FUNCTION mediaP(mese AS Integer, anno AS Integer) AS Float

ritorna un float con la media delle precpitazioni mensili

PUBLIC FUNCTION valoriP(mese AS Integer, anno AS Integer) AS String[]

ritorna un array float con tutte le recipitazioni del mese richiesto

PUBLIC FUNCTION totP(mese AS Integer, anno AS Integer) AS Float

ritorna un float con il totale delle precipitazioni mensili