Vb 2010 e Arduino, non riesco a visualizzare i caratteri in ricezione

Salve a tutti, una decina di anni fa avevo imparato abbastanza bene visual basic 6 ma in questi anni mi sono dedicato più alle riparazioni che alla programmazione, da qualche mese ho acquistato Arduino e non riesco più a staccarmici, ho ripreso in mano visual basic, che intanto è arrivato alla versione 2010 e ho cominciato a sperimentare. Ho creato un semplice programma che visualizza cio che viene ricevuto dalla porta seriale e che invia una stringa sempre via seriale ad Arduino, il problema è che non riesco a visualizzare in una label ciò che ricevo dalla seriale fino a che non ricevo il timeout, ricevendo sulla label la stringa del timeout correttamente ho iniziato a pensare che il problema sia nell'acquisizione dei dati. Vi posto il codice completo creato con visualbasic 2010 express:

Public Class Form1
    'questo programma invia e riceve dati alla seriale selezionata, base per partire con comunicazione arduino
    Dim comselect As String
    Sub GetSerialPortNames()
        ' Show all available COM ports.
        cbxcomsel.Items.Clear()
        For Each sp As String In My.Computer.Ports.SerialPortNames
            cbxcomsel.Items.Add(sp)
        Next
    End Sub
    Function ReceiveSerialData() As String
        ' Receive strings from a serial port.
        Dim returnStr As String = ""

        Dim com1 As IO.Ports.SerialPort = Nothing
        Try
            com1 = My.Computer.Ports.OpenSerialPort(comselect)
            com1.BaudRate = 9600
            com1.ReadTimeout = 10000
            Do
                Dim Incoming As String = com1.ReadLine()
                If Incoming Is Nothing Then
                    Exit Do
                Else
                    returnStr &= Incoming & vbCrLf
                End If
            Loop
        Catch ex As TimeoutException
            returnStr = "Error: Serial Port read timed out."
            tmrrec.Stop() 'blocca il timer per la ricezione altrimenti manda in blocco l'app
        Finally
            If com1 IsNot Nothing Then com1.Close()
        End Try

        Return returnStr
    End Function

    Sub SendSerialData(ByVal data As String)
        ' Send strings to a serial port.
        Using com1 As IO.Ports.SerialPort =
                My.Computer.Ports.OpenSerialPort(comselect)
            com1.WriteLine(data)
        End Using
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        GetSerialPortNames()
    End Sub

    Private Sub cmdserialupd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdserialupd.Click
        GetSerialPortNames()
    End Sub

    Private Sub cbxcomsel_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbxcomsel.SelectedIndexChanged
        comselect = cbxcomsel.SelectedItem
    End Sub

    Private Sub cmdsnddata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsnddata.Click
        SendSerialData(txtsenddata.Text)
    End Sub

    Private Sub tmrrec_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrrec.Tick
        lbldatareceive.Text = ReceiveSerialData()
    End Sub

    Private Sub cmdactrec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdactrec.Click
        tmrrec.Start()
    End Sub

Questo invece è la funzione dove credo che sia il problema:

Function ReceiveSerialData() As String
        ' Receive strings from a serial port.
        Dim returnStr As String = ""

        Dim com1 As IO.Ports.SerialPort = Nothing
        Try
            com1 = My.Computer.Ports.OpenSerialPort(comselect)
            com1.BaudRate = 9600
            com1.ReadTimeout = 10000
            Do
                Dim Incoming As String = com1.ReadLine()
                If Incoming Is Nothing Then
                    Exit Do
                Else
                    returnStr &= Incoming & vbCrLf
                End If
            Loop
        Catch ex As TimeoutException
            returnStr = "Error: Serial Port read timed out."
            tmrrec.Stop() 'blocca il timer per la ricezione altrimenti manda in blocco l'app
        Finally
            If com1 IsNot Nothing Then com1.Close()
        End Try

        Return returnStr
End Function

Grazie a tutti in anticipo per l'aiuto

Secondo me fai meglio chedere un aiuto in un forum di VB. Il problem che hai non dipende da Arduino ma dal PC e da VB
Ciao Uwe

perchè non ti limiti ad usare soltanto una funzione che riceva dati e te la stampi in un debug? successivamente farai il resto del codice.

adesso devo scappare per andare a lavorare... si torna stasera tardi.

passerò a dare uno sguardino e casomai a spulciare qualche codice qua e là.

se trovo qualcosa sarai avvisato :P

Ciao

uwe hai ragione, eventualmente farò così

Marbi grazie, cmq la stringa la restituisce senza problemi

Io avevo messo un semplice Label.Text = arduino.ReadLine dentro un timer. Da quel che mi ricordo funzionava, perora sono su ubuntu e non posso provarlo..faresti prima a provarlo tu e a farmi sapere :)

mi spiace sciorty ma anche come dici tu mi da errore di timeout, riesco a inviare da vb a arduino senza problemi ma la ricezione è un mistero