Salve a tutti, premetto che son novello della programmazione e che ho creato un post come questo in un altro forum. Lo posto anche qui per avere diversi punti di vista.

Problema: Devo creare un programma in vb.net che legge la pesata di una bilancia elettronica. Tale peso deve essere letto dal programma ogni volta che viene fatta una pesata.

Situazione: La bilancia si collega al pc tramite un adattatore da COM a USB.

Mia Soluzione: Dopo giorni di ricerche e letture ho trovato la classe IO.Ports.SerialPort che permette di comunicare con una porta seriale. Questo è il codice che ho scritto per comunicare con la bilancia.
codice:
Public Class Form1
    Dim WithEvents serialPort As New IO.Ports.SerialPort
   
'Combobox in cui vengono elencate in apertura di programma le porte COM disponibili
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For i As Integer = 0 To My.Computer.Ports.SerialPortNames.Count - 1
            cbbCOMPorts.Items.Add(My.Computer.Ports.SerialPortNames(i))
        Next
        btnDisconnect.Enabled = False
    End Sub

'Bottone di connessione alla porta COM
    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click

        If serialPort.IsOpen Then
            serialPort.Close()
        End If

        Try
            With serialPort
                .PortName = cbbCOMPorts.Text
                .BaudRate = 9600
                .Parity = IO.Ports.Parity.None
                .DataBits = 8
                .StopBits = IO.Ports.StopBits.One
            End With
            serialPort.Open()

            lblMessage.Text = cbbCOMPorts.Text & " connected."
            btnConnect.Enabled = False
            btnDisconnect.Enabled = True
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

'Pulsante di disconnessione
    Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
        Try
            serialPort.Close()
            lblMessage.Text = serialPort.PortName & " disconnected."
            btnConnect.Enabled = True
            btnDisconnect.Enabled = False
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

'queste sono le sub che permettono la ricezione dei dati dal dispositivo
    Private Sub DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serialPort.DataReceived

        txtDataReceived.Invoke(New myDelegate(AddressOf updateTextBox), New Object() {})
    End Sub

    Public Delegate Sub myDelegate()

    Public Sub updateTextBox()
        With txtDataReceived
            .Font = New Font("Arial", 12.0!, FontStyle.Bold)
            .SelectionColor = Color.Red
            .AppendText(serialPort.ReadExisting)
            .ScrollToCaret()
        End With
    End Sub

   
    Private Sub BbtnEsci_Click(sender As System.Object, e As System.EventArgs) Handles BbtnEsci.Click
        Me.Close()
    End Sub
End Class
Quello che avviene: La connessione viene accettata, e la textbox riceve stringhe, ma errate. Mi spiego meglio. Dato che con 'serialPort.readExisting' leggo di continuo qualsiasi dato in uscita, ho una continua lettura di stringhe, queste stringhe però non sono il peso che la bilancia sengna nel suo display personale, bensì vengono letti questi caratteri :

$b?jP+ 0,0
P+ 0,0
P+ 0,0
P+ 0,0
P+ 0,0
P+ 0,0
P+ 0,0

Tali caratteri vengono scritti continuamente fino a che non si chiude la connessione o il programma stesso.

Qualcuno ha già avuto a che fare con le bilance elettroniche? come ha risolto?
Questo codice è il giusto modo di approcciarmi al problema?
Sto sbagliando o manca qualcosa a ciò che ho scritto?
Grazie mille