Go Down

Topic: Monitor porta Com con VisualBasic 2008 e Arduino... (Read 1 time) previous topic - next topic

dukone

Buongiorno a tutti,
sto scrivendo un'applicazione che legge i comondi da arduino tramite la porta COM...

Su arduino il codice è questo...
Quote
int temperatura;
void setup ()
{
Serial.begin(9600);
}
void loop()
{
temperatura=analogRead(A1);
temperatura=(5.0* temperatura *100)/1024;
Serial.println(temperatura);
Serial.print("Celsius ");
delay(1000);
}


in visualbasic prendo il tutto e lo assegno a "TextBox1.Text = Rxdata", ma in esecuzione mi mostra questo...


non capisco da il carattere mostrato dopo il 66...

magari a qualcuno è già capitato e mi può dare una mano...
se riesco a finirlo posso passarlo magari a qualcuno torna utile...
chi si accontenta gode.... ma chi gode non si accontenta mai...


"...il mio crimine è la curiosità... puoi fermarne uno, non puoi fermarli

niki77

#1
Nov 13, 2012, 12:48 pm Last Edit: Nov 13, 2012, 12:50 pm by niki77 Reason: 1


non capisco da il carattere mostrato dopo il 66...



é il carattere di LineFeed, se non vuoi visualizzarlo trimmalo.
Mi pare che la Serial usi come terminatore 0x10 o 0x13, se verifichi nel debugger cosa transita te ne accorgi subito .

P.S. che metodo hai usato del framework per leggere la seriale? ReadLine o ReadExistings?
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

dukone

ho usato  Rxdata = SerialPort1.ReadLine ora uso   ;) Rxdata = SerialPort1.ReadLine.Trim
Mi manca da risolvere un ultimo problema e ho finito...
quando chiudo la porta per stoppare Rxdata mi va tutto in errore...

Quote
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Button1.Enabled = True
        ComboBox1.Enabled = True
        ComboBox2.Enabled = True
        SerialPort1.Close()
        ToolStripStatusLabel1.Text = "Nessuna Porta Connessa "
    End Sub


e l'errore mi si presenta su  Rxdata = SerialPort1.ReadLine.Trim

Quote
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Rxdata = SerialPort1.ReadLine.Trim
    End Sub


chi si accontenta gode.... ma chi gode non si accontenta mai...


"...il mio crimine è la curiosità... puoi fermarne uno, non puoi fermarli

niki77

Se magari mi scrivi lo stack dell'eccezione... sennò ... mica sono frate indovino!  :smiley-mr-green:


Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

dukone

eccoti il tutto....  :smiley-sweat:
Quote
Public Class Form1

    Dim Rxdata As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Enabled = False
        Button2.Enabled = False
        SerialPort1.Close()
        Dim porte As String()
        porte = SerialPort1.GetPortNames()
        For i = 0 To porte.Length - 1
            ComboBox1.Items.Add(porte(i))
        Next i
        ComboBox2.Items.Add("9600")
        ToolStripStatusLabel1.Text = "Nessuna Porta Connessa "
        Timer1.Enabled = True

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1.Enabled = False
        ComboBox1.Enabled = False
        ComboBox2.Enabled = False
        Button2.Enabled = True
        '....................................................... apri la porta COM
        SerialPort1.Close()
        SerialPort1.PortName = ComboBox1.Text
        SerialPort1.Parity = IO.Ports.Parity.None
        SerialPort1.DataBits = 8
        SerialPort1.StopBits = IO.Ports.StopBits.One
        SerialPort1.Open()
        SerialPort1.DiscardInBuffer()
        '.........................................................
        ToolStripStatusLabel1.Text = "Porta Connessa " & ComboBox1.Text
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Button1.Enabled = True
        ComboBox1.Enabled = True
        ComboBox2.Enabled = True
        SerialPort1.Close()
        ToolStripStatusLabel1.Text = "Nessuna Porta Connessa "
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        End
    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        GroupBox1.Text = "Interval Times " & TrackBar1.Value / 1000 & " seconds"
        Timer1.Interval = TrackBar1.Value
    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Rxdata = SerialPort1.ReadLine.Trim
    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        TextBox1.Text = TextBox1.Text & Rxdata & " "
    End Sub

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
        Button1.Enabled = True
    End Sub
End Class
chi si accontenta gode.... ma chi gode non si accontenta mai...


"...il mio crimine è la curiosità... puoi fermarne uno, non puoi fermarli

Go Up