Hallo Gemeinde,
ich hatte eigentlich eine kleine Aufgabe vor die sich allerdings doch schwerer als erwartet gestaltet hat.
Der Hintergrund:
In der Automobilbranche gibt es den Standard der AK Befehle, damit werden seriell verbundene Messgeräte gesteuert. Es gibt bisher (mir kein bekanntes) Programm in dem man 'einfach' den Port wählt, verbindet und Befehle schicken kann. Dies wäre allerdings eine extreme Erleichterung für Servicetechniker öä.
Prinzipiell ist es keine große Sache Daten per COM zu verschicken, habe ich auch schon hinbekommen. Nur der Syntax dieser Befehle macht mir zu schaffen. Ich habe ein Bild angefügt um diese zu verdeutlichen.
Ich habe auch ein Beispielprogramm gefunden (nicht von mir, nur cut and paste) dessen Code ich unten angefügt habe. Wenn ich Pin 2und3 brücke kommen die Daten im Empfangsfenster an, somit gehe ich von einer funktionierenden Hardware aus. Unsere Messgeräte sind auch okay, sie reagieren ebenfalls auf AK Befehle.
Zu meiner Person, bin ein "Wiedereinstiger" und komme von früheren VB Versionen. Natürlich wäre es besser an anderer Stelle einzusteigen, allerdings lerne ich am liebsten und besten problembezogen(für den gewissen Ehrgeiz). Ich erwarte nicht, dass mir jemand ein fertiges Programm liefert, Hilfestellungen und Denkanstöße wären super
viele Grüße
Julian
ich hatte eigentlich eine kleine Aufgabe vor die sich allerdings doch schwerer als erwartet gestaltet hat.
Der Hintergrund:
In der Automobilbranche gibt es den Standard der AK Befehle, damit werden seriell verbundene Messgeräte gesteuert. Es gibt bisher (mir kein bekanntes) Programm in dem man 'einfach' den Port wählt, verbindet und Befehle schicken kann. Dies wäre allerdings eine extreme Erleichterung für Servicetechniker öä.
Prinzipiell ist es keine große Sache Daten per COM zu verschicken, habe ich auch schon hinbekommen. Nur der Syntax dieser Befehle macht mir zu schaffen. Ich habe ein Bild angefügt um diese zu verdeutlichen.
Ich habe auch ein Beispielprogramm gefunden (nicht von mir, nur cut and paste) dessen Code ich unten angefügt habe. Wenn ich Pin 2und3 brücke kommen die Daten im Empfangsfenster an, somit gehe ich von einer funktionierenden Hardware aus. Unsere Messgeräte sind auch okay, sie reagieren ebenfalls auf AK Befehle.
Zu meiner Person, bin ein "Wiedereinstiger" und komme von früheren VB Versionen. Natürlich wäre es besser an anderer Stelle einzusteigen, allerdings lerne ich am liebsten und besten problembezogen(für den gewissen Ehrgeiz). Ich erwarte nicht, dass mir jemand ein fertiges Programm liefert, Hilfestellungen und Denkanstöße wären super
viele Grüße
Julian
Quellcode
- 'Code Starts here ....
- 'Import Systems which we are gonna use in our code
- Imports System
- Imports System.ComponentModel
- Imports System.Threading
- Imports System.IO.Ports
- 'frmMain is the name of our form ....
- 'Here starts our main form code .....
- Public Class frmMain
- Dim myPort As Array
- Delegate Sub SetTextCallback(ByVal [text] As String)
- 'Page Load Code Starts Here....
- Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- myPort = IO.Ports.SerialPort.GetPortNames()
- cmbBaud.Items.Add(9600)
- cmbBaud.Items.Add(19200)
- cmbBaud.Items.Add(38400)
- cmbBaud.Items.Add(57600)
- cmbBaud.Items.Add(115200)
- For i = 0 To UBound(myPort)
- cmbPort.Items.Add(myPort(i))
- Next
- cmbPort.Text = cmbPort.Items.Item(0)
- cmbBaud.Text = cmbBaud.Items.Item(0)
- btnDisconnect.Enabled = False
- End Sub
- 'Page Load Code Ends Here ....
- 'Connect Button Code Starts Here ....
- Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
- SerialPort1.PortName = cmbPort.Text
- SerialPort1.BaudRate = cmbBaud.Text
- SerialPort1.Parity = IO.Ports.Parity.None
- SerialPort1.StopBits = IO.Ports.StopBits.One
- SerialPort1.DataBits = 8
- SerialPort1.Open()
- btnConnect.Enabled = False
- btnDisconnect.Enabled = True
- End Sub
- 'Connect Button Code Ends Here ....
- 'Disconnect Button Code Starts Here ....
- Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
- SerialPort1.Close()
- btnConnect.Enabled = True
- btnDisconnect.Enabled = False
- End Sub
- 'Disconnect Button Code Ends Here ....
- 'Send Button Code Starts Here ....
- Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
- SerialPort1.Write(txtTransmit.Text)
- End Sub
- 'Send Button Code Ends Here ....
- 'Serial Port Receiving Code Starts Here ....
- Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
- ReceivedText(SerialPort1.ReadExisting())
- End Sub
- 'Serial Port Receiving Code Ends Here ....
- 'Serial Port Receiving Code(Invoke) Starts Here ....
- Private Sub ReceivedText(ByVal [text] As String)
- If Me.rtbReceived.InvokeRequired Then
- Dim x As New SetTextCallback(AddressOf ReceivedText)
- Me.Invoke(x, New Object() {(text)})
- Else
- Me.rtbReceived.Text &= [text]
- End If
- End Sub
- 'Serial Port Receiving Code(Invoke) Ends Here ....
- 'Com Port Change Warning Code Starts Here ....
- Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
- If SerialPort1.IsOpen = False Then
- SerialPort1.PortName = cmbPort.Text
- Else
- MsgBox("Valid only if port is Closed", vbCritical)
- End If
- End Sub
- 'Com Port Change Warning Code Ends Here ....
- 'Baud Rate Change Warning Code Starts Here ....
- Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
- If SerialPort1.IsOpen = False Then
- SerialPort1.BaudRate = cmbBaud.Text
- Else
- MsgBox("Valid only if port is Closed", vbCritical)
- End If
- End Sub
- 'Baud Rate Change Warning Code Ends Here ....
- End Class
- 'Whole Code Ends Here ....