|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Creating events in VB.nethow to get my own event working properly. I created my ThresholdNormal class and put a condition in the sub CheckThreshold. It then raises the ThresholdOK event. My event handler Private Sub Threshold_Normal should then run the EnterState7() sub. But the event is never raised and judging from the fact that the label4 test I included doesn't update the CheckThreshold() sub is never called. And I've no idea why. Any help appreciated (sorry about the reams of code). Code: Form1: Private StateVariableA As Integer 'A Main State Private StateVariableB As Integer 'B Alarm substate Private StateVariableBHistory As Integer 'B alarm substate history Protected Reading As Integer 'getReading variable Protected LowerThreshold = 60 'thresholds Protected UpperThreshold = 80 Protected count = -1 'debug Private WithEvents Threshold As ThresholdNormal Private Sub EnterState1() 'This is the Bed Empty (Default) State 'No patient in bed StateVariableA = 1 StateAlbl.Text = StateVariableA ' HeartRatelbl.Text = "Bed empty" DataLogger.SetThresholds(LowerThreshold, UpperThreshold) DataLogger.FastSpeed() End Sub Private Sub EnterState2() 'This is the Disable Alarm State 'Patient in bed StateVariableB = 2 StateBlbl.Text = StateVariableB ' DataLogger.SetDisableAlarm(True) AlarmEnablebtn.Text = "Enable Alarm" End Sub Private Sub EnterState3() 'This is the Update Heart Rate State 'Responds to getReading event StateVariableA = 3 StateAlbl.Text = StateVariableA ' Reading = DataLogger.GetReading ' If Reading <= UpperThreshold And Reading >= LowerThreshold Then 'Alarmlbl.Text = "Should be normal" 'End If HeartRatelbl.Text = Reading ' count = count + 1 countlbl.Text = count Threshold.CheckThreshold() End Sub Private Sub EnterState4() 'This is the Alarm Enabled State 'Responds to Alarm Enabled event StateVariableB = 4 StateBlbl.Text = StateVariableB ' DataLogger.SetDisableAlarm(False) AlarmEnablebtn.Text = "Disable Alarm" End Sub Private Sub EnterState5() 'This is the Alarm Substate 'This deals with State 5B StateVariableA = 5 StateAlbl.Text = StateVariableA EnterState2() End Sub Private Sub EnterState6() 'This is the Alarm activated state ' StateVariableA = 6 StateAlbl.Text = StateVariableA Alarmlbl.Text = "Threshold Exceeded" End Sub Private Sub EnterState7() 'This is the alarm reset (de-activate) state ' StateVariableA = 7 StateAlbl.Text = StateVariableA Alarmlbl.Text = "Threshold Normal" 'reset alarm End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Form load event Threshold = New ThresholdNormal EnterState1() End Sub Private Sub Patient_Bed_toggle(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PatientInbtn.Click If StateVariableA = 1 Then EnterState5() End If End Sub Private Sub Reading_Ready_get(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataLogger.NextReadingReady 'NextReadingReady() event handler If StateVariableA = 5 Then EnterState3() ElseIf StateVariableA = 3 Then EnterState3() ElseIf StateVariableA = 6 Then EnterState3() ElseIf StateVariableA = 7 Then EnterState3() End If End Sub Private Sub Alarm_Toggle_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AlarmEnablebtn.Click 'Alarm Enabled/Disabled event handler If StateVariableB = 2 Then StateVariableBHistory = 2 StateBHlbl.Text = StateVariableBHistory EnterState4() ElseIf StateVariableB = 4 Then StateVariableBHistory = 4 StateBHlbl.Text = StateVariableBHistory EnterState2() ElseIf StateVariableA = 6 Then EnterState5() ElseIf StateVariableA = 7 Then EnterState5() ElseIf StateVariableA = 3 Then If StateVariableBHistory = 2 Then EnterState2() ElseIf StateVariableBHistory = 4 Then EnterState4() End If End If End Sub Private Sub Upper_Threshold_exceed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataLogger.UpperThresholdExceeded 'Upper threshold exceeded event handler If StateVariableA = 7 Then EnterState6() ElseIf StateVariableB = 4 Then EnterState6() ElseIf StateVariableA = 3 Then EnterState6() End If End Sub Private Sub Lower_Threshold_exceed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataLogger.LowerThresholdExceeded 'Lower threshold exceeded event handler If StateVariableA = 7 Then EnterState6() ElseIf StateVariableB = 4 Then EnterState6() ElseIf StateVariableA = 3 Then EnterState6() End If End Sub Private Sub Threshold_Normal() Handles Threshold.ThresholdOK If StateVariableA = 6 Then EnterState7() If StateVariableA = 3 Then EnterState7() End If End If End Sub End Class Class ThresholdNormal Inherits Screen1 Public Event ThresholdOK() Public Sub CheckThreshold() If Reading <= UpperThreshold And Reading >= LowerThreshold Then RaiseEvent ThresholdOK() End If Label4.Text = Reading Label4.Text = "hello" End Sub End Class -- Jeffrey Spoon The class that generates the events is based upon inheriting Screen1, but
it's not clear from the listing what this is, if it over rides anything etc. Can I suggest you stick a break points in on the line Public Sub CheckThreshold() and add a simple try catch block. Then step through the code to see if it gets as far as RaiseEvent ThresholdOK() Show quoteHide quote "Jeffrey Spoon" <JeffreySp***@hotmail.com> wrote in message news:TgCQZ8BrkpWCFwSL@nowhere.nnn... > > > Hello. I have been working on the program below. However I'm not sure > how to get my own event working properly. I created my ThresholdNormal > class and put a condition in the sub CheckThreshold. It then raises the > ThresholdOK event. My event handler Private Sub Threshold_Normal should > then run the EnterState7() sub. But the event is never raised and > judging from the fact that the label4 test I included doesn't update the > CheckThreshold() sub is never called. And I've no idea why. Any help > appreciated (sorry about the reams of code). > > Code: > > Form1: > > Private StateVariableA As Integer 'A Main State > Private StateVariableB As Integer 'B Alarm substate > Private StateVariableBHistory As Integer 'B alarm substate > history > Protected Reading As Integer 'getReading variable > Protected LowerThreshold = 60 'thresholds > Protected UpperThreshold = 80 > Protected count = -1 'debug > Private WithEvents Threshold As ThresholdNormal > > > Private Sub EnterState1() > 'This is the Bed Empty (Default) State > 'No patient in bed > StateVariableA = 1 > StateAlbl.Text = StateVariableA > ' > HeartRatelbl.Text = "Bed empty" > DataLogger.SetThresholds(LowerThreshold, UpperThreshold) > DataLogger.FastSpeed() > End Sub > > Private Sub EnterState2() > 'This is the Disable Alarm State > 'Patient in bed > StateVariableB = 2 > StateBlbl.Text = StateVariableB > ' > DataLogger.SetDisableAlarm(True) > AlarmEnablebtn.Text = "Enable Alarm" > End Sub > > Private Sub EnterState3() > 'This is the Update Heart Rate State > 'Responds to getReading event > StateVariableA = 3 > StateAlbl.Text = StateVariableA > ' > Reading = DataLogger.GetReading > ' If Reading <= UpperThreshold And Reading >= LowerThreshold > Then > 'Alarmlbl.Text = "Should be normal" > 'End If > HeartRatelbl.Text = Reading > ' > count = count + 1 > countlbl.Text = count > Threshold.CheckThreshold() > > End Sub > > Private Sub EnterState4() > 'This is the Alarm Enabled State > 'Responds to Alarm Enabled event > StateVariableB = 4 > StateBlbl.Text = StateVariableB > ' > DataLogger.SetDisableAlarm(False) > AlarmEnablebtn.Text = "Disable Alarm" > End Sub > > Private Sub EnterState5() > 'This is the Alarm Substate > 'This deals with State 5B > StateVariableA = 5 > StateAlbl.Text = StateVariableA > EnterState2() > End Sub > > Private Sub EnterState6() > 'This is the Alarm activated state > ' > StateVariableA = 6 > StateAlbl.Text = StateVariableA > Alarmlbl.Text = "Threshold Exceeded" > End Sub > > Private Sub EnterState7() > 'This is the alarm reset (de-activate) state > ' > StateVariableA = 7 > StateAlbl.Text = StateVariableA > Alarmlbl.Text = "Threshold Normal" 'reset alarm > End Sub > > Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles MyBase.Load > 'Form load event > Threshold = New ThresholdNormal > EnterState1() > End Sub > > Private Sub Patient_Bed_toggle(ByVal sender As System.Object, ByVal > e As System.EventArgs) Handles PatientInbtn.Click > > If StateVariableA = 1 Then > EnterState5() > End If > > End Sub > > > > Private Sub Reading_Ready_get(ByVal sender As System.Object, ByVal e > As System.EventArgs) Handles DataLogger.NextReadingReady > 'NextReadingReady() event handler > > If StateVariableA = 5 Then > EnterState3() > ElseIf StateVariableA = 3 Then > EnterState3() > ElseIf StateVariableA = 6 Then > EnterState3() > ElseIf StateVariableA = 7 Then > EnterState3() > End If > End Sub > > Private Sub Alarm_Toggle_click(ByVal sender As System.Object, ByVal > e As System.EventArgs) Handles AlarmEnablebtn.Click > 'Alarm Enabled/Disabled event handler > > If StateVariableB = 2 Then > StateVariableBHistory = 2 > StateBHlbl.Text = StateVariableBHistory > EnterState4() > ElseIf StateVariableB = 4 Then > StateVariableBHistory = 4 > StateBHlbl.Text = StateVariableBHistory > EnterState2() > ElseIf StateVariableA = 6 Then > EnterState5() > ElseIf StateVariableA = 7 Then > EnterState5() > ElseIf StateVariableA = 3 Then > If StateVariableBHistory = 2 Then > EnterState2() > ElseIf StateVariableBHistory = 4 Then > EnterState4() > End If > End If > End Sub > > Private Sub Upper_Threshold_exceed(ByVal sender As System.Object, > ByVal e As System.EventArgs) Handles DataLogger.UpperThresholdExceeded > 'Upper threshold exceeded event handler > > If StateVariableA = 7 Then > EnterState6() > ElseIf StateVariableB = 4 Then > EnterState6() > ElseIf StateVariableA = 3 Then > EnterState6() > End If > > End Sub > > Private Sub Lower_Threshold_exceed(ByVal sender As System.Object, > ByVal e As System.EventArgs) Handles DataLogger.LowerThresholdExceeded > 'Lower threshold exceeded event handler > > If StateVariableA = 7 Then > EnterState6() > ElseIf StateVariableB = 4 Then > EnterState6() > ElseIf StateVariableA = 3 Then > EnterState6() > End If > > End Sub > > Private Sub Threshold_Normal() Handles Threshold.ThresholdOK > If StateVariableA = 6 Then > EnterState7() > If StateVariableA = 3 Then > EnterState7() > End If > End If > End Sub > > End Class > > Class ThresholdNormal > Inherits Screen1 > > Public Event ThresholdOK() > > Public Sub CheckThreshold() > If Reading <= UpperThreshold And Reading >= LowerThreshold Then > RaiseEvent ThresholdOK() > > End If > Label4.Text = Reading > Label4.Text = "hello" > End Sub > > End Class > > > -- > Jeffrey Spoon > In message <e4x6e.17962$il.12***@newsfe5-win.ntli.net>, JohnFol
<OutlookExpr***@WibbleObbble.Com> writes >The class that generates the events is based upon inheriting Screen1, but Sorry, I chopped off the very top of the code:>it's not clear from the listing what this is, if it over rides anything etc. > >Can I suggest you stick a break points in on the line Public Sub >CheckThreshold() >and add a simple try catch block. Then step through the code to see if it >gets as far as RaiseEvent ThresholdOK() > Public Class Screen1 Inherits System.Windows.Forms.Form It's just a default form, but I have another form which is empty at the moment, which will be used eventually. All I have done for now is made Screen1 the start-up object in project properties. I will try what you suggested also. Thanks for the response. -- Jeffrey Spoon In message <e4x6e.17962$il.12***@newsfe5-win.ntli.net>, JohnFol
<OutlookExpr***@WibbleObbble.Com> writes >The class that generates the events is based upon inheriting Screen1, but Ok I've done this. It is calling CheckThreshold each time but the event >it's not clear from the listing what this is, if it over rides anything etc. > >Can I suggest you stick a break points in on the line Public Sub >CheckThreshold() >and add a simple try catch block. Then step through the code to see if it >gets as far as RaiseEvent ThresholdOK() > is never raised because the Reading value is always 0 for some reason. I have inherited Screen1 (where Reading resides) and it is protected so I thought that would've worked. Also, the reading is displayed properly on the form. Something else I don't understand is that the label4 variable is being updated according to the debugger but it is not being updated on the actual form. -- Jeffrey Spoon In message <e4x6e.17962$il.12***@newsfe5-win.ntli.net>, JohnFol
<OutlookExpr***@WibbleObbble.Com> writes >The class that generates the events is based upon inheriting Screen1, but Ok, it must have been since Reading was updated within a sub procedure >it's not clear from the listing what this is, if it over rides anything etc. > >Can I suggest you stick a break points in on the line Public Sub >CheckThreshold() >and add a simple try catch block. Then step through the code to see if it >gets as far as RaiseEvent ThresholdOK() > when the ThresholdNormal class was inheriting the attributes it was just using the default declaration as it wouldn't see the local assignment. So now I pass the reading as a parameter to the CheckThreshold(Reading) sub and it worked fine. The only thing I'm not sure about is why label4 is not updated. I assume this is because it is not set on the form Screen1 but in a separate class. Is some sort of access required in the properties somewhere or should it just be done within the associated form? Thanks John (I'll probably be back here shortly with more problems, you'll be happy to know...) -- Jeffrey Spoon
Dragging a mail from Outlook/Outlook Express in to a .NET VB app
File pointer to be positioned at the last occurance of a keyword read app.config How to back up an object... Newbie VB Question MDIChild form controls: how to pass information between them? Unexpected behaviour of MyClass (please ignore 1st post) Schedule task in VB.NET Can't set focus to controls on TabPage Why use Dim outside of sub? |
|||||||||||||||||||||||