09/05/22 4:10
bernie
Salve a tutti , come da titolo avrei bisogno di far comunicare arduino con una applicazione in VB.NET.
La parte in VB è solo una interfaccia operatore , dove posso scrivere e leggere dei valori che invio o ricevo da arduino , lui fa tutto il resto.
Arduino trasmette sempre i dati con intervalli di 1 secondo ma li visualizzo solo alla pressione di un pulsante , i dati da VB ad arduino sono tramite pulsante .
Mi ritrovo che a mio parere ad un certo punto dovrei usare la funzione Right , però mi da errore e non ho capito perchè .
Ho provato ad usare anche Rset e Lset , ma anche in questo caso non capisco perchè il risultato non cambia .
Intanto allego quello che ho scritto
Le prime due cifre del numero che invia arduino , servono per identificare il campo in cui scrivere i valori , le rimanenti cifre son il valore vero e proprio .
Avevo pensato di
1) leggere il valore dalla porta seriale e metterlo in una stringa
2) controllare il numero di caratteri della stringa
3) identificare i primi due caratteri e in base al valore decidere dove scrivere la variabile
4) tagliare dalla stringa le prime due cifre
5) scrivere la stringa tagliata nel campo corretto .
Io sono bloccato al punto 4 .
Se sostituisco Right con LSet o RSet , il programma gira , non da errori , però il valore che mostra non è corretto .
Supponendo che il valore inviato da arduino è 10256 10 indica in che campo devo scrivere 256, usando Lset o Rset mi mostra sempre 1025 .
Ho usato LSet e RSet in questa maniera
In entrambi i casi il valore che mostra è 1025
Scusate se sono stato prolisso .
Grazie
La parte in VB è solo una interfaccia operatore , dove posso scrivere e leggere dei valori che invio o ricevo da arduino , lui fa tutto il resto.
Arduino trasmette sempre i dati con intervalli di 1 secondo ma li visualizzo solo alla pressione di un pulsante , i dati da VB ad arduino sono tramite pulsante .
Mi ritrovo che a mio parere ad un certo punto dovrei usare la funzione Right , però mi da errore e non ho capito perchè .
Ho provato ad usare anche Rset e Lset , ma anche in questo caso non capisco perchè il risultato non cambia .
Intanto allego quello che ho scritto
Public Class Form1 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click SerialPort1.WriteLine(TextBox2.Text) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click SerialPort1.Close() ComboBox1.Items.Clear() ComboBox1.Items.AddRange(IO.Ports.SerialPort.GetPortNames()) If ComboBox1.Text <> "" Then Try SerialPort1.Encoding = System.Text.Encoding.Default SerialPort1.PortName = ComboBox1.Text SerialPort1.Open() MsgBox("connesso") Catch ex As Exception MsgBox(" non connesso") End Try End If End Sub Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click Dim arduino As String = SerialPort1.ReadLine() Dim lunghezza As Short = Len(arduino) Dim valore As String = Right(arduino, lunghezza - 2) Dim indice As Short = Mid(arduino, 1, 2) If indice = 10 Then TextBox2.Text = valore End If If indice = 20 Then TextBox3.Text = valore End If TextBox4.Text = arduino End Sub End Class
Le prime due cifre del numero che invia arduino , servono per identificare il campo in cui scrivere i valori , le rimanenti cifre son il valore vero e proprio .
Avevo pensato di
1) leggere il valore dalla porta seriale e metterlo in una stringa
2) controllare il numero di caratteri della stringa
3) identificare i primi due caratteri e in base al valore decidere dove scrivere la variabile
4) tagliare dalla stringa le prime due cifre
5) scrivere la stringa tagliata nel campo corretto .
Io sono bloccato al punto 4 .
Se sostituisco Right con LSet o RSet , il programma gira , non da errori , però il valore che mostra non è corretto .
Supponendo che il valore inviato da arduino è 10256 10 indica in che campo devo scrivere 256, usando Lset o Rset mi mostra sempre 1025 .
Ho usato LSet e RSet in questa maniera
Dim valore As String = LSet(arduino, lunghezza - 2) Dim valore As String = RSet(arduino, lunghezza - 2)
In entrambi i casi il valore che mostra è 1025
Scusate se sono stato prolisso .
Grazie
aaa