Benutzer mit den meisten Antworten
Ungültiger threadübergreifender Vorgang

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
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
-
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
-
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
-
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
-
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
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
-
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
-
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
-
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
-
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