Seite 1 von 1
loop
Verfasst: Freitag 26. Januar 2007, 16:10
von gorba
hallo
ich habe eine mbus instanz, die am ende eines Beispiels mittels
geloopt wird. Wenn ich nun aber ein GUI haben möchte, muss ich doch auch z.B.
Code: Alles auswählen
root=Tk()
root.title("blabla")
my_class = MyClass(root)
my_class.setModemAdresses(conf)
GUIFD = my_class
root.mainloop()
aufrufen. Verträgt sich das?
Re: loop
Verfasst: Freitag 26. Januar 2007, 17:19
von Leonidas
gorba hat geschrieben:Verträgt sich das?
Sofern du mbus (
dbus
) in einem eigenen Thread startest, sollte das gehen.
Verfasst: Montag 29. Januar 2007, 11:36
von gorba
ok.
Wie muss ich das den anstellen? Mein mbus code sieht bisher so aus:
Code: Alles auswählen
from mbus import entity
from mbus import types
from mbus import guides
import logging
import notifier
def rel_one( adr, val, data = None ):
pass
def rpc_sum( adr, val, data = None ):
print "rpc_sum: incoming call from:",adr
print "building sum of:", val
res = 0
for i in val: res += i
# return None
# raise guides.RPCException( "failed" )
return guides.RPCReturn( [ res ],
descr = "the sum was calculated successfully" )
def newEntity( maddr ):
print "New Entity:", str( maddr )
def lostEntity( maddr ):
print "Lost Entity:", str( maddr )
def unknown( mmessage ):
print "received unknown message:"
print mmessage
def transporterror( e ):
print "Mbus transport error occured:", e
# logging
logging.getLogger().addHandler( logging.StreamHandler() )
#logging.getLogger().setLevel( logging.DEBUG )
# init notifier
notifier.init( notifier.GENERIC )
# create mbus entity
mbus = guides.Instance( "name:rpcsvr type:test lang:python" )
# register special callbacks (optional)
mbus.newEntityFunction = newEntity
mbus.lostEntityFunction = lostEntity
mbus.unknownMessageFunction = unknown
mbus.errorFunction = transporterror
mbus.addRPCCallback( "math.sum", rpc_sum )
mbus.addRPCCallback( "releas.one", rel_one )
try:
mbus.loop()
#except TypeError, e:
# print e
except types.MError, e:
print e.descr
print e.mmsg
except KeyboardInterrupt:
pass
Muss ich nun:
# create mbus entity
mbus = guides.Instance( "name:rpcsvr type:test lang:python" )
und
mbus.loop()
in einem separaten thread laufen lassen? Funktionieren danach meine callback funktionen noch?
Verfasst: Montag 29. Januar 2007, 12:03
von BlackJack
In `rpc_sum()` könntest Du die `sum()`-Funktion verwenden.
Verfasst: Montag 29. Januar 2007, 12:20
von gorba
danke für den tipp. Wie kann ich in Python Threads erzeugen? Und code bestimmten threads zuweisen?
ps: hatt sich erledigt. Habe die thread.start_new_thread() funktion verwendet. Thx