Salve ragazzi. Sono nuovo e spero mi perdoniate se avrò fatto qualche errore nell'inserimento del topic. Vengo al dunque. Da qualche settimana mi sono cimentato nell'utilizzo di visual basic .net con visual studio 2010 express. Sto costruendo un cronometro con precisione millesimale con start/stop tramite seriale. La mia idea nasce da un programma simile visto in giro (però a pagamento), cosi ho pensato di farmene uno simile io (dato che comunque non mi servono molte funzioni oltre al cronometro stesso). Quel programma manda lo start e lo stop tramite l'utilizzo del dtr/dsr (pin 4 e pin 6). Semplicemente unendo i fili (o usando un bottone, fotocellula, ecc) permette l'esecuzione del cronometro. Io sono riuscito a creare il cronometro, ad instanziare una nuova seriale e creare l'occorrente per quello che dovrei fare ma stranamente c'è qualcosa che non mi funziona. In pratica tramite tasti il cronometro va ma con la seriale non funziona. Ho letto e riletto ma non capisco cosa abbia sbagliato. Inoltre non capisco perchè il cronometro ha tipo dei problemi di rendering durante l'esecuzione. E' come se si micro-spostasse. Sapete cosa può essere ? Vi allego il codice:

codice:
Imports System.IO.Ports
Imports System.Threading

Public Class Form1

    Private trd As Thread

    Dim startTime As DateTime
    Dim Zerooo As String = "00:00:000"
    Dim TextSend As String

    Private DSR_High As Boolean = False

    Private Sub frmSerialPortExample_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboCommPorts.SelectedIndexChanged

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

        AddHandler SerialPort1.PinChanged, AddressOf SerialPort1_PinChanged

        Try
            With SerialPort1
                .PortName = cboCommPorts.Text
                .BaudRate = 9600
                .Parity = IO.Ports.Parity.None
                .DataBits = 8
                .StopBits = IO.Ports.StopBits.One
                .DtrEnable = True
            End With
            SerialPort1.Open()

            lblMessage.Text = SerialPort1.PortName & " connected"

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub SerialPort1_PinChanged(ByVal sender As Object, ByVal e As System.IO.Ports.SerialPinChangedEventArgs) Handles SerialPort1.PinChanged

        If e.EventType = SerialPinChange.DsrChanged Then 'DB9-6   

            If Not Me.DSR_High = Me.SerialPort1.DsrHolding Then

                Me.DSR_High = Me.SerialPort1.DsrHolding

                'Dsr_hold.Text = "DSR" & Me.SerialPort1.DsrHolding.ToString

                Timer1.Stop()

            End If

        End If

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Timer1.Tick

        Dim span As TimeSpan = DateTime.Now.Subtract(startTime)

        Label1.Text = String.Format("{0:00}:{1:00}:{2}", span.Minutes, span.Seconds, span.Milliseconds)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Button2.Click

        startTime = DateTime.Now()
        Timer1.Start()

    End Sub

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

        Timer1.Stop()

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Button4.Click

        Timer1.Stop()
        Label1.Text = Zerooo

    End Sub

    Private Sub Form1_OnLoad(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
            cboCommPorts.Items.Add(My.Computer.Ports.SerialPortNames(i))
        Next

        Timer1.Stop()
        Label1.Text = Zerooo

    End Sub

End Class
Spero possiate darmi una mano e considerate sempre che non sono un esperto in vb.net. Vi ringrazio per l'attenzione. Ciao