problem in event handling on change of variable value.

sirjee hitechpundir at gmail.com
Mon Aug 3 13:12:15 CEST 2009


On Aug 1, 2:22 pm, sirjee <hitechpun... at gmail.com> wrote:
> hello;
>
> i m facing a problem in handling events on change of value of
> environment variable in a toolCANoe.
>
> class CANoeEvents:
>     def OnChange(self,value):
>         print "value of environment variable has changed"
>     def OnOpen(self,App):
>         print "opening Application"
>
> App_Event = DispatchWithEvents('CANoe.Application',CANoeEvents)
> time.sleep(2)
> App_Event.Open("C:\projectConfig.cfg")  # printd "opening Application"
> and event handled properly.
> .......(now a code file runs in thecanoein which value of
> environment variable called dummy is changed during execution. Just
> like OnOpen; OnChange is defined in specification which should be
> called on change of environment variable.But it is not happening.)
> while (<some condition>):
>                 myenvVar = App_Event.Environment.GetVariable("dummy")
>
> The VB does it very easily and defines a subroutine called :
> Sub myenvVar _OnChange(value)
>    print "value of environment variable has changed"
> End Sub
> //////////////////////////////////////////////////however the
> alternative for subroutine for OnOpen in VB (defined below) works fine
> as shown above in python.
> Sub AppEvent_OnOpen(App)
>         print "opening Application"
> End Sub
>
> for VB; all this stuff is cake work.... object_eventname subroutine
> and done.....what in python?

hi all;

strange !!!!
i got answer to the problem posted by me only.
now I have very good control of CANoe tool from python....
if anybody faces any problem wrt automation of CANoe tool using
python; do contact me.
here actual problem lied in analysing and implementing com heirarchy.
( which is really bit cumbersome)
onChange event is associated with App_Event.Environment.GetVariable
("dummy") object.
So we need to associate separate class with this object and then write
onChange function:


class evtClass:
    def __init__(self):
        print "initializing event class"
    def OnChange(self,value):
            print "value of environment variable changing"

            print "changed value of environment variable is"
            print value


see = App_Event.Environment.GetVariable("dummy")
see_temp=DispatchWithEvents(see,evtClass)

this will solve problem.
So we need to create separate classes for events associated with
separate objects.

regards
sirjee



More information about the Python-list mailing list