none
Ungültiger threadübergreifender Vorgang RRS feed

  • Frage

  • Hallo,

    ich habe ein Projekt, wo ich über den Seriellen Port Daten sende und empfange.

    Leider habe ich das Problem mit dem <Ungültiger threadübergreifender Vorgang>. Ich weis nicht weiter, deshalb wende ich mich an Euch hier im Forum.

    hier der gesamte Code:

    
    

    Ich hoffe Ihr könnt mir BITTE helfen.

    Gruß Andreas




    • Bearbeitet Hicki Dienstag, 17. September 2013 06:27
    Montag, 16. September 2013 22:34

Antworten

  • Hallo Andreas,

    wie soll dir jemand helfen, wenn Du einfach einen sehr großen Codeblock hier postest und uns nicht erzählst, wo genau der Fehler überhaupt auftritt?

    Weitere Infos wie bspw. der gesamte Stacktrace wären auch hilfreich.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 09:26
    Montag, 16. September 2013 23:46
    Moderator
  • Hi Stefan,

    den Code habe ich etwas aufgeräumt:

    Imports System
    Imports System.Threading
    Imports System.IO.Ports
    Imports System.ComponentModel
    Imports System.Windows.Forms
    
    Public Class Form1
        Dim com_text As Array
        Public eigenschaft As String
        Public empfangsbuffer As New List(Of String)
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            List_COM_Port.Items.AddRange(IO.Ports.SerialPort.GetPortNames())
            List_COM_Port.SelectedIndex = 0
            Timer1.Interval = 1000 'ms
            Timer1.Enabled = True
            Eingabe_Stunden.SelectedIndex = 0
            Eingabe_Minuten.SelectedIndex = 0
            Eingabe_Sekunden.SelectedIndex = 0
            Eingabe_Jahr.SelectedIndex = 0
            Eingabe_Monat.SelectedIndex = 0
            Eingabe_Tag.SelectedIndex = 1
            Eingabe_Zeitzone.SelectedIndex = 0
            Eingabe_Alarm_Typ.SelectedIndex = 0
            Eingabe_Alarm_Stunden.SelectedIndex = 0
            Eingabe_Alarm_Minuten.SelectedIndex = 0
            Eingabe_Alarm_Jahr.SelectedIndex = 0
            Eingabe_Alarm_Monat.SelectedIndex = 0
            Eingabe_Alarm_Tag.SelectedIndex = 1
            Eingabe_Alarm_Wochentag.SelectedIndex = 1
            Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = 0
            Eingabe_Alarm_Soundnummer.SelectedIndex = 0
            Eingabe_Alarm_Lautstärke.SelectedIndex = 10
            Eingabe_Konfig_Sprache.SelectedIndex = 0
            Eingabe_Konfig_Display_Invertierung.SelectedIndex = 0
            Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex = 0
            Eingabe_Konfig_DCF77_Invertierung.SelectedIndex = 0
            Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Modus.SelectedIndex = 0
            Eingabe_Konfig_Sound_Ausgabe.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex = 0
            Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex = 0
            Eingabe_Konfig_Gong_Lautstärke.SelectedIndex = 0
            Eingabe_Konfig_Gong.SelectedIndex = 0
            Eingabe_Konfig_Geb_Namen.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alter.SelectedIndex = 0
            Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex = 0
        End Sub
    
        Private Sub Button_Uhrzeit_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Uhrzeit_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("t?" + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Uhrzeit lesen")
            End Try
    
        End Sub
    
        Private Sub Button_Uhrzeit_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Uhrzeit_schreiben.Click
            Try
                SerialPort1.WriteLine("t:" + Eingabe_Stunden.Items.Item(Eingabe_Stunden.SelectedIndex).ToString + ":" + Eingabe_Minuten.Items.Item(Eingabe_Minuten.SelectedIndex).ToString + ":" + Eingabe_Sekunden.Items.Item(Eingabe_Sekunden.SelectedIndex).ToString + "," + Eingabe_Jahr.Items.Item(Eingabe_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Tag.Items.Item(Eingabe_Tag.SelectedIndex).ToString + "," + Eingabe_Zeitzone.SelectedIndex.ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Uhrzeit schreiben")
            End Try
        End Sub
    
        Private Sub Button_Verbinden_Click(sender As System.Object, e As System.EventArgs) Handles Button_Verbinden.Click
            Try
                SerialPort1.PortName = List_COM_Port.Text
                SerialPort1.Open()
                Kontrolle_Port_Ein.BackColor = Color.Green
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("v?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("Öffnen Com-Port fehlgeschlagen oder ist schon geöffnet")
            End Try
        End Sub
        Private Sub Button_Schließen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Schließen.Click
            SerialPort1.Close()
            Kontrolle_Port_Ein.BackColor = Color.Red
        End Sub
        Private Sub Einstellung_Com_Port_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles Einstellung_Com_Port.Paint
        End Sub
    
        Private Sub PC_Zeit_Click(sender As System.Object, e As System.EventArgs) Handles PC_Zeit.Click
            SerialPort1.WriteLine("t:" & Format(Now, "HH:mm:ss") & "," & Format(Now, "yyyy-MM-dd") & ",1" + vbCrLf)
            Eingabe_Stunden.SelectedIndex = CInt(Format(Now, "HH:mm:ss").Substring(0, 2))
            Eingabe_Minuten.SelectedIndex = CInt(Format(Now, "HH:mm:ss").Substring(3, 2))
            Eingabe_Sekunden.SelectedIndex = CInt(Format(Now, "HH:mm:ss").Substring(6, 2))
            Eingabe_Jahr.SelectedIndex = CInt(Format(Now, "yyyy-MM-dd").Substring(0, 4)) - 2013
            Eingabe_Monat.SelectedIndex = CInt(Format(Now, "yyyy-MM-dd").Substring(5, 2)) - 1
            Eingabe_Tag.SelectedIndex = CInt(Format(Now, "yyyy-MM-dd").Substring(8, 2))
            Eingabe_Zeitzone.SelectedIndex = CInt(Eingabe_Zeitzone.SelectedIndex.ToString)
            empfangsbuffer.Clear()
        End Sub
    
        Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim my_text As String
            Dim empfang_configbyte1 As Integer
            Dim empfang_configbyte2 As Integer
            Dim zahl As Integer
            Dim ergebniss As Integer
            Dim zahl2 As Integer
            Dim ergebniss2 As Integer
            Dim bit1 As Integer
            Dim bit2 As Integer
            While SerialPort1.BytesToRead > 1
                my_text = SerialPort1.ReadLine
                empfangsbuffer.Add(my_text)
            End While
            If empfangsbuffer.Item(0).Substring(0, 2) = "t:" Then
                Eingabe_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 2))
                Eingabe_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(5, 2))
                Eingabe_Sekunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(8, 2))
                Eingabe_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(11, 4))
                Eingabe_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(16, 2)) - 1
                Eingabe_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(19, 2))
                Eingabe_Zeitzone.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(22, 1))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "v:" Then
                List_Versions_Info.Text = empfangsbuffer.Item(0)
                List_Versions_Info.Text = List_Versions_Info.Text.Replace("v:v", "Version ")
                List_Versions_Info.Text = List_Versions_Info.Text.Replace(",", " vom")
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "1:" Then
                Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))
                Eingabe_Alarm_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(4, 2))
                Eingabe_Alarm_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(7, 2))
                Eingabe_Alarm_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(10, 4))
                Eingabe_Alarm_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2)) - 1
                Eingabe_Alarm_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 2))
                Eingabe_Alarm_Wochentag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(21, 1))
                Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(23, 1))
                Eingabe_Alarm_Soundnummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "2:" Then
                Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))
                Eingabe_Alarm_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(4, 2))
                Eingabe_Alarm_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(7, 2))
                Eingabe_Alarm_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(10, 4))
                Eingabe_Alarm_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2)) - 1
                Eingabe_Alarm_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 2))
                Eingabe_Alarm_Wochentag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(21, 1))
                Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(23, 1))
                Eingabe_Alarm_Soundnummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "3:" Then
                Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))
                Eingabe_Alarm_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(4, 2))
                Eingabe_Alarm_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(7, 2))
                Eingabe_Alarm_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(10, 4))
                Eingabe_Alarm_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2)) - 1
                Eingabe_Alarm_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 2))
                Eingabe_Alarm_Wochentag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(21, 1))
                Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(23, 1))
                Eingabe_Alarm_Soundnummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "c:" Then
                empfang_configbyte1 = CInt(empfangsbuffer.Item(0).Substring(2, 3))
                empfang_configbyte2 = CInt(empfangsbuffer.Item(0).Substring(34, 2))
                MessageBox.Show(empfangsbuffer.Item(0).Substring(34, 2))
                Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(6, 2))
                Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(9, 2))
                Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(12, 2))
                Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2))
                Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 3))
                Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(22, 2))
                Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                Eingabe_Konfig_Gong_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(31, 2))
                Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(37, 2))
                Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(40, 2))
                Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(43, 2))
                Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(46, 2))
                zahl = CInt(empfang_configbyte1.ToString)
                ergebniss = zahl \ 128
                If ergebniss = 0 Then
                    Eingabe_Konfig_Sprache.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Sprache.SelectedIndex = 1
                    zahl = zahl - 128
                End If
                ergebniss = zahl \ 64
                If ergebniss = 0 Then
                    Eingabe_Konfig_Display_Invertierung.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Display_Invertierung.SelectedIndex = 1
                    zahl = zahl - 64
                End If
                ergebniss = zahl \ 32
                If ergebniss = 0 Then
                    Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex = 1
                    zahl = zahl - 32
                End If
                ergebniss = zahl \ 16
                If ergebniss = 0 Then
                    Eingabe_Konfig_DCF77_Invertierung.SelectedIndex = 0
                Else
                    Eingabe_Konfig_DCF77_Invertierung.SelectedIndex = 1
                    zahl = zahl - 16
                End If
                ergebniss = zahl \ 8
                If ergebniss = 0 Then
                    Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex = 0
                Else
                    Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex = 1
                    zahl = zahl - 8
                End If
                ergebniss = zahl \ 4
                If ergebniss = 0 Then
                    Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex = 1
                    zahl = zahl - 4
                End If
                ergebniss = zahl \ 2
                If ergebniss = 0 Then
                    Eingabe_Konfig_Nacht_Modus.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Nacht_Modus.SelectedIndex = 1
                    zahl = zahl - 2
                End If
                If zahl = 0 Then
                    Eingabe_Konfig_Sound_Ausgabe.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Sound_Ausgabe.SelectedIndex = 1
                End If
                zahl2 = empfang_configbyte2
                MessageBox.Show(zahl2.ToString)
                ergebniss2 = zahl2 \ 32
                If ergebniss2 = 0 Then
                    Eingabe_Konfig_Gong.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Gong.SelectedIndex = 1
                    zahl2 = zahl2 - 32
                End If
                ergebniss2 = zahl2 \ 16
                If ergebniss2 = 0 Then
                    Eingabe_Konfig_Geb_Namen.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Geb_Namen.SelectedIndex = 1
                    zahl2 = zahl2 - 16
                End If
                ergebniss2 = zahl2 \ 8
                If ergebniss2 = 0 Then
                    Eingabe_Konfig_Geb_Alter.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Geb_Alter.SelectedIndex = 1
                    zahl2 = zahl2 - 8
                End If
                bit2 = zahl2 \ 4
                If bit2 = 1 Then zahl2 = zahl2 - 4
                bit1 = zahl2 \ 2
                If bit1 = 1 Then zahl2 = zahl2 - 2
                If zahl2 = 0 Then
                    Eingabe_Konfig_Geb_Alarm.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Geb_Alarm.SelectedIndex = 1
                End If
                If bit2 = 0 And bit1 = 0 Then Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 0
                If bit2 = 0 And bit1 = 1 Then Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 1
                If bit2 = 1 And bit1 = 0 Then Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 2
    
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "b:" Then
                Dim zeile As String
                For Each zeile In empfangsbuffer
                    Dim Arr() As String = zeile.Split({":"c, ","c, "-"c})
                    DataGridView1.Rows.Add({Arr(4), Arr(5), Arr(3), Arr(2), Arr(1)})
                Next
                DataGridView1.Show()
                DataGridView1.Update()
    
                empfangsbuffer.Clear()
            End If
            empfangsbuffer.Clear()
        End Sub
    
        Private Sub Button_Geburtstage_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Geburtstage_lesen.Click
            Try
                SerialPort1.WriteLine("b?" + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Geburtstagsdaten lesen")
            End Try
        End Sub
    
        Private Sub Button_Geburtstage_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Geburtstage_schreiben.Click
            SerialPort1.WriteLine("b:" + Eingabe_Geb_Jahr.Text.ToString + "-" + Eingabe_Geb_Monat.Text.ToString + "-" + Eingabe_Geb_Tag.Text.ToString + "," + Eingabe_Geb_Vorname.Text.ToString + "," + Eingabe_Geb_Nachname.Text.ToString + vbCrLf)
            DataGridView1.Rows.Clear()
            SerialPort1.WriteLine("b?" + vbCrLf)
        End Sub
    
        Private Sub Button_Konfig_Lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Konfig_Lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("c?" + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Konfigurationsdaten lesen")
            End Try
        End Sub
    
        Private Sub Button_Konfig_Schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Konfig_Schreiben.Click
            Dim configbyte1 As Integer
            Dim configbyte2 As Integer
            Dim Dreistelligezahl_byte1 As String
            Dim Zweistelligezahl_byte2 As String
            Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Beginn_Minute.Text)
            Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Beginn_Stunde.Text)
            Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Ende_Minute.Text)
            Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Ende_Stunde.Text)
            Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Helligkeit.Text)
            Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Gong_Beginn_Stunde.Text)
            Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Gong_Ende_Stunde.Text)
            Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex = CInt(Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex)
            Eingabe_Konfig_Gong_Lautstärke.SelectedIndex = CInt(Eingabe_Konfig_Gong_Lautstärke.Text)
            Eingabe_Konfig_Geb_Alter.Text = Eingabe_Konfig_Geb_Alter.Text
            Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Minute.Text)
            Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Stunde.Text)
            Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex)
            Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Lautstärke.Text)
            Try
                configbyte1 = Eingabe_Konfig_Sound_Ausgabe.SelectedIndex + Eingabe_Konfig_Nacht_Modus.SelectedIndex * 2 + Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex * 4 + Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex * 8 + Eingabe_Konfig_DCF77_Invertierung.SelectedIndex * 16 + Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex * 32 + Eingabe_Konfig_Display_Invertierung.SelectedIndex * 64 + Eingabe_Konfig_Sprache.SelectedIndex * 128
                configbyte2 = Eingabe_Konfig_Geb_Alarm.SelectedIndex + Eingabe_Konfig_Geb_Sortierung.SelectedIndex * 2 + Eingabe_Konfig_Geb_Alter.SelectedIndex * 8 + Eingabe_Konfig_Geb_Namen.SelectedIndex * 16 + Eingabe_Konfig_Gong.SelectedIndex * 32
                Dreistelligezahl_byte1 = Format(configbyte1, "000")
                Zweistelligezahl_byte2 = Format(configbyte2, "00")
                SerialPort1.WriteLine("c:" + Dreistelligezahl_byte1.ToString + "," + Eingabe_Konfig_Nacht_Beginn_Minute.Items.Item(Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Beginn_Stunde.Items.Item(Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Minute.Items.Item(Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Stunde.Items.Item(Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Helligkeit.Items.Item(Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Beginn_Stunde.Items.Item(Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Ende_Stunde.Items.Item(Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Gong_Lautstärke.Items.Item(Eingabe_Konfig_Gong_Lautstärke.SelectedIndex).ToString + "," + Zweistelligezahl_byte2.ToString + "," + Eingabe_Konfig_Geb_Alarm_Minute.Items.Item(Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Stunde.Items.Item(Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Geb_Alarm_Lautstärke.Items.Item(Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
                MessageBox.Show("c:" + Dreistelligezahl_byte1.ToString + "," + Eingabe_Konfig_Nacht_Beginn_Minute.Items.Item(Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Beginn_Stunde.Items.Item(Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Minute.Items.Item(Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Stunde.Items.Item(Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Helligkeit.Items.Item(Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Beginn_Stunde.Items.Item(Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Ende_Stunde.Items.Item(Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Gong_Lautstärke.Items.Item(Eingabe_Konfig_Gong_Lautstärke.SelectedIndex).ToString + "," + Zweistelligezahl_byte2.ToString + "," + Eingabe_Konfig_Geb_Alarm_Minute.Items.Item(Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Stunde.Items.Item(Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Geb_Alarm_Lautstärke.Items.Item(Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Konfigurationsdaten schreiben")
            End Try
        End Sub
    
        Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
            System.Diagnostics.Process.Start("http://s-huehn.de/elektronik/tischuhr/tischuhr.htm")
        End Sub
    
        Private Sub Button_Alarm1_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm1_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("1?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-1 lesen")
            End Try
        End Sub
    
        Private Sub Button_Alarm2_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm2_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("2?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("CFehler beim Alarmdaten-2 lesen")
            End Try
        End Sub
    
        Private Sub Button_Alarm3_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm3_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("3?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-3 lesen")
            End Try
        End Sub
    
        Private Sub Button_Alarm1_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm1_schreiben.Click
            Try
                SerialPort1.WriteLine("1:" + Eingabe_Alarm_Typ.SelectedIndex.ToString + "," + Eingabe_Alarm_Stunden.Items.Item(Eingabe_Alarm_Stunden.SelectedIndex).ToString + ":" + Eingabe_Alarm_Minuten.Items.Item(Eingabe_Alarm_Minuten.SelectedIndex).ToString + "," + Eingabe_Alarm_Jahr.Items.Item(Eingabe_Alarm_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Alarm_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Alarm_Tag.Items.Item(Eingabe_Alarm_Tag.SelectedIndex).ToString + "," + Eingabe_Alarm_Wochentag.SelectedIndex.ToString + "," + Eingabe_Alarm_Wochentagsprogramm.SelectedIndex.ToString + "," + Eingabe_Alarm_Soundnummer.SelectedIndex.ToString("00") + "," + Eingabe_Alarm_Lautstärke.Items.Item(Eingabe_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-1 schreiben")
            End Try
        End Sub
    
        Private Sub Button_Alarm2_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm2_schreiben.Click
            Try
                SerialPort1.WriteLine("2:" + Eingabe_Alarm_Typ.SelectedIndex.ToString + "," + Eingabe_Alarm_Stunden.Items.Item(Eingabe_Alarm_Stunden.SelectedIndex).ToString + ":" + Eingabe_Alarm_Minuten.Items.Item(Eingabe_Alarm_Minuten.SelectedIndex).ToString + "," + Eingabe_Alarm_Jahr.Items.Item(Eingabe_Alarm_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Alarm_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Alarm_Tag.Items.Item(Eingabe_Alarm_Tag.SelectedIndex).ToString + "," + Eingabe_Alarm_Wochentag.SelectedIndex.ToString + "," + Eingabe_Alarm_Wochentagsprogramm.SelectedIndex.ToString + "," + Eingabe_Alarm_Soundnummer.SelectedIndex.ToString("00") + "," + Eingabe_Alarm_Lautstärke.Items.Item(Eingabe_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-2 schreiben")
            End Try
        End Sub
    
        Private Sub Button_Alarm3_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm3_schreiben.Click
            Try
     SerialPort1.WriteLine("3:" + Eingabe_Alarm_Typ.SelectedIndex.ToString + "," + Eingabe_Alarm_Stunden.Items.Item(Eingabe_Alarm_Stunden.SelectedIndex).ToString + ":" + Eingabe_Alarm_Minuten.Items.Item(Eingabe_Alarm_Minuten.SelectedIndex).ToString + "," + Eingabe_Alarm_Jahr.Items.Item(Eingabe_Alarm_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Alarm_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Alarm_Tag.Items.Item(Eingabe_Alarm_Tag.SelectedIndex).ToString + "," + Eingabe_Alarm_Wochentag.SelectedIndex.ToString + "," + Eingabe_Alarm_Wochentagsprogramm.SelectedIndex.ToString + "," + Eingabe_Alarm_Soundnummer.SelectedIndex.ToString("00") + "," + Eingabe_Alarm_Lautstärke.Items.Item(Eingabe_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-3 schreiben")
            End Try
        End Sub
    
        
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            DataGridView1.Rows.Add({"Test", "1", "2", "3"})
        End Sub
    
    End Class

    als Beispiel die entsprechende Fehlermeldung, die an den Zeilen unten angeheftet sind:

    Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Eingabe_Stunden erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

    Eingabe_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 2))


    Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))



    Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))


    Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))


    Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(6, 2))

    DataGridView1.Rows.Add({Arr(4), Arr(5), Arr(3), Arr(2), Arr(1)})

    Ich hoffe es verständlicher dargestellt zu haben.

    Gruß Andreas



    • Als Antwort markiert Hicki Dienstag, 17. September 2013 09:26
    • Bearbeitet Hicki Dienstag, 17. September 2013 12:00
    Dienstag, 17. September 2013 06:43
  • Da du vermutlich den Timer als Steuerelement implementiert hast, würde mich mal brennend der Codeausschnitt interessieren, wo du System.Threading-Objekte verwendest. Vermutlich irgendwo, wo du die Ports behandelst (quasi wie ein TCP-Listener).

    Denn vermutlich dürfte von diesen ein Ereignis behandelt werden, dass auf Elemente aus deinem Mainthread (deiner Mainform) zugreift, beispielsweise dort erstellte Listboxen oder Comboboxen. Dies ist verboten, da der zweite Thread ein anderer ist als der, in dem deine Form läuft.

    Umschiffung: Arbeite mit INVOKE.


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 09:26
    Dienstag, 17. September 2013 08:36
  • Umschiffung: Arbeite mit INVOKE.


    Hi Dennis,

    könntest Du mir Bitte dabei helfen, da ich mit INVOKE noch nicht gearbeitet habe und relativ neu in der VB-Materie bin.

    Den TIMER nutze ich nur um die Systemzeit zu übernehmen.

    Gruß Andreas


    • Bearbeitet Hicki Dienstag, 17. September 2013 09:30
    • Als Antwort markiert Hicki Dienstag, 17. September 2013 12:31
    Dienstag, 17. September 2013 09:28
  • Hier nimm dies mal als grundsätzliche Vorlage. Genaueres zu den Syntax findest du natürlich in der MSDN, wenn du die Hilfe aus Visual Studio aufrufst.

    Imports System.Threading
    Public Class Form1
        Public Delegate Sub Uebergabe(ByVal S As String)
        Dim Zielform As Form1 = Me
        Dim AndererThread As Thread
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'In der Hauptform existiert irgendwo ein Label "Label1"
            AndererThread = New Thread(AddressOf ZweiterThread)
            AndererThread.Start()
        End Sub
    
        Public Sub AusgabeInLabel(ByVal S As String)
            Me.Label1.Text = S
        End Sub
    
        Public Sub ZweiterThread()
            Dim Parameter(1)
            Parameter = {"Dies ist ein Test!"}
            Zielform.Invoke(New Uebergabe(AddressOf AusgabeInLabel), Parameter)
            'was nicht gehen würde:
            'Me.Label1.Text = "Geht nicht!"
        End Sub
    End Class
    

    Hoffe das hilft. Getestet isses. ;-)


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 12:25
    Dienstag, 17. September 2013 12:11
  • Hi Dennis,

    vielen Dank für Deine Hilfe. Ich werde es gleich mal damit beschäftigen.

    Gruß Andreas

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 12:31
    Dienstag, 17. September 2013 12:27

Alle Antworten

  • Hallo Andreas,

    wie soll dir jemand helfen, wenn Du einfach einen sehr großen Codeblock hier postest und uns nicht erzählst, wo genau der Fehler überhaupt auftritt?

    Weitere Infos wie bspw. der gesamte Stacktrace wären auch hilfreich.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 09:26
    Montag, 16. September 2013 23:46
    Moderator
  • Hi Stefan,

    den Code habe ich etwas aufgeräumt:

    Imports System
    Imports System.Threading
    Imports System.IO.Ports
    Imports System.ComponentModel
    Imports System.Windows.Forms
    
    Public Class Form1
        Dim com_text As Array
        Public eigenschaft As String
        Public empfangsbuffer As New List(Of String)
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            List_COM_Port.Items.AddRange(IO.Ports.SerialPort.GetPortNames())
            List_COM_Port.SelectedIndex = 0
            Timer1.Interval = 1000 'ms
            Timer1.Enabled = True
            Eingabe_Stunden.SelectedIndex = 0
            Eingabe_Minuten.SelectedIndex = 0
            Eingabe_Sekunden.SelectedIndex = 0
            Eingabe_Jahr.SelectedIndex = 0
            Eingabe_Monat.SelectedIndex = 0
            Eingabe_Tag.SelectedIndex = 1
            Eingabe_Zeitzone.SelectedIndex = 0
            Eingabe_Alarm_Typ.SelectedIndex = 0
            Eingabe_Alarm_Stunden.SelectedIndex = 0
            Eingabe_Alarm_Minuten.SelectedIndex = 0
            Eingabe_Alarm_Jahr.SelectedIndex = 0
            Eingabe_Alarm_Monat.SelectedIndex = 0
            Eingabe_Alarm_Tag.SelectedIndex = 1
            Eingabe_Alarm_Wochentag.SelectedIndex = 1
            Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = 0
            Eingabe_Alarm_Soundnummer.SelectedIndex = 0
            Eingabe_Alarm_Lautstärke.SelectedIndex = 10
            Eingabe_Konfig_Sprache.SelectedIndex = 0
            Eingabe_Konfig_Display_Invertierung.SelectedIndex = 0
            Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex = 0
            Eingabe_Konfig_DCF77_Invertierung.SelectedIndex = 0
            Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Modus.SelectedIndex = 0
            Eingabe_Konfig_Sound_Ausgabe.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex = 0
            Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex = 0
            Eingabe_Konfig_Gong_Lautstärke.SelectedIndex = 0
            Eingabe_Konfig_Gong.SelectedIndex = 0
            Eingabe_Konfig_Geb_Namen.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alter.SelectedIndex = 0
            Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex = 0
            Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex = 0
        End Sub
    
        Private Sub Button_Uhrzeit_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Uhrzeit_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("t?" + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Uhrzeit lesen")
            End Try
    
        End Sub
    
        Private Sub Button_Uhrzeit_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Uhrzeit_schreiben.Click
            Try
                SerialPort1.WriteLine("t:" + Eingabe_Stunden.Items.Item(Eingabe_Stunden.SelectedIndex).ToString + ":" + Eingabe_Minuten.Items.Item(Eingabe_Minuten.SelectedIndex).ToString + ":" + Eingabe_Sekunden.Items.Item(Eingabe_Sekunden.SelectedIndex).ToString + "," + Eingabe_Jahr.Items.Item(Eingabe_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Tag.Items.Item(Eingabe_Tag.SelectedIndex).ToString + "," + Eingabe_Zeitzone.SelectedIndex.ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Uhrzeit schreiben")
            End Try
        End Sub
    
        Private Sub Button_Verbinden_Click(sender As System.Object, e As System.EventArgs) Handles Button_Verbinden.Click
            Try
                SerialPort1.PortName = List_COM_Port.Text
                SerialPort1.Open()
                Kontrolle_Port_Ein.BackColor = Color.Green
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("v?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("Öffnen Com-Port fehlgeschlagen oder ist schon geöffnet")
            End Try
        End Sub
        Private Sub Button_Schließen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Schließen.Click
            SerialPort1.Close()
            Kontrolle_Port_Ein.BackColor = Color.Red
        End Sub
        Private Sub Einstellung_Com_Port_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles Einstellung_Com_Port.Paint
        End Sub
    
        Private Sub PC_Zeit_Click(sender As System.Object, e As System.EventArgs) Handles PC_Zeit.Click
            SerialPort1.WriteLine("t:" & Format(Now, "HH:mm:ss") & "," & Format(Now, "yyyy-MM-dd") & ",1" + vbCrLf)
            Eingabe_Stunden.SelectedIndex = CInt(Format(Now, "HH:mm:ss").Substring(0, 2))
            Eingabe_Minuten.SelectedIndex = CInt(Format(Now, "HH:mm:ss").Substring(3, 2))
            Eingabe_Sekunden.SelectedIndex = CInt(Format(Now, "HH:mm:ss").Substring(6, 2))
            Eingabe_Jahr.SelectedIndex = CInt(Format(Now, "yyyy-MM-dd").Substring(0, 4)) - 2013
            Eingabe_Monat.SelectedIndex = CInt(Format(Now, "yyyy-MM-dd").Substring(5, 2)) - 1
            Eingabe_Tag.SelectedIndex = CInt(Format(Now, "yyyy-MM-dd").Substring(8, 2))
            Eingabe_Zeitzone.SelectedIndex = CInt(Eingabe_Zeitzone.SelectedIndex.ToString)
            empfangsbuffer.Clear()
        End Sub
    
        Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim my_text As String
            Dim empfang_configbyte1 As Integer
            Dim empfang_configbyte2 As Integer
            Dim zahl As Integer
            Dim ergebniss As Integer
            Dim zahl2 As Integer
            Dim ergebniss2 As Integer
            Dim bit1 As Integer
            Dim bit2 As Integer
            While SerialPort1.BytesToRead > 1
                my_text = SerialPort1.ReadLine
                empfangsbuffer.Add(my_text)
            End While
            If empfangsbuffer.Item(0).Substring(0, 2) = "t:" Then
                Eingabe_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 2))
                Eingabe_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(5, 2))
                Eingabe_Sekunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(8, 2))
                Eingabe_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(11, 4))
                Eingabe_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(16, 2)) - 1
                Eingabe_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(19, 2))
                Eingabe_Zeitzone.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(22, 1))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "v:" Then
                List_Versions_Info.Text = empfangsbuffer.Item(0)
                List_Versions_Info.Text = List_Versions_Info.Text.Replace("v:v", "Version ")
                List_Versions_Info.Text = List_Versions_Info.Text.Replace(",", " vom")
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "1:" Then
                Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))
                Eingabe_Alarm_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(4, 2))
                Eingabe_Alarm_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(7, 2))
                Eingabe_Alarm_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(10, 4))
                Eingabe_Alarm_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2)) - 1
                Eingabe_Alarm_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 2))
                Eingabe_Alarm_Wochentag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(21, 1))
                Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(23, 1))
                Eingabe_Alarm_Soundnummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "2:" Then
                Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))
                Eingabe_Alarm_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(4, 2))
                Eingabe_Alarm_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(7, 2))
                Eingabe_Alarm_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(10, 4))
                Eingabe_Alarm_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2)) - 1
                Eingabe_Alarm_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 2))
                Eingabe_Alarm_Wochentag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(21, 1))
                Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(23, 1))
                Eingabe_Alarm_Soundnummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "3:" Then
                Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))
                Eingabe_Alarm_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(4, 2))
                Eingabe_Alarm_Minuten.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(7, 2))
                Eingabe_Alarm_Jahr.Items.Item(0) = CInt(empfangsbuffer.Item(0).Substring(10, 4))
                Eingabe_Alarm_Monat.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2)) - 1
                Eingabe_Alarm_Tag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 2))
                Eingabe_Alarm_Wochentag.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(21, 1))
                Eingabe_Alarm_Wochentagsprogramm.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(23, 1))
                Eingabe_Alarm_Soundnummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                empfangsbuffer.Clear()
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "c:" Then
                empfang_configbyte1 = CInt(empfangsbuffer.Item(0).Substring(2, 3))
                empfang_configbyte2 = CInt(empfangsbuffer.Item(0).Substring(34, 2))
                MessageBox.Show(empfangsbuffer.Item(0).Substring(34, 2))
                Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(6, 2))
                Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(9, 2))
                Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(12, 2))
                Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(15, 2))
                Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(18, 3))
                Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(22, 2))
                Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(25, 2))
                Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(28, 2))
                Eingabe_Konfig_Gong_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(31, 2))
                Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(37, 2))
                Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(40, 2))
                Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(43, 2))
                Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(46, 2))
                zahl = CInt(empfang_configbyte1.ToString)
                ergebniss = zahl \ 128
                If ergebniss = 0 Then
                    Eingabe_Konfig_Sprache.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Sprache.SelectedIndex = 1
                    zahl = zahl - 128
                End If
                ergebniss = zahl \ 64
                If ergebniss = 0 Then
                    Eingabe_Konfig_Display_Invertierung.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Display_Invertierung.SelectedIndex = 1
                    zahl = zahl - 64
                End If
                ergebniss = zahl \ 32
                If ergebniss = 0 Then
                    Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex = 1
                    zahl = zahl - 32
                End If
                ergebniss = zahl \ 16
                If ergebniss = 0 Then
                    Eingabe_Konfig_DCF77_Invertierung.SelectedIndex = 0
                Else
                    Eingabe_Konfig_DCF77_Invertierung.SelectedIndex = 1
                    zahl = zahl - 16
                End If
                ergebniss = zahl \ 8
                If ergebniss = 0 Then
                    Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex = 0
                Else
                    Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex = 1
                    zahl = zahl - 8
                End If
                ergebniss = zahl \ 4
                If ergebniss = 0 Then
                    Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex = 1
                    zahl = zahl - 4
                End If
                ergebniss = zahl \ 2
                If ergebniss = 0 Then
                    Eingabe_Konfig_Nacht_Modus.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Nacht_Modus.SelectedIndex = 1
                    zahl = zahl - 2
                End If
                If zahl = 0 Then
                    Eingabe_Konfig_Sound_Ausgabe.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Sound_Ausgabe.SelectedIndex = 1
                End If
                zahl2 = empfang_configbyte2
                MessageBox.Show(zahl2.ToString)
                ergebniss2 = zahl2 \ 32
                If ergebniss2 = 0 Then
                    Eingabe_Konfig_Gong.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Gong.SelectedIndex = 1
                    zahl2 = zahl2 - 32
                End If
                ergebniss2 = zahl2 \ 16
                If ergebniss2 = 0 Then
                    Eingabe_Konfig_Geb_Namen.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Geb_Namen.SelectedIndex = 1
                    zahl2 = zahl2 - 16
                End If
                ergebniss2 = zahl2 \ 8
                If ergebniss2 = 0 Then
                    Eingabe_Konfig_Geb_Alter.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Geb_Alter.SelectedIndex = 1
                    zahl2 = zahl2 - 8
                End If
                bit2 = zahl2 \ 4
                If bit2 = 1 Then zahl2 = zahl2 - 4
                bit1 = zahl2 \ 2
                If bit1 = 1 Then zahl2 = zahl2 - 2
                If zahl2 = 0 Then
                    Eingabe_Konfig_Geb_Alarm.SelectedIndex = 0
                Else
                    Eingabe_Konfig_Geb_Alarm.SelectedIndex = 1
                End If
                If bit2 = 0 And bit1 = 0 Then Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 0
                If bit2 = 0 And bit1 = 1 Then Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 1
                If bit2 = 1 And bit1 = 0 Then Eingabe_Konfig_Geb_Sortierung.SelectedIndex = 2
    
            ElseIf empfangsbuffer.Item(0).Substring(0, 2) = "b:" Then
                Dim zeile As String
                For Each zeile In empfangsbuffer
                    Dim Arr() As String = zeile.Split({":"c, ","c, "-"c})
                    DataGridView1.Rows.Add({Arr(4), Arr(5), Arr(3), Arr(2), Arr(1)})
                Next
                DataGridView1.Show()
                DataGridView1.Update()
    
                empfangsbuffer.Clear()
            End If
            empfangsbuffer.Clear()
        End Sub
    
        Private Sub Button_Geburtstage_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Geburtstage_lesen.Click
            Try
                SerialPort1.WriteLine("b?" + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Geburtstagsdaten lesen")
            End Try
        End Sub
    
        Private Sub Button_Geburtstage_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Geburtstage_schreiben.Click
            SerialPort1.WriteLine("b:" + Eingabe_Geb_Jahr.Text.ToString + "-" + Eingabe_Geb_Monat.Text.ToString + "-" + Eingabe_Geb_Tag.Text.ToString + "," + Eingabe_Geb_Vorname.Text.ToString + "," + Eingabe_Geb_Nachname.Text.ToString + vbCrLf)
            DataGridView1.Rows.Clear()
            SerialPort1.WriteLine("b?" + vbCrLf)
        End Sub
    
        Private Sub Button_Konfig_Lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Konfig_Lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("c?" + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Konfigurationsdaten lesen")
            End Try
        End Sub
    
        Private Sub Button_Konfig_Schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Konfig_Schreiben.Click
            Dim configbyte1 As Integer
            Dim configbyte2 As Integer
            Dim Dreistelligezahl_byte1 As String
            Dim Zweistelligezahl_byte2 As String
            Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Beginn_Minute.Text)
            Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Beginn_Stunde.Text)
            Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Ende_Minute.Text)
            Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Ende_Stunde.Text)
            Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex = CInt(Eingabe_Konfig_Nacht_Helligkeit.Text)
            Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Gong_Beginn_Stunde.Text)
            Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Gong_Ende_Stunde.Text)
            Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex = CInt(Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex)
            Eingabe_Konfig_Gong_Lautstärke.SelectedIndex = CInt(Eingabe_Konfig_Gong_Lautstärke.Text)
            Eingabe_Konfig_Geb_Alter.Text = Eingabe_Konfig_Geb_Alter.Text
            Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Minute.Text)
            Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Stunde.Text)
            Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex)
            Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex = CInt(Eingabe_Konfig_Geb_Alarm_Lautstärke.Text)
            Try
                configbyte1 = Eingabe_Konfig_Sound_Ausgabe.SelectedIndex + Eingabe_Konfig_Nacht_Modus.SelectedIndex * 2 + Eingabe_Konfig_Nacht_Synchronisierung.SelectedIndex * 4 + Eingabe_Konfig_DCF77_Pull_Up.SelectedIndex * 8 + Eingabe_Konfig_DCF77_Invertierung.SelectedIndex * 16 + Eingabe_Konfig_Position_der_Analoguhr.SelectedIndex * 32 + Eingabe_Konfig_Display_Invertierung.SelectedIndex * 64 + Eingabe_Konfig_Sprache.SelectedIndex * 128
                configbyte2 = Eingabe_Konfig_Geb_Alarm.SelectedIndex + Eingabe_Konfig_Geb_Sortierung.SelectedIndex * 2 + Eingabe_Konfig_Geb_Alter.SelectedIndex * 8 + Eingabe_Konfig_Geb_Namen.SelectedIndex * 16 + Eingabe_Konfig_Gong.SelectedIndex * 32
                Dreistelligezahl_byte1 = Format(configbyte1, "000")
                Zweistelligezahl_byte2 = Format(configbyte2, "00")
                SerialPort1.WriteLine("c:" + Dreistelligezahl_byte1.ToString + "," + Eingabe_Konfig_Nacht_Beginn_Minute.Items.Item(Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Beginn_Stunde.Items.Item(Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Minute.Items.Item(Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Stunde.Items.Item(Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Helligkeit.Items.Item(Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Beginn_Stunde.Items.Item(Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Ende_Stunde.Items.Item(Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Gong_Lautstärke.Items.Item(Eingabe_Konfig_Gong_Lautstärke.SelectedIndex).ToString + "," + Zweistelligezahl_byte2.ToString + "," + Eingabe_Konfig_Geb_Alarm_Minute.Items.Item(Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Stunde.Items.Item(Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Geb_Alarm_Lautstärke.Items.Item(Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
                MessageBox.Show("c:" + Dreistelligezahl_byte1.ToString + "," + Eingabe_Konfig_Nacht_Beginn_Minute.Items.Item(Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Beginn_Stunde.Items.Item(Eingabe_Konfig_Nacht_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Minute.Items.Item(Eingabe_Konfig_Nacht_Ende_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Ende_Stunde.Items.Item(Eingabe_Konfig_Nacht_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Nacht_Helligkeit.Items.Item(Eingabe_Konfig_Nacht_Helligkeit.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Beginn_Stunde.Items.Item(Eingabe_Konfig_Gong_Beginn_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Ende_Stunde.Items.Item(Eingabe_Konfig_Gong_Ende_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Gong_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Gong_Lautstärke.Items.Item(Eingabe_Konfig_Gong_Lautstärke.SelectedIndex).ToString + "," + Zweistelligezahl_byte2.ToString + "," + Eingabe_Konfig_Geb_Alarm_Minute.Items.Item(Eingabe_Konfig_Geb_Alarm_Minute.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Stunde.Items.Item(Eingabe_Konfig_Geb_Alarm_Stunde.SelectedIndex).ToString + "," + Eingabe_Konfig_Geb_Alarm_Sound_Nummer.SelectedIndex.ToString("00") + "," + Eingabe_Konfig_Geb_Alarm_Lautstärke.Items.Item(Eingabe_Konfig_Geb_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Konfigurationsdaten schreiben")
            End Try
        End Sub
    
        Private Sub LinkLabel1_LinkClicked(sender As System.Object, e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
            System.Diagnostics.Process.Start("http://s-huehn.de/elektronik/tischuhr/tischuhr.htm")
        End Sub
    
        Private Sub Button_Alarm1_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm1_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("1?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-1 lesen")
            End Try
        End Sub
    
        Private Sub Button_Alarm2_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm2_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("2?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("CFehler beim Alarmdaten-2 lesen")
            End Try
        End Sub
    
        Private Sub Button_Alarm3_lesen_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm3_lesen.Click
            Try
                empfangsbuffer.Clear()
                SerialPort1.WriteLine("3?" + vbCrLf)
    
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-3 lesen")
            End Try
        End Sub
    
        Private Sub Button_Alarm1_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm1_schreiben.Click
            Try
                SerialPort1.WriteLine("1:" + Eingabe_Alarm_Typ.SelectedIndex.ToString + "," + Eingabe_Alarm_Stunden.Items.Item(Eingabe_Alarm_Stunden.SelectedIndex).ToString + ":" + Eingabe_Alarm_Minuten.Items.Item(Eingabe_Alarm_Minuten.SelectedIndex).ToString + "," + Eingabe_Alarm_Jahr.Items.Item(Eingabe_Alarm_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Alarm_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Alarm_Tag.Items.Item(Eingabe_Alarm_Tag.SelectedIndex).ToString + "," + Eingabe_Alarm_Wochentag.SelectedIndex.ToString + "," + Eingabe_Alarm_Wochentagsprogramm.SelectedIndex.ToString + "," + Eingabe_Alarm_Soundnummer.SelectedIndex.ToString("00") + "," + Eingabe_Alarm_Lautstärke.Items.Item(Eingabe_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-1 schreiben")
            End Try
        End Sub
    
        Private Sub Button_Alarm2_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm2_schreiben.Click
            Try
                SerialPort1.WriteLine("2:" + Eingabe_Alarm_Typ.SelectedIndex.ToString + "," + Eingabe_Alarm_Stunden.Items.Item(Eingabe_Alarm_Stunden.SelectedIndex).ToString + ":" + Eingabe_Alarm_Minuten.Items.Item(Eingabe_Alarm_Minuten.SelectedIndex).ToString + "," + Eingabe_Alarm_Jahr.Items.Item(Eingabe_Alarm_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Alarm_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Alarm_Tag.Items.Item(Eingabe_Alarm_Tag.SelectedIndex).ToString + "," + Eingabe_Alarm_Wochentag.SelectedIndex.ToString + "," + Eingabe_Alarm_Wochentagsprogramm.SelectedIndex.ToString + "," + Eingabe_Alarm_Soundnummer.SelectedIndex.ToString("00") + "," + Eingabe_Alarm_Lautstärke.Items.Item(Eingabe_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-2 schreiben")
            End Try
        End Sub
    
        Private Sub Button_Alarm3_schreiben_Click(sender As System.Object, e As System.EventArgs) Handles Button_Alarm3_schreiben.Click
            Try
     SerialPort1.WriteLine("3:" + Eingabe_Alarm_Typ.SelectedIndex.ToString + "," + Eingabe_Alarm_Stunden.Items.Item(Eingabe_Alarm_Stunden.SelectedIndex).ToString + ":" + Eingabe_Alarm_Minuten.Items.Item(Eingabe_Alarm_Minuten.SelectedIndex).ToString + "," + Eingabe_Alarm_Jahr.Items.Item(Eingabe_Alarm_Jahr.SelectedIndex).ToString + "-" + (Eingabe_Alarm_Monat.SelectedIndex + 1).ToString("00") + "-" + Eingabe_Alarm_Tag.Items.Item(Eingabe_Alarm_Tag.SelectedIndex).ToString + "," + Eingabe_Alarm_Wochentag.SelectedIndex.ToString + "," + Eingabe_Alarm_Wochentagsprogramm.SelectedIndex.ToString + "," + Eingabe_Alarm_Soundnummer.SelectedIndex.ToString("00") + "," + Eingabe_Alarm_Lautstärke.Items.Item(Eingabe_Alarm_Lautstärke.SelectedIndex).ToString + vbCrLf)
            Catch ex As Exception
                MessageBox.Show("Fehler beim Alarmdaten-3 schreiben")
            End Try
        End Sub
    
        
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            DataGridView1.Rows.Add({"Test", "1", "2", "3"})
        End Sub
    
    End Class

    als Beispiel die entsprechende Fehlermeldung, die an den Zeilen unten angeheftet sind:

    Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Eingabe_Stunden erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

    Eingabe_Stunden.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 2))


    Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))



    Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))


    Eingabe_Alarm_Typ.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(2, 1))


    Eingabe_Konfig_Nacht_Beginn_Minute.SelectedIndex = CInt(empfangsbuffer.Item(0).Substring(6, 2))

    DataGridView1.Rows.Add({Arr(4), Arr(5), Arr(3), Arr(2), Arr(1)})

    Ich hoffe es verständlicher dargestellt zu haben.

    Gruß Andreas



    • Als Antwort markiert Hicki Dienstag, 17. September 2013 09:26
    • Bearbeitet Hicki Dienstag, 17. September 2013 12:00
    Dienstag, 17. September 2013 06:43
  • Da du vermutlich den Timer als Steuerelement implementiert hast, würde mich mal brennend der Codeausschnitt interessieren, wo du System.Threading-Objekte verwendest. Vermutlich irgendwo, wo du die Ports behandelst (quasi wie ein TCP-Listener).

    Denn vermutlich dürfte von diesen ein Ereignis behandelt werden, dass auf Elemente aus deinem Mainthread (deiner Mainform) zugreift, beispielsweise dort erstellte Listboxen oder Comboboxen. Dies ist verboten, da der zweite Thread ein anderer ist als der, in dem deine Form läuft.

    Umschiffung: Arbeite mit INVOKE.


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 09:26
    Dienstag, 17. September 2013 08:36
  • Umschiffung: Arbeite mit INVOKE.


    Hi Dennis,

    könntest Du mir Bitte dabei helfen, da ich mit INVOKE noch nicht gearbeitet habe und relativ neu in der VB-Materie bin.

    Den TIMER nutze ich nur um die Systemzeit zu übernehmen.

    Gruß Andreas


    • Bearbeitet Hicki Dienstag, 17. September 2013 09:30
    • Als Antwort markiert Hicki Dienstag, 17. September 2013 12:31
    Dienstag, 17. September 2013 09:28
  • Hier nimm dies mal als grundsätzliche Vorlage. Genaueres zu den Syntax findest du natürlich in der MSDN, wenn du die Hilfe aus Visual Studio aufrufst.

    Imports System.Threading
    Public Class Form1
        Public Delegate Sub Uebergabe(ByVal S As String)
        Dim Zielform As Form1 = Me
        Dim AndererThread As Thread
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'In der Hauptform existiert irgendwo ein Label "Label1"
            AndererThread = New Thread(AddressOf ZweiterThread)
            AndererThread.Start()
        End Sub
    
        Public Sub AusgabeInLabel(ByVal S As String)
            Me.Label1.Text = S
        End Sub
    
        Public Sub ZweiterThread()
            Dim Parameter(1)
            Parameter = {"Dies ist ein Test!"}
            Zielform.Invoke(New Uebergabe(AddressOf AusgabeInLabel), Parameter)
            'was nicht gehen würde:
            'Me.Label1.Text = "Geht nicht!"
        End Sub
    End Class
    

    Hoffe das hilft. Getestet isses. ;-)


    LG, Dennis.

    EDI Consultant/Developer

    Ich nutze meistens VB6 und VS2005 bis VS2012

    Bitte die Antworten sowie weitere hilfreiche Beiträge von Mitgliedern markieren. Vielen Dank.

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 12:25
    Dienstag, 17. September 2013 12:11
  • Hi Dennis,

    vielen Dank für Deine Hilfe. Ich werde es gleich mal damit beschäftigen.

    Gruß Andreas

    • Als Antwort markiert Hicki Dienstag, 17. September 2013 12:31
    Dienstag, 17. September 2013 12:27