Hallo Leute , ich habe mich hier angemeldet da ich mir von euch ein wenig Hilfe erhoffe.
Ich habe gerade meine Ausbildung angefangen und soll nun ein Programm schreiben , welches ein Relaismodul ansteuert und einzelne Relais anspricht ,damit diese Schalten.
Das Modul hat 5 Relais ,die wie folgt belegt sind.
Bitwert in Dezimal :
Relais 0 - 1
Relais 1 - 2
Relais 2 - 4
Relais 3 - 8
Relais 4 - 16
Bisher habe ich das Programm soweit , dass ich die Relais einzeln ansteuern kann , entweder indem ich in eine Textbox den zu schreibenden Wert eintrage , oder über einen Button ,welcher das ihm zugeteilte Relais schaltet.
Da ich aber mit meinem Code über diese Buttons immer nur 1 Relais anschalten kann , hab ich überlegt wie ich es am raffiniertesten mache ,dass ich beliebig durch erneuten Click auf einen der Buttons das jeweilige Relais dazuschalte , oder ausschalte.
Hier mal mein Code ( und bitte nicht wegen der Select - Case Aktion flamen Soll nicht schön sein , es soll erstmal funktionieren. Auf Diät kann ich den Code immernoch stellen ,wenn er voll Funktionsfähig ist. )
Spoiler anzeigen
Kann mir da jemand einen kleinen Denkanstoß verpassen in welche Richtung ich mich da bewegen sollte?
EDIT: Ich dachte da an eine Checkbox mit If-Verknüpfung.
If CheckBox.checked = true then 'Einzelaktivierung
Else
' Direkten Wert je nach Fall addieren oder subtrahieren.
Wäre das denkbar?
Ich habe gerade meine Ausbildung angefangen und soll nun ein Programm schreiben , welches ein Relaismodul ansteuert und einzelne Relais anspricht ,damit diese Schalten.
Das Modul hat 5 Relais ,die wie folgt belegt sind.
Bitwert in Dezimal :
Relais 0 - 1
Relais 1 - 2
Relais 2 - 4
Relais 3 - 8
Relais 4 - 16
Bisher habe ich das Programm soweit , dass ich die Relais einzeln ansteuern kann , entweder indem ich in eine Textbox den zu schreibenden Wert eintrage , oder über einen Button ,welcher das ihm zugeteilte Relais schaltet.
Da ich aber mit meinem Code über diese Buttons immer nur 1 Relais anschalten kann , hab ich überlegt wie ich es am raffiniertesten mache ,dass ich beliebig durch erneuten Click auf einen der Buttons das jeweilige Relais dazuschalte , oder ausschalte.
Hier mal mein Code ( und bitte nicht wegen der Select - Case Aktion flamen Soll nicht schön sein , es soll erstmal funktionieren. Auf Diät kann ich den Code immernoch stellen ,wenn er voll Funktionsfähig ist. )
VB.NET-Quellcode
- Public Class RM5Tester
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- TimerStatus.Enabled = True
- TimerRead.Enabled = True
- End Sub
- Private Sub cmd_WriteReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_WriteReg.Click
- writeReg(TB_ShortAdr.Text, TB_Reg.Text, TB_WriteReg.Text)
- End Sub
- Private Sub cmd_ReadReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_ReadReg.Click
- TB_ReadReg.Text = readReg(TB_ShortAdr.Text, TB_Reg.Text)
- End Sub
- Private Sub cmd_zyklRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_zyklRead.Click
- If TimerRead.Enabled = False Then
- cmd_zyklRead.Text = "Lesen aktiv"
- TimerRead.Enabled = True
- TB_ShortAdr.ReadOnly = True
- TB_Reg.ReadOnly = True
- Else
- TimerRead.Enabled = False
- cmd_zyklRead.Text = "Zyklisches Lesen"
- TB_ShortAdr.ReadOnly = False
- TB_Reg.ReadOnly = False
- End If
- End Sub
- Private Sub cmd_rel0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_rel0.Click
- writeReg(TB_ShortAdr.Text, 0, 1)
- End Sub
- Private Sub cmd_rel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_rel1.Click
- writeReg(TB_ShortAdr.Text, 0, 2)
- End Sub
- Private Sub cmd_rel2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_rel2.Click
- writeReg(TB_ShortAdr.Text, 0, 4)
- End Sub
- Private Sub cmd_rel3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_rel3.Click
- writeReg(TB_ShortAdr.Text, 0, 8)
- End Sub
- Private Sub cmd_rel4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_rel4.Click
- writeReg(TB_ShortAdr.Text, 0, 16)
- End Sub
- Private Sub TimerStatus_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerStatus.Tick
- Dim x As Integer
- x = readReg(TB_ShortAdr.Text, 0)
- Select Case x
- Case 1
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 2
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 3
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 4
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 5
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 6
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 7
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- Case 8
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 9
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 10
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 11
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 12
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 13
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 14
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 15
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Red
- Case 16
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 17
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 18
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 19
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 20
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 21
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 22
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 23
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Green
- Case 24
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 25
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 26
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 27
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 28
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 29
- cmd_rel1.BackColor = Color.Red
- cmd_rel0.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 30
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case 31
- cmd_rel0.BackColor = Color.Green
- cmd_rel1.BackColor = Color.Green
- cmd_rel2.BackColor = Color.Green
- cmd_rel3.BackColor = Color.Green
- cmd_rel4.BackColor = Color.Green
- Case Else
- cmd_rel0.BackColor = Color.Red
- cmd_rel1.BackColor = Color.Red
- cmd_rel2.BackColor = Color.Red
- cmd_rel3.BackColor = Color.Red
- cmd_rel4.BackColor = Color.Red
- End Select
- End Sub
- Private Sub cmd_reset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_reset.Click
- writeReg(TB_ShortAdr.Text, 0, 0)
- TimerRead.Enabled = False
- cmd_zyklRead.Text = "Zyklisches Lesen"
- TB_ShortAdr.ReadOnly = False
- TB_Reg.ReadOnly = False
- End Sub
- Private Sub TimerRead_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerRead.Tick
- TB_ReadReg.Text = readReg(TB_ShortAdr.Text, TB_Reg.Text)
- End Sub
- End Class
Kann mir da jemand einen kleinen Denkanstoß verpassen in welche Richtung ich mich da bewegen sollte?
EDIT: Ich dachte da an eine Checkbox mit If-Verknüpfung.
If CheckBox.checked = true then 'Einzelaktivierung
Else
' Direkten Wert je nach Fall addieren oder subtrahieren.
Wäre das denkbar?
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „DannyDee“ () aus folgendem Grund: Geistesblitz? =D