SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Inserita: 16 febbraio 2015 soltanto il valore max
walterword Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 stai sovrascrivendo qualcosa oppure c'e' il controllo IF che non funziona bene , prova a riguardare il codice
simuffa Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 la domanda era: che valore c'è nel min?
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Inserita: 16 febbraio 2015 nel valore min mi da 0
simuffa Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load min=1000 max=-1000 SerialPort1.Close() SerialPort1.PortName = "COM3" SerialPort1.Open() End Sub se fai così lo zero non deve comparire
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Inserita: 16 febbraio 2015 ho fatto così ma niente
walterword Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 se guardi con hyperterminal cosa ti arriva sulla seriale magari ....
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Inserita: 16 febbraio 2015 forse non mi sono spiegato molto bene Io devo trovare il valore massimo e minimo registrato nella variabile numerica temp e trascriverlo in label Public Class Form1 Dim an0, an1, an2 As String Dim temp As Integer
walterword Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 (modificato) come li scrivi i valori sulla seriale? Fai un pacchetto unico o nei fai due ? Magari se ne fai due velocemente ultimo lo perdi oppure non lo ricevi come si dovrebbe Se lato VB fai questo Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load SerialPort1.Close() SerialPort1.PortName = "COM3" SerialPort1.Open() End Sub Intanto per incominciare vedo nel tuo codice l'oggetto SerialPort1 ma non e' stato dichiarato da nessuna parte Per cui nel form_load metti la dichiarazione Private SerialPort1 As System.IO.Ports.SerialPort Seconda cosa non vedo l'abilitazione al delegato dell'evento datareceived , magari e' gia inclus anella dichiarazione (non conosco il vb) Dopodiche non vedo i settaggi della porta intesi come baud , parita ect Sembra che state facendo un po le cose a casaccio , quando sul web basta digitare seriale con VB che ti danno tutto il codice per usare la seriale BOOOO ultima cosa , prima di fare il figo con VB , apri il terminale di arduino e vedi cosa ti visualizza , perche di solito nelle fasi di sviluppo del codice si fanno dei test preliminari e si procede per passi e complessità.Se ti funziona il terminale di arduino allora significa che il problemi sono relativi ai settaggi della seriale che usi con vb altrimenti significa che lato arduino commetti degli errori La usb collegata ad arduino ce l'hai , apri il terminale dell'ide e vedi cosa ti arriva Modificato: 16 febbraio 2015 da walterword
walterword Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 se lato arduino fai due scritture sulla seriale vorra dire che i due dati li riceverai in due momenti diversi oer cui avrai DUE eventi comm di ricezione Il secondo read all'interno della ricezione non ti legge nulla .Per cui devi usare una variabile che tiene conto dello stato di lettura PArte da zero e al primo evento leggi sulla seriale e formatti il risultato nella prima variabile e la incrementi a 1 Quando ricevi il prox evento comm se la variabile e' ==1 allora formatti il dato ricevuto nella seconda variabile e metti la variabile stato =0 , altrimenti formatti nella prima variabile e lo metti =1 . Se fai due chimate a read della seriale nel evento comm leggi una volta buono e l'altra a vuoto .Poi imposta il buffer di ricezione sul numero di caratteri giusti per avere l'evento quando e' raggiunta la soglia di caratteri ricevuti voluta se vuoi fare un lavoro pulito e professionale devi fare cosi : Stabilisci un protocollo di 5 caratteri Il primo e' l'inizio che controllerai in Vb , per esempio il carattere '@' Poi nei 4 bytes successivi ci vai a mettere i tuoi dati con lo shift e con le maschere AND , che in vb non so come si facciano Poi lato VB quando ricevi i dati fai una lettura sola e leggi tutto il pacchetto , verifichi ch eil primo carattere sia '@' altrimenti scarti tutto Se il primo e' giusto allora tiri fuori i due dati dai 4 caratteri a seguire nel buffer .In questo caso io ho predisposto 2 carateri per ogni dato intesi come bytes non come cifre del dato per cui sono due dati da short int cioe intero da 2 bytes
simuffa Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 (modificato) forse non mi sono spiegato molto bene Io devo trovare il valore massimo e minimo registrato nella variabile numerica temp e trascriverlo in label devi deciderti.. si parte con un programma che trasmette in seriale poi cambi tutto il codice con temperature e allerte (nella quale c'è un 300 che non capisco da dove arrivi) poi si passa al massimo e minimo di un analogico e adesso di un temp. Sembra che state facendo un po le cose a casaccio , quando sul web basta digitare seriale con VB che ti danno tutto il codice per usare la seriale certo Walterword con tante cose non sono d'accordo.. come per esempio una readline su seriale dentro un intero oppure un'ipotetica porta seriale che si chiude prima di essere aperta, senza parametri tra l'altro. dopodiché non capisco dove si vuole arrivare, sono d'accordo con te su quello che dici, ma pare che a SabinoDelia piaccia di più la programmazione affidabile come una trasmissione di rete "best effort" Modificato: 16 febbraio 2015 da simuffa
simuffa Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 Il secondo read all'interno della ricezione non ti legge nulla certo, non capisco nemmeno perché il programma che aveva fatto prima l'ha cambiato così in modo da non farlo funzionare... misteri
walterword Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 devi fare delle prove sulla seriale , usando hyperterminal oppure il terminale di arduino , io uso sempre la seconda chance . Se i due valori vengono stampati correttamente allora concentrati su VB . Per cui in VB crei la seriale come oggetto , poi setti tutti i parametri , il baudrate , la parità , la soglia di ricezione del buffer ect.... Poi fai una prova in arduino , cioe spedisci la prima stringa e poi fai un delay di 5 secondi e stampi la seconda , anche se il bloccante e' una schifezza ti permette di avere due eventi onrecevided data in vb .A quesot punto fai il read ma una volta sola e vedi cosa stampa Fai la prova con due stringhe secche di caratteri , una "ciao " e l'altra "pasticcione " Se nel terminale di arduino le vedi arrivare entrambe allora farai in modo di vederle anche in vb e poi man mano cerchi di professionalizzare la cosa .....io sto scrivendo un protocollo da arduino a android via blutooth e lato arduino i dati bluetooth vengono speidti e ricevuti in seriale e la cosa la sto facendo come ti dicevo sopra , cioe in un pacchetto di bytes inserisco tutti i dati con opportuni shift e maschere and e poi dall'altra parte processo il buffer ed eseguo le routine o le azioni che devo eseguire e funziona , lo sto facendo in java e funziona lo stesso , e in visual studio con c# idem VB non l'ho mai usato e non mi metto di sicuro ora ad usarlo per farti il programmino Si tratta di capire cosa fare e studiare 4 cose sulla seriale e soprattutto leggere bene quello che ti consigliano gli altri
simuffa Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 Per cui in VB crei la seriale come oggetto , poi setti tutti i parametri , il baudrate , la parità , la soglia di ricezione del buffer ect. queste probabilmente le avrà già settate nelle proprietà del componente "serial port" spero (non capisco perché non ha settato anche la COM3..) walterword condivido tutto ciò che hai detto
walterword Inserita: 16 febbraio 2015 Segnala Inserita: 16 febbraio 2015 lui usa un close all'inizio per chiudere la porta se eventualmente fosse gia aperta , non ha capito che col new o creando una porta nuova e' chiusa per default , forse itnendeva fare un flush o un read per pulire il buffer da eventuali sporcacciate anche se impossibile che ci siano in quel momento .Deve provare con due stringhe pure , senza dati e testare l'hardware e la gestione software , poi quando tutto fila liscio si specializza la cosa , partire subito in 4° senza nozioni e senza capacità si fano solo dei disastri , questo lo dico perche tanti anni fa commettevo gli stessi errori .Se poi quello che dico e' da " Walterword ti incazzi sempre e sei sempre nervoso " ...allora non saprei proprio come dirlo
Livio Orsini Inserita: 17 febbraio 2015 Segnala Inserita: 17 febbraio 2015 Sono i problemi di chi pensa che studiare un linguaggio prima di usarlo è tempo sprecato.
SabinoDelia Inserita: 17 febbraio 2015 Autore Segnala Inserita: 17 febbraio 2015 In pratica su questa variabile mi viene registrata una temperatura in continuo cambiamento e vorrei mostrare in label il valore massimo e in un altro label il valore minimo assunto dalla variabile.
walterword Inserita: 17 febbraio 2015 Segnala Inserita: 17 febbraio 2015 si infatti , tempo sprecato....vedo che non ha minimamente letto quello che abbiamo scritto sopra , persiste nel suo discorso , come se parlasse da solo ....mi dedico al geniale Fourier che e' meglio va...
simuffa Inserita: 17 febbraio 2015 Segnala Inserita: 17 febbraio 2015 si infatti , tempo sprecato....vedo che non ha minimamente letto quello che abbiamo scritto sopra , persiste nel suo discorso , come se parlasse da solo ....mi dedico al geniale Fourier che e' meglio va... non è la prima volta
walterword Inserita: 17 febbraio 2015 Segnala Inserita: 17 febbraio 2015 (modificato) , magari non ha niente da fare e lo fa apposta .... per me la cosa si chiude qua non ho certo tempo di stare qua tutto il giorno a farmi prendere per il kulo Modificato: 17 febbraio 2015 da walterword
Livio Orsini Inserita: 17 febbraio 2015 Segnala Inserita: 17 febbraio 2015 (modificato) In pratica su questa variabile mi viene registrata una temperatura in continuo cambiamento e vorrei mostrare in label il valore massimo e in un altro label il valore minimo assunto dalla variabile Ti crei 2 variabili tmax e tmin; al primo ciclo copi la variabile lette nelle altre 2. Ad ogni ciclo fai il confronto tra la lettura ed i 2 valori, se la variabile attuale è maggiore di tmax vai a sostituirne il valore, medesimo discorso per tmin. Poi sulle 2 etichette deddicate copi i valori delle due variabili. Elementare Watson, elementare. E ora non chiedere come si fa il confronto. Modificato: 17 febbraio 2015 da Livio Orsini
SabinoDelia Inserita: 17 febbraio 2015 Autore Segnala Inserita: 17 febbraio 2015 Ok grazie. ho fatto in questo modo ma mi funziona soltanto la max: Dim temp As Integer Dim tempmax As Integer = -100 Dim tempmin As Integer = 100 If temp >= tempmax Then tempmax = temp End If If temp <= tempmin Then tempmin = temp End If poi ho fatto così e i due valori sia max che min sono uguali a quello attuale: tempmax = temp tempmin = temp If temp >= tempmax Then tempmax = temp End If If temp <= tempmin Then tempmin = temp End If Label6.Text = tempmax Label8.Text = tempmin
simuffa Inserita: 17 febbraio 2015 Segnala Inserita: 17 febbraio 2015 tempmax = temp tempmin = temp devi farle solo una volta all'inizio del programma altrimenti saranno sempre uguali
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora