SabinoDelia Inserito: 14 aprile 2015 Segnala Inserito: 14 aprile 2015 (modificato) Salve a tutti, allora io sto leggendo dei segnali digitali e analogici che mi trasmette arduino con vb Arduino: [at] = sarebbe la chiocciola (non so perché mi esce @ ) Serial.print("[at]0#"); Serial.println(temperatura); delay (200); y= analogRead(A3); Serial.print("[at]2#"); Serial.println(y); delay(200); y= analogRead(A2); Serial.print("[at]3#"); Serial.println(y); delay(200); y= dht.readHumidity(); Serial.print("[at]4#"); Serial.println(y); delay(200); Serial.print("[at]5#"); Serial.println(pressure); delay(200); y= digitalRead(3); Serial.print("[at]6#"); Serial.println(y); delay(200); y= digitalRead(4); Serial.print("[at]7#"); Serial.println(y); delay(200); y= digitalRead(5); Serial.print("[at]8#"); Serial.println(y); delay(200); y= digitalRead(6); Serial.print("[at]9#"); Serial.println(y); delay(200); y= digitalRead(7); Serial.print("[at]10#"); Serial.println(y); delay(200); y= digitalRead(8); Serial.print("[at]11#"); Serial.println(y); delay(200); y= digitalRead(9); Serial.print("[at]12#"); Serial.println(y); delay(200); y= digitalRead(10); Serial.print("[at]13#"); Serial.println(y); delay(200); Visual Basic: 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" : an0 = val tempread = an0 Case "2" : an1 = val luxread = an1 Case "3" : an2 = val windread = an2 Case "4" : an3 = val Humidityread = an3 Case "5" : an4 = val pressureread = an4 Case "6" : an6 = val NO = an6 Case "7" : an7 = val O = an7 Case "8" : an8 = val SO = an8 Case "9" : an9 = val S = an9 Case "10" : an10 = val SE = an10 Case "11" : an11 = val Est = an11 Case "12" : an12 = val NE = an12 Case "13" : an13 = val N = an13 End Select End Sub Perchè fino al case 9 va tutto bene, ma dal dieci in poi (fino a 13) VB non mi mostra i valori? come posso risolvere ? Grazie a tutti Modificato: 14 aprile 2015 da SabinoDelia
walterword Inserita: 14 aprile 2015 Segnala Inserita: 14 aprile 2015 prova a forzarlo tu il valore a 9 e vedi cosa succede
Livio Orsini Inserita: 15 aprile 2015 Segnala Inserita: 15 aprile 2015 Semplice perchè in "port" c'è un solo carattere. Prova a visulaizzare ne debug di VB il valore di port
walterword Inserita: 15 aprile 2015 Segnala Inserita: 15 aprile 2015 invece di usare il tipo string per port prova ad usare il tipo byte
SabinoDelia Inserita: 16 aprile 2015 Autore Segnala Inserita: 16 aprile 2015 Ciao, innanzitutto grazie per le risposte, però non sono riuscito a risolvere il problema
SabinoDelia Inserita: 16 aprile 2015 Autore Segnala Inserita: 16 aprile 2015 (modificato) Scusami Livio, se potresti spiegarti meglio te ne sarei grato, e inoltre il valore port non me lo fa visualizzare in debug Modificato: 16 aprile 2015 da SabinoDelia
walterword Inserita: 16 aprile 2015 Segnala Inserita: 16 aprile 2015 (modificato) se port e' una stringa composta da un carattere quante cifre puoi visualizzare o memorizzarci? Una ,o sbaglio ? Da 0 a 9 , A , B , C , F ..... ma non 10 , 12 , FF , FA Ti pare ? Se non te la fa visualizzare nel debug prova a dichiarla come variabile globale fuori da quella routine , in qualche modulo ...non conosco VB Altra cosa che puoi fare e' verificare i caratteri terminatori della stringa che viene spedita e a quanto e' la soglia del buffer in VB per avere l'evento onComm la chiocciolina o la lumachina come la chiami tu significa "at" prova a postare il codice di preparazione della porta seriale dove imposti il baudrate , la soglia di evento in ricezione , e i vari parametri .Cerca di essere piu preciso se vui degli aiuti perche non e' che basta postare un pezzo di codice a caso e pensare che ci siano i maghi .Di solito l'analisi parte dall'inizio di un qualcosa...per giungere alla fine se tutto va bene con la conclusione di poter dire come risolvere la cosa piuttosto che rininciarvi per ovvi motivi poi se vuoi un consiglio ,per impostare un protocollo di comunicazione tra due dispositivi dovresti lavorare con un buffer di byte riempito a partire dal primo carattere con un carattere che segnala l'inizio del frame , i dati e la fine in modo tale da fare anche delle verifiche Tu cosi da arduino prima spedisci un codice , poi i dati e dall'altra parte prima vai a vedere che tipo di codice e' arrivato e poi copi i dati , insomma..... Modificato: 16 aprile 2015 da walterword
giacomo56 Inserita: 16 aprile 2015 Segnala Inserita: 16 aprile 2015 Ciao. Non conosco VB ma hai provato con port = Mid$(str,2,2) ?
walterword Inserita: 16 aprile 2015 Segnala Inserita: 16 aprile 2015 (modificato) anche come dice Giacomo potresti provare, magari sbagli a ritagliare il pezzo di messaggio che vorresti processare .... Modificato: 16 aprile 2015 da walterword
Livio Orsini Inserita: 17 aprile 2015 Segnala Inserita: 17 aprile 2015 port non me lo fa visualizzare in debug Dipende come hai diachiarato port. Se è una variabile locale la visualizzi solo quando è attiva la funzione in cui l'hai dichiarata. Se è globale la visualizzi sempre. Che messaggio di da il debug di VB in corrispondenza della variabile? Poi Walter ti ha spiegato cosa riceverai, riceverai probabilmente una cifra esadecimale,quindi anche il valore di comparazione dovrà essere esadecimale. Da 0 a 9 decimale ed esadecimale conicidono, quindi lo switch funziona da 10 in poi i 2 valori non coincidono più e loswitch non funziona.
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