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:
Spero possiate darmi una mano e considerate sempre che non sono un esperto in vb.net. Vi ringrazio per l'attenzione. Ciaocodice: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![]()

Rispondi quotando