Die Empfang Funkion wird hier aufgerufen:
Ich habe jetzt noch schnell folgendes ausprobiert mit Thread.sleep(1000):
Leider auch ohne erfolg
VB.NET-Quellcode
- Imports System
- Imports System.Threading
- Imports System.IO.Ports
- Imports System.ComponentModel
- Public Class Form1
- '------------------------------------------------
- Dim myPort As Array
- Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data
- '------------------------------------------------
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- ComboBox2.Text = "9600"
- myPort = IO.Ports.SerialPort.GetPortNames()
- ComboBox1.Items.AddRange(myPort)
- Button2.Enabled = False
- Button4.Enabled = False
- Dim params() As String = Environment.GetCommandLineArgs
- For Each parameter As String In params
- If parameter = "com" Then
- Try
- SerialPort1.Close()
- SerialPort1.PortName = parameter
- SerialPort1.BaudRate = 9600
- SerialPort1.Open()
- Button1.Enabled = False
- Button2.Enabled = True
- Button4.Enabled = True
- MsgBox(parameter)
- Catch ex As Exception
- End Try
- End If
- Next
- End Sub
- '------------------------------------------------
- Private Sub ComboBox1_Click(sender As System.Object, e As System.EventArgs) Handles ComboBox1.Click
- End Sub
- '------------------------------------------------
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Try
- SerialPort1.Close()
- SerialPort1.PortName = ComboBox1.Text
- SerialPort1.BaudRate = ComboBox2.Text
- SerialPort1.Open()
- Button1.Enabled = False
- Button2.Enabled = True
- Button4.Enabled = True
- Catch ex As Exception
- End Try
- End Sub
- '------------------------------------------------
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
- SerialPort1.Write(RichTextBox1.Text & vbCr)
- End Sub
- Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
- SerialPort1.Close()
- Button1.Enabled = True
- Button2.Enabled = False
- Button4.Enabled = False
- End Sub
- Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
- ReceivedText(SerialPort1.ReadExisting())
- End Sub
- Private Sub ReceivedText(ByVal [text] As String) 'input from ReadExisting
- If Me.RichTextBox2.InvokeRequired Then
- Dim x As New SetTextCallback(AddressOf ReceivedText)
- Me.Invoke(x, New Object() {(text)})
- Else
- Me.RichTextBox2.AppendText([text]) 'append text
- 'RichTextBox2.SelectionStart = Len(RichTextBox2.Text)
- 'RichTextBox2.ScrollToCaret()
- End If
- End Sub
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
- 'ComboBox1 mit verfügbaren seriellen Schnittstellen füllen
- myPort = IO.Ports.SerialPort.GetPortNames()
- ComboBox1.Items.Clear()
- ComboBox1.Items.AddRange(myPort)
- SerialPort1.WriteTimeout = 1000
- SerialPort1.BaudRate = "9600"
- SerialPort1.Close()
- Button1.Enabled = False
- Button2.Enabled = True
- Button4.Enabled = True
- For Each Port In IO.Ports.SerialPort.GetPortNames()
- Try
- MsgBox(Port)
- SerialPort1.PortName = Port
- SerialPort1.Open()
- SerialPort1.Write(Port)
- SerialPort1.Close()
- Catch ex As Exception
- End Try
- Next
- End Sub
- Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
- End Sub
- Private Sub PictureBox1_Click(sender As Object, e As EventArgs)
- End Sub
- Private Sub TabControl1_Click(sender As Object, e As EventArgs) Handles TabControl1.Click
- RichTextBox2.Clear()
- End Sub
- Private Sub Label1_Click(sender As Object, e As EventArgs)
- End Sub
- Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
- Dim Interval3 As String
- Interval3 = TextBox3.Text
- Dim Interval4 As String
- Interval4 = TextBox4.Text
- myPort = IO.Ports.SerialPort.GetPortNames()
- ComboBox1.Items.Clear()
- ComboBox1.Items.AddRange(myPort)
- RichTextBox2.Clear()
- SerialPort1.Close()
- SerialPort1.BaudRate = 9600
- For i = CInt(Interval3) To CInt(Interval4) Step 1
- Dim portnummer As String
- portnummer = CStr(i)
- If ComboBox1.Items.Contains("COM" + portnummer) Then
- Try
- SerialPort1.Close()
- SerialPort1.PortName = "COM" + portnummer
- SerialPort1.Open()
- Dim ident As String
- ident = TextBox5.Text
- RichTextBox2.AppendText("COM" + portnummer + vbCr)
- RichTextBox2.AppendText("---------------------" + vbCr)
- SerialPort1.Write(ident + vbCr) 'concatenate with \
- Catch ex As Exception
- End Try
- End If
- Next i
- End Sub
- Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
- Process.Start("hdwwiz.cpl")
- End Sub
- Private Sub RichTextBox2_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox2.TextChanged
- End Sub
- Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
- End Sub
- End Class
Ich habe jetzt noch schnell folgendes ausprobiert mit Thread.sleep(1000):
VB.NET-Quellcode
- 'ComboBox1 mit verfügbaren seriellen Schnittstellen füllen
- myPort = IO.Ports.SerialPort.GetPortNames()
- ComboBox1.Items.Clear()
- ComboBox1.Items.AddRange(myPort)
- SerialPort1.WriteTimeout = 1000
- SerialPort1.BaudRate = "9600"
- SerialPort1.Close()
- Button1.Enabled = False
- Button2.Enabled = True
- Button4.Enabled = True
- For Each Port In IO.Ports.SerialPort.GetPortNames()
- Try
- MsgBox(Port)
- SerialPort1.PortName = Port
- SerialPort1.Open()
- SerialPort1.Write(Port)
- Thread.Sleep(1000)
- SerialPort1.Close()
- Catch ex As Exception
- End Try
- Next
Leider auch ohne erfolg