From a5803c3a3e49d5d10e017a70c9e94d0545d59a09 Mon Sep 17 00:00:00 2001 From: pavet Date: Thu, 9 Sep 2004 15:33:37 +0000 Subject: Initial revision --- docs/examples/.cvsignore | 1 + docs/examples/pyhello.py | 94 +++++++++++++++++++++++ docs/examples/testtk.py | 192 +++++++++++++++++++++++++++++++++++++++++++++++ docs/examples/vl_isa.py | 140 ++++++++++++++++++++++++++++++++++ 4 files changed, 427 insertions(+) create mode 100644 docs/examples/.cvsignore create mode 100755 docs/examples/pyhello.py create mode 100755 docs/examples/testtk.py create mode 100755 docs/examples/vl_isa.py (limited to 'docs/examples') diff --git a/docs/examples/.cvsignore b/docs/examples/.cvsignore new file mode 100644 index 0000000..93baa45 --- /dev/null +++ b/docs/examples/.cvsignore @@ -0,0 +1 @@ +env.sh \ No newline at end of file diff --git a/docs/examples/pyhello.py b/docs/examples/pyhello.py new file mode 100755 index 0000000..e0db498 --- /dev/null +++ b/docs/examples/pyhello.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +""" pyhello.py : very simple hello world python program using ivycpy +with a local main loop +""" +import traceback, time, string, os, sys, getopt +# importing ivycpy +from ivycpy import * + +IVYAPPNAME = "pyhello" + +def lprint(fmt,*arg): + print IVYAPPNAME + ": " + fmt % arg + +def usage(scmd): + lpathitem = string.split(scmd,'/') + fmt = '''Usage: %s [-h] [-b IVYBUS | --ivybus=IVYBUS] +where +\t-h provides the usage message; +\t-b IVYBUS | --ivybus=IVYBUS allow to provide the IVYBUS string in the form +\t adresse:port eg. 127.255.255.255:2010 +''' + print fmt % lpathitem[-1] + +def oncxproc(connected): + if connected == IvyApplicationDisconnected : + lprint( "An Ivy application was disconnected ") + else: + lprint( "An Ivy application was connected") + lprint("currents Ivy application are [%s]", IvyGetApplicationList()) + +def ondieproc(id): + lprint( "received the order to die with id = %d", id) + +def onmsgproc(*larg): + lprint( "%s received [%s] ", IVYAPPNAME , larg[0]) + +def onhello(*larg): + sreply = "goodday %s to=%s from=%s " % (larg[0], larg[1],IVYAPPNAME) + lprint( "on hello , %s reply [%s]", IVYAPPNAME, sreply) + IvySendMsg(sreply) + +def ontick(): + lprint( "%s send a tick", IVYAPPNAME) + IvySendMsg("%s_tick" % IVYAPPNAME) + +if __name__ == '__main__': + # initializing ivybus and isreadymsg + sivybus = "" + sisreadymsg = "%s is ready" % IVYAPPNAME + # getting option + try: + optlist, left_args = getopt.getopt(sys.argv[1:],'hb:', ['ivybus=']) + except getopt.GetoptError: + # print help information and exit: + usage(sys.argv[0]) + sys.exit(2) + for o, a in optlist: + if o in ("-h", "--help"): + usage(sys.argv[0]) + sys.exit() + elif o in ("-b", "--ivybus"): + sivybus= a + if sivybus != "" : + sechoivybus = sivybus + elif os.environ.has_key("IVYBUS"): + sechoivybus = os.environ["IVYBUS"] + else: + sechoivybus = "ivydefault" + lprint( "Ivy will broadcast on %s ", sechoivybus) + + # initialising the bus + IvyInit(IVYAPPNAME, # application name for Ivy + sisreadymsg , # ready message + 0, # main loop is local (ie. using IvyMainloop) + oncxproc, # handler called on connection/deconnection + ondieproc # handler called when a diemessage is received + ) + # starting the bus + # Note: env variable IVYBUS will be used if no parameter or empty string + # is given ; this is performed by IvyStart (C) + IvyStart(sivybus) + # binding to every message + IvyBindMsg(onmsgproc, "(.*)") + # binding on dedicated message : starting with "hello ..." + IvyBindMsg(onhello, "^hello=([^ ]*) from=([^ ]*)") + # creating a infinite timer + timerid = IvyTimerRepeatAfter(0, # number of time to be called + 1000, # delay in ms between calls + ontick # handler to call + ) + lprint( "IvyTimerRepeatAfter id is %d", timerid) + + lprint( "%s doing IvyMainLoop", IVYAPPNAME) + IvyMainLoop() diff --git a/docs/examples/testtk.py b/docs/examples/testtk.py new file mode 100755 index 0000000..13bb1f9 --- /dev/null +++ b/docs/examples/testtk.py @@ -0,0 +1,192 @@ +#!/usr/bin/env python +""" programme de test de ivycpy en mode boucle tk """ + +import traceback, time, os, sys, string, getopt +from Tkinter import * +from ivycpy import * + +IVYAPPNAME = "pytesttk" + +def lprint(fmt,*arg): + print IVYAPPNAME + ": " + fmt % arg + +def usage(scmd): + lpathitem = string.split(scmd,'/') + fmt = '''Usage: %s [-h] [-b IVYBUS | --ivybus=IVYBUS] +where +\t-h provides the usage message; +\t-b IVYBUS | --ivybus=IVYBUS allow to provide the IVYBUS string in the form +\t adresse:port eg. 127.255.255.255:2010 +''' + print fmt % lpathitem[-1] + +global hellobindingid +hellobindingid = -1 + +class TopLevel(Tk) : + __single = 0 + def __init__(self,appname = "TopLevel"): + if TopLevel.__single != 0 : + lprint("TopLevel is singleton") + sys.exit(1) + __single = 1 + # the object is tk_root + Tk.__init__(self) + self.appname = appname + self.title(self.appname) + # Frame contenant heure et bouton quit + self.tkFheadpanel = Frame(self) + # Label hour + self.tkLhour = Label(self.tkFheadpanel,text="hh:mm:ss") + self.tkLhour.pack(padx=4 , pady=4 , side = LEFT) + # dummy button +## self.tkBdummy = Button(self.tkFheadpanel, +## text="dummy", bg='pink') +## self.tkBdummy.pack(padx=4 , pady=4, side = RIGHT) + + # button quit + self.tkBquit = Button(self.tkFheadpanel, + text="QUIT", bg='pink', command=self.quit) + self.tkBquit.pack(padx=4 , pady=4, side = RIGHT) + self.tkFheadpanel.pack(side=TOP) + + # Frame contenant un Text et un Scroller + self.tkFreceive_msg = Frame(self) + # Text + self.tkTreceive_msg = Text(self.tkFreceive_msg, height=26, width=50) + # Scrollbar + self.tkSBreceive_scroller = Scrollbar( + self.tkFreceive_msg, + command = self.tkTreceive_msg.yview) + self.tkTreceive_msg.configure( + yscrollcommand = self.tkSBreceive_scroller.set) + + self.tkTreceive_msg.pack(padx=4 , pady=4, + side=LEFT, fill = BOTH, expand = YES) + self.tkSBreceive_scroller.pack(side=RIGHT, fill = Y) + self.tkFreceive_msg.pack(side=BOTTOM, fill = BOTH, expand = YES) + + def add_one_msg(self, smsg) : + self.tkTreceive_msg.insert(END, "%s\n" % smsg ) + + def quit(self): + # cleanup action before detroying tk_root + lprint("doing IvyStop") + IvyStop() + lprint("doing destroy" ) + self.destroy() + lprint("after destroy") + lprint("done.") + + def ontick(self): + lprint("on tick method") + IvySendMsg("testtk_tick") + self.after(1000,self.ontick) + +def oncxproc(connected): + if connected == IvyApplicationDisconnected : + lprint("an IvyApplication was Disconnected") + else: + lprint("an IvyApplication was Connected") + +def ondieproc(id): + lprint("On die proc id=%d", id ) + +def onhelloproc(*larg): + sargs = string.join(larg,":") + sresult = "On , i reply " % (larg[0], larg[0]) + mytoplevel.add_one_msg(sresult) + # lprint("[%s]" % sresult + IvySendMsg("goodday %s" % (larg[0])) + +def onmsgproc(*larg): + sresult = "On msg proc : arg number = %d , arglist = %s" % \ + (len(larg), string.join(larg,":")) + mytoplevel.add_one_msg(sresult) + + # abonnement selectif + +def oncmd(*larg): + global hellobindingid + lprint("hb =%d", hellobindingid) + lprint("cmd [%s] larg0=%s", string.join(larg,":"), larg[0]) + if larg[0] == 'bindhello' : + if hellobindingid == -1 : + hellobindingid = IvyBindMsg(onhelloproc,"^hello (.*)") + lprint("binding hello id = %d ", hellobindingid) + elif larg[0] == 'unbindhello' : + if hellobindingid != -1 : + lprint("unbinding hello id = %d ", hellobindingid) + IvyUnBindMsg(hellobindingid) + hellobindingid = -1 + elif larg[0] == 'getlist' : + sapplist = IvyGetApplicationList() + lprint("app list return %s" , sapplist) + for sapp in string.split(sapplist): + lprint("app name [%s] host [%s] ", + sapp, IvyGetApplicationHost(IvyGetApplication(sapp))) + lprint(IvyGetApplication(sapp)) + elif larg[0] == 'senddie' : + sapplist = IvyGetApplicationList() + lprint("app list return %s", sapplist) + for sapp in string.split(sapplist): + lprint("sending die to %s ", sapp) + IvySendDieMsg(IvyGetApplication(sapp)) + elif larg[0] == 'senderror' : + sapplist = IvyGetApplicationList() + lprint("app list return %s" , sapplist) + for sapp in string.split(sapplist): + lprint("sending error to %s " , sapp) + IvySendError(IvyGetApplication(sapp),0, + "error msg to %s from %s" % (sapp,IVYAPPNAME)) + # print "[%s]" % sresult + # IvySendMsg("a recu et renvoi [%s]" % sargs) + +def ontick(): + lprint("ontick") + IvySendMsg("testtk_tick") + +if __name__ == '__main__': + # initializing ivybus and isreadymsg + sivybus = "" + sisreadymsg = "[%s is ready]" % IVYAPPNAME + # getting option + try: + optlist, left_args = getopt.getopt(sys.argv[1:],'hb:', ['ivybus=']) + except getopt.GetoptError: + # print help information and exit: + usage(sys.argv[0]) + sys.exit(2) + for o, a in optlist: + if o in ("-h", "--help"): + usage(sys.argv[0]) + sys.exit() + elif o in ("-b", "--ivybus"): + sivybus= a + if sivybus != "" : + sechoivybus = sivybus + elif os.environ.has_key("IVYBUS"): + sechoivybus = os.environ["IVYBUS"] + else: + sechoivybus = "ivydefault" + lprint("Ivy will broadcast on %s " , sechoivybus) + + mytoplevel = TopLevel("%s top window" % IVYAPPNAME) + # myinterface = SocketInt(mytoplevel, delay = 2.0, iter = 5) + sisreadymsg = "%s is ready" % IVYAPPNAME + lprint("IvyApplicationConnected is %s " , IvyApplicationConnected) + lprint("IvyApplicationDisconnected is %s " , IvyApplicationDisconnected) + IvyInit(IVYAPPNAME, sisreadymsg, 1 , oncxproc, ondieproc ) + IvyStart(sivybus) + bindingid = IvyBindMsg(onmsgproc, "([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (.*)") # "(.*)") + # lprint("IvyBindMsg retourne %d" , bindingid ) + bindingid = IvyBindMsg(oncmd, "^\.(.*)") # "(.*)") + # lprint("IvyBindMsg retourne %d", bindingid) + + # timerid = IvyTimerRepeatAfter(10,1000,ontick) + # print("IvyTimerRepeatAfter retourne %d" % timerid + mytoplevel.after(1000,mytoplevel.ontick) + + lprint("tk mainloop") + mytoplevel.mainloop() + diff --git a/docs/examples/vl_isa.py b/docs/examples/vl_isa.py new file mode 100755 index 0000000..89c70fa --- /dev/null +++ b/docs/examples/vl_isa.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python +""" very light isa hmi mockup +prog de test infrastructure ivy + mini ihm type isa """ + +import traceback, time, os, sys, string, getopt +from Tkinter import * +from ivycpy import * + +APPNAME = "vl_isa" + +def lprint(fmt,*arg): + print APPNAME + ": " + fmt % arg + +def usage(scmd): + lpathitem = string.split(scmd,'/') + fmt = '''Usage: %s [-h] [-b IVYBUS | --ivybus=IVYBUS] [-n APPNAME | --name=APPNAME] +where +\t-h provides the usage message; +\t-n APPNAME | --name=APPNAME +\t-b IVYBUS | --ivybus=IVYBUS allow to provide the IVYBUS string in the form +\t adresse:port eg. 127.255.255.255:2010 +''' + print fmt % lpathitem[-1] + +def oncxproc(connected): + if connected == IvyApplicationDisconnected : + lprint("an IvyApplication was Disconnected") + else: + lprint("an IvyApplication was Connected") + +def ondieproc(id): + lprint("we ask me to die with id [%d]", id ) + +class TopLevel(Tk) : + __single = 0 + def __init__(self,appname = "TopLevel"): + if TopLevel.__single != 0 : + lprint("TopLevel is singleton") + sys.exit(1) + __single = 1 + # the object is tk_root + Tk.__init__(self) + self.appname = appname + self.title(self.appname) + # Frame contenant heure et bouton quit + self.tkFheadpanel = Frame(self) + # Label hour + self.tkLhour = Label(self.tkFheadpanel,text="hh:mm:ss") + self.tkLhour.pack(padx=4 , pady=4 , side = LEFT) + # dummy button +## self.tkBdummy = Button(self.tkFheadpanel, +## text="dummy", bg='pink') +## self.tkBdummy.pack(padx=4 , pady=4, side = RIGHT) + + # button quit + self.tkBquit = Button(self.tkFheadpanel, + text="QUIT", bg='pink', command=self.quit) + self.tkBquit.pack(padx=4 , pady=4, side = RIGHT) + self.tkFheadpanel.pack(side=TOP) + + # Frame contenant un Label, un Text et un Scroller + self.tkFreceive_msg = Frame(self) + # label + self.tkLreceive_msg = Label(self.tkFreceive_msg, text="flyingonthebus") + self.tkLreceive_msg.pack(padx=4 , pady=4, + side=TOP, fill = BOTH, expand = YES) + # Text + self.tkTreceive_msg = Text(self.tkFreceive_msg, height=26, width=50) + # Scrollbar + self.tkSBreceive_scroller = Scrollbar( + self.tkFreceive_msg, + command = self.tkTreceive_msg.yview) + self.tkTreceive_msg.configure( + yscrollcommand = self.tkSBreceive_scroller.set) + + self.tkTreceive_msg.pack(padx=4 , pady=4, + side=LEFT, fill = BOTH, expand = YES) + self.tkSBreceive_scroller.pack(side=RIGHT, fill = Y) + self.tkFreceive_msg.pack(side=BOTTOM, fill = BOTH, expand = YES) + + def add_one_msg(self, smsg) : + self.tkTreceive_msg.insert(END, "%s\n" % smsg ) + + def onmsgproc(self,*arg) : + self.add_one_msg(string.join(arg,"")) + + def quit(self): + # cleanup action before detroying tk_root + lprint("doing IvyStop") + IvyStop() + lprint("doing destroy" ) + self.destroy() + lprint("after destroy") + lprint("done.") + +## def ontick(self): +## lprint("on tick method") +## IvySendMsg("testtk_tick") +## self.after(1000,self.ontick) + +# main prog +if __name__ == '__main__': + # setting some main variable + sivybus = "" + + # getting option + try: + optlist, left_args = getopt.getopt(sys.argv[1:],'hb:n:', ['ivybus=','name']) + except getopt.GetoptError: + # print help information and exit: + usage(sys.argv[0]) + sys.exit(2) + for o, a in optlist: + if o in ("-h", "--help"): + usage(sys.argv[0]) + sys.exit() + elif o in ("-b", "--ivybus"): + sivybus = a + elif o in ("-n","--name"): + APPNAME = a + if sivybus != "" : + sechoivybus = sivybus + elif os.environ.has_key("IVYBUS"): + sechoivybus = os.environ["IVYBUS"] + else: + sechoivybus = "ivydefault" + lprint("Ivy will broadcast on %s " , sechoivybus) + + # initializing ivy : isreadymsg + sisreadymsg = "[%s is ready]" % APPNAME + IvyInit(APPNAME, sisreadymsg, 1 , oncxproc, ondieproc ) + IvyStart(sivybus) + + # initializing top hmi part + mytoplevel = TopLevel("%s top window" % APPNAME) + + # doing suited binding + IvyBindMsg(mytoplevel.onmsgproc , "(.*)") + + mytoplevel.mainloop() -- cgit v1.1