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