SabinoDelia Inserita: 15 febbraio 2015 Autore Segnala Share Inserita: 15 febbraio 2015 non so come fare Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 Public Class Form1 Dim an0, an1, an2 As String Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load SerialPort1.Close() SerialPort1.PortName = "COM3" SerialPort1.Open() End Sub Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim str, port, val As String str = SerialPort1.ReadLine ' ricevo [at]x#val port = Mid$(str, 2, 1) ' carattere numero 2, è quale analogico val = Mid$(str, 4) ' dal carattere 4 c'e' il valore Select Case port Case "0" : Label0.Text = val Case "1" : Label1.Text = val Case "2" : Label2.Text = val End Select End Sub End Class Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 15 febbraio 2015 Autore Segnala Share Inserita: 15 febbraio 2015 A ok non avevo capito cosa intendevi . quindi così facendo si dovrebbe ridurre il fattore del ritardo ? Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 così appena riceve qualcosa lo dovrebbe far vedere Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 Ma forse il problema è il rinfresco delle lables che richiama a tempo con il timer, scrivendole come hai esemplificato tu dovrebbe eliminare il ritardo Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 io fossi in te i tre valori in arduino li concatenerei e farei un unico println da seriale, con vb riceverei in una volta tutti i valori e li suddividerei nelle label. Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 15 febbraio 2015 Autore Segnala Share Inserita: 15 febbraio 2015 E come si fa ? sia con Arduino che con VB? non ne ho idea Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 15 febbraio 2015 Autore Segnala Share Inserita: 15 febbraio 2015 (modificato) Ho risolto, ora la visualizzazione si può dire che è immediata ho aggiunto un ritardo ad ogni trasmissione int y; long previousMillis = 0; long interval = 1000; //intervallo di tempo in millisecondi // in questo caso trasmette ogni secondo void setup() { Serial.begin(9600); } void loop() { y= analogRead(A0); Serial.print("[at]0#"); Serial.println(y); delay (200); y= analogRead(A1); Serial.print("[at]1#"); Serial.println(y); delay(200); y= analogRead(A2); Serial.print("[at]2#"); Serial.println(y); delay(200); } Modificato: 15 febbraio 2015 da SabinoDelia Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 int y; string valori; long previousMillis = 0; long interval = 1000; void setup() { Serial.begin(9600); } void loop() { valori=analogRead(A0)+","+analogRead(A1)+","+analogRead(A2); Serial.println(valori); delay(500); } mentre in visual basic dividi la stringa con substring se hai risolto meglio Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 15 febbraio 2015 Autore Segnala Share Inserita: 15 febbraio 2015 (modificato) Ora ho solo questo problema: #17 ho un termometro con Arduino e l' ho collegato con Visual Basic che mi legge la temperatura su un Label. Funziona bene solo che vorrei che quando la temperatura scende al di sotto dei 3°C nel Label4 mi deve scrivere "Allerta Ghiaccio" Modificato: 15 febbraio 2015 da SabinoDelia Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 supponiamo che la string analogic contenga -23°C potresti risolvere così If Integer.Parse(analogic.Replace("°C","")) < 3 Then Label4.text = "Allerta Ghiaccio" End If mi scuso se ho sbagliato la sintassi, ma ora non ho VB per provare e sto facendo a mente Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 ops manca anche l'else che cancella la label altrimenti resta la scritta anche se l'allerta non c'è più Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 15 febbraio 2015 Segnala Share Inserita: 15 febbraio 2015 se hai piu forms di visualizzazione devi implementare un evento e delegato oppure un design pattern Observer . Nellevento comm della seriale di arrivano i dati , li converti , li processi e poi invochi gli update dei vari form di visualizzazione Se invece il form di visualizzazione e' quello di ricezione allora fai i refresh con textxbox[nome].caption=dato.toString() Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Share Inserita: 16 febbraio 2015 Ho risolto così: Public Class Form1 Dim analogic As String Dim analogic2 As Integer If analogic2 < 300 Then Label4.Text = "Allerta Ghiaccio" Else Label4.Text = "" End If Ora funziona Adesso mi servirebbe trovare il valore massimo e il valore minimo nella variabile analogic2 come faccio ? Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 ahah non capisco come faccia a funzionare e cosa ci sia in analogic2 comunque se per te va bene, va bene anche per me per il minimo e il massimo: confronti il valore attuale col valore minimo [massimo] memorizzato, inizializzi le variabili minimo a 1000°C e massimo a -1000°C così la prima volta vengono sovrascritti se il valore della variabile analogica è minore [maggiore] del minimo [massimo] sostituisci il valore nelle variabili Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Share Inserita: 16 febbraio 2015 scusami ma non ho capito, io devo: trovare il valore massimo e il valore minimo registrato ogni 24h in una variabile integer (analogic2) e scriverlo in label Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 ma sei sicuro che l'allerta ghiaccio funzioni? per me no, o almeno manca qualcosa crei due variabili, massimo e minimo e le inizializzi ad un valore che non raggiungeranno mai (ad esempio massimo a -1000°C) in modo che vengano sovrascritte il primo ciclo se il valore attuale è maggiore del massimo salvato metti il valore attuale nel massimo, altrimenti nulla. se il valore attuale è minore del minimo metti il valore nel minimo. se vuoi evitare di inizializzare le variabili con valori assurdi, puoi, il primo ciclo mettere il valore attuale di temperatura in massimo e minimo per scriverlo in label non è il problema credo Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Share Inserita: 16 febbraio 2015 l' allerta ghiaccio funziona per quanto riguarda max e min me lo deve resettare ogni 24h. se potresti farmi un esempio ? Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 If max < analogic2 Then max = analogic2 End If If min > analogic2 Then min = analogic2 End If LabelMax.Text = max.ToString() + "°C" LabelMin.Text = min.ToString() + "°C" per il reset e per il primo avvio basterà mettere max = min = analogic2 Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Share Inserita: 16 febbraio 2015 Non funziona Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 l'istruzione sotto la deve fare solo la prima volta e ogni giorno. Non posso dirti perché non funziona se non mi fai vedere come l'hai scritto Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Share Inserita: 16 febbraio 2015 Hai ragione ! La minima non mi funziona. Imports System.IO.Ports.SerialPort Public Class Form1 Dim analogic As String Dim analogic2 As Integer Private Property max As Integer Private Property min As Integer Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load SerialPort1.Close() SerialPort1.PortName = "COM3" SerialPort1.Open() End Sub Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived analogic = SerialPort1.ReadLine analogic2 = SerialPort1.ReadLine End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Label1.Text = analogic Label3.Text = "°C" If analogic2 < 300 Then Label4.Text = "Allerta Ghiaccio" Else Label4.Text = "" End If If max < analogic2 Then max = analogic2 End If If min > analogic2 Then min = analogic2 End If Label5.Text = max.ToString() + "°C" Label6.Text = min.ToString() + "°C" End Sub Private Sub Label5_Click(sender As Object, e As EventArgs) Handles Label5.Click End Sub End Class Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 (modificato) dentro form load metti max=-1000 min=1000 al primo dato ricevuto vanno a posto, se vuoi fare qualcosa di più complesso (senza i valori 1000.. fammi sapere) il 300 comunque mi suona strano Modificato: 16 febbraio 2015 da simuffa Link al commento Condividi su altri siti More sharing options...
SabinoDelia Inserita: 16 febbraio 2015 Autore Segnala Share Inserita: 16 febbraio 2015 ancora niente il valore min non va Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 quale valore dà? Link al commento Condividi su altri siti More sharing options...
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