ok, selbst schuld ... ich hab alles dringelassen...
Code: Alles auswählen
import tkinter as tk
from tkinter import filedialog as fd
from queue import Queue
from threading import Thread, Event
from random import random
from time import sleep
import datetime as dt
import os, serial
global data
data = {'Dateipfad':'', 'Dateiname':'', 'Dateilaenge': 0, 'Startzeit':'', 'Start': False, }
data2 = {}
def main():
my_queue = Queue()
my_queue1 = Queue()
my_event = Event()
my_event1 = Event()
my_thread = Thread(target=generate_data, args=(my_queue, my_event, ))
my_thread.start()
my_thread2 = Thread(target=seriell_in, args=(my_queue1, my_event, ))
my_thread2.start()
root = tk.Tk()
app = Application(my_queue, my_queue1, my_event, master=root)
app.master.title('Dateianalyse')
app.mainloop()
def seriell_in(my_queue1, event):
global data
while not event.is_set():
if data['Start'] == False:
sleep(0.5)
seriell_in(my_queue1, event)
else:
file1 = open(data['Dateipfad'], 'rb')
print(data)
s = (file1.read())
#print(s)
lae = file1.tell()
file1.seek(0)
print ('Die Datei hat ', lae , 'bytes')
data2['Dateilaenge'] = lae
#while data['Start'] == True:
a = 0
b = 0
c = 0
addr = [1]
laenge = [1]
while b < lae:
data1 = file1.read(1)
print(a, b, data1)
if data1 == b'$':
data1 = file1.read(1)
print(a, b, data1)
b = b+1
if data1 == b'$':
data1 = file1.read(1)
print(a, b, data1)
b = b+1
if data == b'$':
data1 = file1.read(1)
print(a, b, data1)
b = b+1
if data1 == b'$':
data1 = file1.read(1)
print(a, b, data1)
b = b+1
if data1 == b'$':
a = a+1
print(a, b, data1)
addr.append (b-4)
laenge.append (addr[a] - addr[a-1])
print(addr[1])
b = b+1
a_ges = a
print ( 'Anzahl Datensätze: ' , str(a), 'Länge(byte) gesamt: ', str(b))
data2['Anzahl Datensaetze'] = a
data2['Laenge(byte) gesamt'] = b
file1.close()
data['Start'] = False
'''
a = 2
while a <= a_ges:
print('data' + ' ' + str(a) + ' ' + str(addr[a-1]) + ' ' + str(laenge[a]))
file1.seek(addr[a])
dataset = file1.read(laenge[a])
data2['dataset'] = dataset
print(dataset, file1.tell())
with serial.Serial('com1', 9600, timeout=2) as ser:
ser.write(dataset)
my_queue1.put(data2)
sleep(1)
a = a+1
'''
def generate_data(my_queue, event):
while not event.is_set():
data['Uhrzeit'] = dt.datetime.now().strftime('%d.%m.%Y\n%H:%M:%S')
my_queue.put(data)
#print(data['Dateiname'])
#print(data['Startzeit'])
#print(data['Start'])
sleep(1.01)
class Application(tk.Frame):
def __init__(self, my_queue, my_queue1, thread_kill_event, master=None):
super().__init__(master)
self.my_queue = my_queue
self.my_queue1 = my_queue1
self.thread_kill_event = thread_kill_event
self.pack()
self.create_widgets()
self.update_labels()
def create_widgets(self):
self.label_text = tk.Label(self, height = 2, width = 15, fg = 'red', bg = 'yellow', text = 'TestText')
self.label_text.pack()
self.label_text2 = tk.Label(self, height = 2, width = 15, fg = 'red', bg = 'yellow', text = 'TestText')
self.label_text2.pack()
self.time_var = tk.StringVar()
self.label_uhrzeit = tk.Label(self, height = 5, width = 30, fg = 'red', textvariable = self.time_var)
self.label_uhrzeit.pack()
self.auswahl = tk.Entry(self, width = 80)
self.auswahl.pack()
self.quit = tk.Button(self, text='QUIT', fg='red',command=self.exit_cleanup)
self.quit.pack(side='right')
self.start = tk.Button(self, text='Start', fg='blue', command=self.start)
self.start.pack(side='right')
self.auswahlBtn = tk.Button(self, text='Datei auswählen', command=self.dateipfad)
self.auswahlBtn.pack(side='right')
self.entryVar = tk.StringVar()
self.entryVar.set('Dateiname: ')
self.entry =tk.Entry(self)
self.entry['textvariable'] = self.entryVar
self.entry.pack(side='bottom')
self.entry.bind('<Return>', self.handler)
self.StartzeitVar = tk.StringVar()
self.StartzeitVar.set('Startzeit: ')
self.Startzeit =tk.Entry(self)
self.Startzeit['textvariable'] = self.StartzeitVar
self.Startzeit.pack(side='bottom')
self.Startzeit.bind('<Return>', self.handler_startzeit)
def start(self):
if data['Start'] == False:
data['Start'] = True
else:
data['Start'] = False
def dateipfad(self):
home = os.path.expanduser("~")
datei_pfad = fd.askopenfilename(initialdir=home, title="Datei-Auswahl")
self.auswahl.insert(tk.END, datei_pfad)
data['Dateipfad'] = datei_pfad
def handler(self, event):
data['Dateiname'] = self.entryVar.get()
def handler_startzeit(self, event):
data['Startzeit'] = self.Startzeit.get()
#holt die Datem aus der queue und aktualisiert die labels:
def update_labels(self):
self.master.after(500, self.update_labels)
if not self.my_queue.empty():
data = self.my_queue.get()
self.time_var.set(data['Uhrzeit'])
if data['Start'] == True:
self.start['text'] = 'Stop'
else:
self.start['text'] = 'Start'
#self.label_text['text'] = (data['Dateiname'])
if not self.my_queue1.empty():
data2 = self.my_queue1.get()
self.label_text2['text'] = (data2['Dateilaenge'])
def exit_cleanup(self):
self.thread_kill_event.set()
self.master.destroy()
if __name__ == '__main__':
main()