|
-
Aug 21st, 2012, 10:44 PM
#1
Thread Starter
Junior Member
Timer program in the works...need help
Hey all,
I'm wanting to create a timer to start/stop an event at a selected time.
I have most of the code already written but I'm having trouble with the above.
My timer has 8 individual channels to control 8 devices (lights, sprinklers, etc.).
This is my form to give you a better idea:
http://i81.photobucket.com/albums/j2...face/Timer.png
I'm using a timer tick but I'm stuck. My code has taken an ugly turn as I'm using WAY too many If, then statements as you can see.
Code:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Clock.Text = TimeOfDay
Me.Date1.Text = Date.Today.ToString("dddd")
If cmb1day.Text = "Never" Then
Ch1OFF.Enabled = True
GoTo skip1
Else
If btnConnect.Enabled = True Then
Exit Sub
Else
Ch1OFF.Enabled = False
If cmb1day.Text = "Everyday" Then
Dim TimON1 As Date
Dim TimOFF1 As Date
Dim AMPMON1 As String
Dim AMPMOFF1 As String
If ON1AM.Checked = True Then
AMPMON1 = "AM"
Else
AMPMON1 = "PM"
End If
If OFF1AM.Checked = True Then
AMPMOFF1 = "AM"
Else
AMPMOFF1 = "PM"
End If
If ON1AM.Checked = True AndAlso OFF1AM.Checked = True Then
If cmbH1ON.Text > cmbH1OFF.Text Then
If TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
Else
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
Else
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
ElseIf ON1AM.Checked = True AndAlso OFF1PM.Checked = True Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
ElseIf ON1PM.Checked = True AndAlso OFF1PM.Checked = True Then
If cmbH1ON.Text > cmbH1OFF.Text Then
If TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
Else
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
Else
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
If ON1PM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
ElseIf ON1PM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("AM") Then
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
If TimON1 < Me.Clock.Text AndAlso TimOFF1 > Me.Clock.Text Then
SerialPort.Write("1")
Ch1OFF.Text = "Ch 1 On"
ElseIf TimOFF1 <> Me.Clock.Text Then
SerialPort.Write("Q")
Ch1OFF.Text = "Ch 1 Off"
End If
End If
If cmb1day.Text = "Sat and Sun" Then
Dim TimON1 As Date
Dim TimOFF1 As Date
Dim AMPMON1 As String
Dim AMPMOFF1 As String
If ON1AM.Checked = True Then
AMPMON1 = "AM"
Else
AMPMON1 = "PM"
End If
If OFF1AM.Checked = True Then
AMPMOFF1 = "AM"
Else
AMPMOFF1 = "PM"
End If
If ON1AM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("AM") Then
If Date.Now.DayOfWeek.ToString = "Saturday" OrElse Date.Now.DayOfWeek.ToString = "Sunday" Then
If cmbH1ON.Text > cmbH1OFF.Text Then
If TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
Else
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
Else
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
ElseIf ON1AM.Checked = True AndAlso OFF1PM.Checked = True Then
If Date.Now.DayOfWeek.ToString = "Saturday" OrElse Date.Now.DayOfWeek.ToString = "Sunday" Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
ElseIf ON1PM.Checked = True AndAlso OFF1PM.Checked = True Then
If Date.Now.DayOfWeek.ToString = "Saturday" OrElse Date.Now.DayOfWeek.ToString = "Sunday" Then
If cmbH1ON.Text > cmbH1OFF.Text Then
If TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
Else
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
Else
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
End If
If ON1PM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("PM") Then
If Date.Now.DayOfWeek.ToString = "Saturday" OrElse Date.Now.DayOfWeek.ToString = "Sunday" Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue("11:59:59 PM")
End If
End If
If ON1PM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("AM") Then
If Date.Now.DayOfWeek.ToString = "Sunday" OrElse Date.Now.DayOfWeek.ToString = "Monday" Then
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
If TimON1 < Me.Clock.Text AndAlso TimOFF1 > Me.Clock.Text Then
SerialPort.Write("1")
Ch1OFF.Text = "Ch 1 On"
ElseIf TimOFF1 <> Me.Clock.Text Then
SerialPort.Write("Q")
Ch1OFF.Text = "Ch 1 Off"
End If
End If
If cmb1day.Text = "M-F" Then
Dim TimON1 As Date
Dim TimOFF1 As Date
Dim AMPMON1 As String
Dim AMPMOFF1 As String
If ON1AM.Checked = True Then
AMPMON1 = "AM"
Else
AMPMON1 = "PM"
End If
If OFF1AM.Checked = True Then
AMPMOFF1 = "AM"
Else
AMPMOFF1 = "PM"
End If
If ON1AM.Checked = True AndAlso OFF1AM.Checked = True Then
If Date.Now.DayOfWeek.ToString = "Monday" OrElse Date.Now.DayOfWeek.ToString = "Tuesday" OrElse Date.Now.DayOfWeek.ToString = "Wednesday" OrElse Date.Now.DayOfWeek.ToString = "Thursday" OrElse Date.Now.DayOfWeek.ToString = "Friday" AndAlso TimeOfDay.ToString.Contains("AM") Then
If cmbH1ON.Text > cmbH1OFF.Text Then
If TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
Else
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
Else
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
ElseIf ON1AM.Checked = True AndAlso OFF1PM.Checked = True Then
If Date.Now.DayOfWeek.ToString = "Monday" OrElse Date.Now.DayOfWeek.ToString = "Tuesday" OrElse Date.Now.DayOfWeek.ToString = "Wednesday" OrElse Date.Now.DayOfWeek.ToString = "Thursday" OrElse Date.Now.DayOfWeek.ToString = "Friday" Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
ElseIf ON1PM.Checked = True AndAlso OFF1PM.Checked = True Then
If Date.Now.DayOfWeek.ToString = "Monday" OrElse Date.Now.DayOfWeek.ToString = "Tuesday" OrElse Date.Now.DayOfWeek.ToString = "Wednesday" OrElse Date.Now.DayOfWeek.ToString = "Thursday" OrElse Date.Now.DayOfWeek.ToString = "Friday" Then
If cmbH1ON.Text > cmbH1OFF.Text Then
If TimeOfDay.ToString.Contains("PM") Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
Else
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
Else
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
End If
If ON1PM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("PM") Then
If Date.Now.DayOfWeek.ToString = "Monday" OrElse Date.Now.DayOfWeek.ToString = "Tuesday" OrElse Date.Now.DayOfWeek.ToString = "Wednesday" OrElse Date.Now.DayOfWeek.ToString = "Thursday" OrElse Date.Now.DayOfWeek.ToString = "Friday" Then
TimON1 = TimeValue(cmbH1ON.Text & ":" & cmbM1ON.Text & ":00" & AMPMON1) : TimOFF1 = ("11:59:59 PM")
End If
End If
If ON1PM.Checked = True AndAlso OFF1AM.Checked = True AndAlso TimeOfDay.ToString.Contains("AM") Then
If Date.Now.DayOfWeek.ToString = "Tuesday" OrElse Date.Now.DayOfWeek.ToString = "Wednesday" OrElse Date.Now.DayOfWeek.ToString = "Thursday" OrElse Date.Now.DayOfWeek.ToString = "Friday" OrElse Date.Now.DayOfWeek.ToString = "Saturday" Then
TimON1 = ("12:00:00 AM") : TimOFF1 = TimeValue(cmbH1OFF.Text & ":" & cmbM1OFF.Text & ":00" & AMPMOFF1)
End If
End If
If TimON1 < Me.Clock.Text AndAlso TimOFF1 > Me.Clock.Text Then
SerialPort.Write("1")
Ch1OFF.Text = "Ch 1 On"
ElseIf TimOFF1 <> Me.Clock.Text Then
SerialPort.Write("Q")
Ch1OFF.Text = "Ch 1 Off"
End If
End If
' the rest of the days Monday - Sunday something like the above
skip1:
' Repeated code for each channel
skip2:
.....
skip8:
Can someone help me simplify and keep the rest of my code able to cope?
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|