Ok, comments inside your code ... nephish a écrit : > Pierre Barbier de Reuille wrote: > >> nephish a écrit : >> >> >>> Pierre Barbier de Reuille wrote: >>> >>> [...] >>> ok, i am still having a little problem understanding. >>> tried it but i don't know if i have things set in the right order. >>> >>> >>> gtk.gdk.threads_init() >>> # Here initialize what you want >>> [...] >>> # Launch the Gtk loop >>> gtk.gdk.threads_enter() # Unneeded if you don't want to call GUI >>> # functions from other threads >>> gtk.main() >>> gtk.gdk.threads_leave() # Needed only with threads_enter >>> >>> at the part where you wrote # Here initialize what you want >>> [...] >>> is that where i define the function that will run the thread? >>> >>> i get the part about having the enter and leave >>> i just seem to have a hang up (so to speak) with where the function gets >>> defined. >>> do i need to build it as a class like the example in the link you sent? >>> >> >> >> Well, no you don't need to create a class. >> >> As for the place where to put your function, it's not a problem, [...] >> is the place where you will *execute* some initialization code (if >> needed) before you launch your interface. That's all (typically that's >> where you will instanciate your widgets). >> >> >> >>> thanks for your help on this >>> >>> >> >> Your welcome, >> >> Pierre >> >> >> > ok, i am still kinda stuck. > im posting what i think is necessary, because the whole thing is rather > long. > so here goes. > > #!/usr/bin/python > > import os > import time > from time import strftime > > import sys > import gtk > import pygtk > import serial > import threading > from threading import Thread > import tokenize > import gtk.glade > import weakref > import inspect > import re > > > gtk.gdk.threads_init() > > def main(self): > gtk.gdk.threads_enter() > gtk.main() > gtk.gdk.threads_leave() > > def on_StartEnginesButton_clicked(self, widget, *args): > print "on_StartEnginesButton_clicked called with self.%s" % > widget.get_name() > Input1Iter = self.Input1Buffer.get_end_iter() > Input2Iter = self.Input2Buffer.get_end_iter() > Input1Data = 'Reading Serial device ttyS14 \n' > Input2Data = 'Reading Serial device ttys15 \n' > self.Input1Buffer.insert(Input1Iter, Input1Data) > self.Input2Buffer.insert(Input2Iter, Input2Data) > time.sleep(2) > def Serial1(): print 'running serial 1' > ser = serial.Serial('/dev/ttyS15', 2400, timeout=None) > loopy = 1 > i = 1 > while loopy < 5: for x in range(5): > i = i + 1 a = > ser.read(1)#read one byte a = ord(a) # change > byte to integer > if (a < 64 )or (a > 127): > break b = ser.read(1) > b = ord(b) > if (b < 64 )or (b > 127): > break > c = ser.read(1) > c = ord(c) > if c < 92: > break > d = ser.read(1) > d = ord(d) > if d < 128: > break > Sensor_ID = (a & 63) + (b & 63) * 64 + (c & 1) * 4096 > Status = (c & 62) / 2 + (d & 63) * 32 > c = int(c) > d = int(d) > x_Now = strftime('%Y-%m-%d %H:%M:%S') > gtk.threads_enter() > Input1Data = > str(Sensor_ID)+'\t'+str(Status)+'\t--------->\t'+x_Now+'\n' > Input1Iter = self.Input1Buffer.get_end_iter() > self.Input1Buffer.insert(Input1Iter, Input1Data) > gtk.threads_leave() > f = open('/home/piv/PivData/tmp/Serial/'+str(i), 'w') > > f.write(str(Sensor_ID)+'\n'+str(c)+'\n'+str(d)+'\n'+str(Status)+'\n'+x_Now) > > > f.close() > Thread.start(Serial1())
hehehe ... got it ! Serial1() just call the function ... it will be evaluated and then the result will be sent to Thread.start ... So try: Thread.start(Serial) > > thanks, i am learning from several sources. two books from O'Reilly, and > a dozen or so websites, > not everybody does everything the same way . if something here looks > alarming, please let me know. > > thanks > -- Pierre Barbier de Reuille INRA - UMR Cirad/Inra/Cnrs/Univ.MontpellierII AMAP Botanique et Bio-informatique de l'Architecture des Plantes TA40/PSII, Boulevard de la Lironde 34398 MONTPELLIER CEDEX 5, France tel : (33) 4 67 61 65 77 fax : (33) 4 67 61 56 68 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor