' ############################################################################################################################################################ ''' ''' Wird beim Drücken des Trennen Knopfes ausgeführt ''' ''' ''' ''' Schliesst den aktiven COMPORT Private Sub cmdTrennen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTrennen.Click Try cp.DiscardInBuffer() cp.DiscardOutBuffer() cp.Close() <----------------------------------------------------------- Programm stürzt an dieser Stelle ab Me.lblStatus.Text = "Verbindung geschlossen" Me.cmdTrennen.Enabled = False Me.cmdVerbinden.Enabled = True frm_ManuelleSteuerung.picManuelleSteuerung.Enabled = False cp = Nothing Catch ex As Exception MsgBox(ex.ToString) Me.lblStatus.Text = "Fehler beim Schliessen des Ports" End Try End Sub ' ############################################################################################################################################################ ' Hier wird die Form geschlossen Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Try cp.DiscardOutBuffer() cp.DiscardInBuffer() cp.Close() Catch ex As Exception MsgBox(ex.ToString) Finally saveEigeneEinstellungen() End Try cp = Nothing End Sub ' ################################################################################################################################################################################## ' Die Funktion wird bei jedem Datenempfang ausgeführt Private Sub cp_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles cp.DataReceived ' Schreibt anhand des erhaltenen Funktionscodes an die entsprechende Eigenschaft den Übergebenen Wert 'setValues(&H30, cp.BytesToRead) ' Schreibt die Vorgehaltenen Bytes im Puffer für die spätere Anzeige im Form ' in die Globale Variable intTxBytesToWrite = cp.BytesToWrite intRxBytesToRead = cp.BytesToRead If cp.ReadChar = 2 Then Try strString = "" Dim i As Integer = 0 Do intChar(i) = cp.ReadByte i += 1 Loop While ((intChar(i - 1) <> 3) And (i < 30)) Dim temp(3) As Byte newFrame.bytFC = intChar(0) temp(0) = intChar(4) temp(1) = intChar(3) temp(2) = intChar(2) temp(3) = intChar(1) newFrame.sngValue = System.BitConverter.ToSingle(temp, 0) strString += "FC:(" & Hex(intChar(0)) & ")" & "Value : (" & CStr(newFrame.sngValue) & ")" & vbCrLf ' Schreibt anhand des erhaltenen Funktionscodes an die entsprechende Eigenschaft den Übergebenen Wert setValues(intChar(0), newFrame.sngValue) Me.Invoke(Aktualisieren) Catch ex As System.IndexOutOfRangeException cp.DiscardInBuffer() Catch ex As Exception MsgBox(ex.ToString) End Try End If End Sub