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()) 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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor