Hallo zusammen,
bin ein absoluter Anfänger was VB angeht! Versuch mich gerade in einem kleineren Programm wo ich eine Kommunikation mit einem Gerät aufbauen will und komm einfach nicht weiter! Das Gerät Sendet gewisse Strings über die Com schnittstelle die ich gerne auswerten möchte bzw. darauf antworten möchte! Eine Verbindung zu dem Gerät hab ich schon hin bekommen und ich kann div. Strings in einer Textbox ausgeben bzw. auch Strings senden! Nun möchte ich aber, das sobald ein String z.B "Alive?" oder ein xbeliebigen anderen String gesendet wird darauf mit "OK" antworten! In dem Gerät kann ich bestimmen was und ob es mit Start/End Zeichen senden soll! Leider hab ich noch wirklich eine schöne Lösung gefunden! Mein Programm antwortet zwar, allerdings ein bisschen undefiniert!
Würd mich ein bisschen Hilfe freuen! Besten Dank im Vorraus
bin ein absoluter Anfänger was VB angeht! Versuch mich gerade in einem kleineren Programm wo ich eine Kommunikation mit einem Gerät aufbauen will und komm einfach nicht weiter! Das Gerät Sendet gewisse Strings über die Com schnittstelle die ich gerne auswerten möchte bzw. darauf antworten möchte! Eine Verbindung zu dem Gerät hab ich schon hin bekommen und ich kann div. Strings in einer Textbox ausgeben bzw. auch Strings senden! Nun möchte ich aber, das sobald ein String z.B "Alive?" oder ein xbeliebigen anderen String gesendet wird darauf mit "OK" antworten! In dem Gerät kann ich bestimmen was und ob es mit Start/End Zeichen senden soll! Leider hab ich noch wirklich eine schöne Lösung gefunden! Mein Programm antwortet zwar, allerdings ein bisschen undefiniert!
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- '' Laden des Serial Port
- Me.mycomPort = New IO.Ports.SerialPort("com1")
- Me.mycomPort.BaudRate = 9600
- Me.mycomPort.DataBits = 8
- Me.mycomPort.StopBits = IO.Ports.StopBits.One
- Me.mycomPort.Parity = IO.Ports.Parity.None
- Me.mycomPort.ReceivedBytesThreshold = 1
- Me.mycomPort.Open()
- Timer1.Start()
- End Sub
- Private Sub myComPort_DataReceived(ByVal sender As Object, ByVal b As System.IO.Ports.SerialDataReceivedEventArgs) Handles mycomPort.DataReceived
- Dim msg As String = Me.mycomPort.ReadExisting
- Me.ShowText(msg)
- Select Case b.EventType
- Case IO.Ports.SerialData.Chars
- Case IO.Ports.SerialData.Eof
- End Select
- Me.mycomPort.Write("Ok")
- End Sub
- Private Sub ShowText(ByVal text As String)
- If Me.TextBox1.InvokeRequired Then
- Dim d As New TextBoxCallback(AddressOf ShowText)
- Me.Invoke(d, New Object() {text})
- Else
- Me.TextBox1.Text = Me.TextBox1.Text & text
- End If
- End Sub
- Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
- Me.mycomPort.Close()
- Timer1.Stop()
- Me.Close()
- End Sub
- Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
- Me.mycomPort.Write(TextBox3.Text & vbCrLf)
- Dim TX As String
- TX = TextBox3.Text
- TextBox2.Text = TX & vbCrLf
- End Sub
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- ProgressBar1.Value += 1
- If ProgressBar1.Value = ProgressBar1.Maximum Then
- ProgressBar1.Value = 0
- End If
- End Sub
Würd mich ein bisschen Hilfe freuen! Besten Dank im Vorraus