summaryrefslogtreecommitdiff
path: root/docs/examples
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples')
-rw-r--r--docs/examples/.cvsignore1
-rwxr-xr-xdocs/examples/pyhello.py94
-rwxr-xr-xdocs/examples/testtk.py192
-rwxr-xr-xdocs/examples/vl_isa.py140
4 files changed, 427 insertions, 0 deletions
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 <hello %s>, i reply <goodday %s>" % (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()