Vindhyachal Takniki
unread,Nov 1, 2015, 9:06:39 AM11/1/15You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
I have made a python code & using multithreading in it. this is very basic code, not using queues & other stuff.
1. Task is to create two independent Tkinter windows
2. Code has four files:
main.py:creates individual thread
analog.py: generate random values every 1 sec & 10 sec
screen.py: Tkinter file, screen keeps on updating every 1 sec
scree2.py: Tkinter file, screen keeps on updating every 10 sec
3. My code never run on gives anything. However if in main.py, I disable, one of either screen thread, another screen works fine. i.e they don't work together
main.py
[code]import thread
import time
import analog
import screen
import screen2
thread.start_new_thread(analog.get_analog_1 , ("Thread-1",))
thread.start_new_thread(analog.get_analog_2 , ("Thread-2",))
thread.start_new_thread(screen.display , ("Thread-3",))
thread.start_new_thread(screen2.display , ("Thread-4",))
while 1:
pass
[/code]
analog.py
[code]import time
from random import randint
current_time_1 = time.time();
current_time_2 = time.time();
read_ok_1 = 0
read_ok_2 = 0
analog_1 = 0
analog_2 = 0
#get reading at every 1 second
def get_analog_1(thread_name):
global read_ok_1, current_time_1,analog_1
while True:
if((time.time() - current_time_1) > 1):
if(0 == read_ok_1):
current_time_1 = time.time();
read_ok_1 = 1;
analog_1 = randint(0,100)
#get reading on update
def read_update_analog_1():
global read_ok_1,analog_1
data1 = 0
val1 = 0
if(1 == read_ok_1):
read_ok_1 = 0;
data1 = 1;
val1 = analog_1
return data1,val1
#get reading at every 10 second
def get_analog_2(thread_name):
global read_ok_2, current_time_2,analog_2
while True:
if((time.time() - current_time_2) > 10):
if(0 == read_ok_2):
current_time_2 = time.time();
read_ok_2 = 1;
analog_2 = randint(0,100)
#get reading on update
def read_update_analog_2():
global read_ok_2,analog_2
data2 = 0
val2 = 0
if(1 == read_ok_2):
read_ok_2 = 0;
data2 = 1;
val2 = analog_2
return data2,val2
[/code]
screen.py
[code]
from Tkinter import *
import analog
import thread
import time
class App():
def __init__(self, master):
self.master = master
frame = Frame(master)
frame.pack()
label = Label(frame , text = "Analog" , font = ("Helvetica",32))
label.grid(row = 0)
self.reading_label = Label(frame, text = '0.0' , font = ("Helvetica",70))
self.reading_label.grid(row = 1)
self.update_reading()
def update_reading(self):
data1,val1 = analog.read_update_analog_1()
if(1 == data1):
reading_str = "{:.1f}".format(val1)
self.reading_label.configure(text = reading_str)
self.master.after(100 , self.update_reading)
def display(threadName):
root = Tk()
root.wm_title("Ammeter")
app = App(root)
root.geometry("480x320")
root.mainloop()
[/code]
screen2.py
[code]from Tkinter import *
import analog
import thread
import time
class App():
def __init__(self, master):
self.master = master
frame = Frame(master)
frame.pack()
label = Label(frame , text = "Analog" , font = ("Helvetica",32))
label.grid(row = 0)
self.reading_label = Label(frame, text = '0.0' , font = ("Helvetica",70))
self.reading_label.grid(row = 1)
self.update_reading()
def update_reading(self):
data1,val1 = analog.read_update_analog_2()
if(1 == data1):
reading_str = "{:.1f}".format(val1)
self.reading_label.configure(text = reading_str)
self.master.after(1000 , self.update_reading)
def display(threadName):
root = Tk()
root.wm_title("Voltmeter")
app = App(root)
root.geometry("480x320")
root.mainloop()
[/code]