Hallo!
Ich habe eine Aufgabe, in der ich über serielle Schnittstelle auf ein Gerät(Schreiblesekopf) zugreifen soll. Ich soll die Daten aus dem Gerät auslesen und dann in txt-Datei diese Daten speichern. Im Folgenden soll ich Daten auf dieses Gerät schicken.
Leider habe ich überhaupt keine Vorstellung, wie man das realisiert. Guter Information konnte ich im Internet nicht finden. Kann mir jemand ein paar Quelle mit solcher Information vorschlagen, lieber mit Beispielen.
Danke im Voraus!
Zugriff auf die serielle Schnittstelle
Hallo alle zusammen,
auf dieser Seite war ich schon. Das Beispiel hab ich sogar schon zu meiner Aufgabe angepasst, aber trotzdem verstehe ich davon nicht viel. Das Programm ist ohne Beschreibung, deswegen habe ich um Quellen nach anderen Informationen gebetet.
Danke!
auf dieser Seite war ich schon. Das Beispiel hab ich sogar schon zu meiner Aufgabe angepasst, aber trotzdem verstehe ich davon nicht viel. Das Programm ist ohne Beschreibung, deswegen habe ich um Quellen nach anderen Informationen gebetet.
Danke!
Jetzt aber nach dem ich die Daten von mein Gerät geladen habe, gibt es ein weiteres Problem, mit der Combobox.
Den Programmcode habe ich reduziert.
Das Problem liegt daran, das in die Funktion suche keinen Name aus der Combobox übergegeben wird.
print + „NICHTS“ ist hier für den Test.
Danke im Voraus!
Den Programmcode habe ich reduziert.
Code: Alles auswählen
from Tkinter import *
from serial import Serial
import Tix
import tkFileDialog
import string
#############################################################################################
class MainWindow:
bl = 0
def __init__ (self):
self.fenster = Tix.Tk()
self.fenster.title("ID40 SLK")
self.fenster.resizable(0,0)
self.fenster.columnconfigure(0, weight=1)
self.fenster.rowconfigure(0, weight=1)
self.text = Text(self.fenster, width=100, height=40,
wrap=WORD, font=('Arial', 10))
self.text.grid(row=0, column=0, sticky="nesw")
self.verticalScroller = Scrollbar(self.fenster, orient="vertical")
self.verticalScroller.grid(row=0, column=1, sticky="ns")
self.text['yscrollcommand'] = self.verticalScroller.set
self.verticalScroller['command'] = self.text.yview
self.frame1 = Frame(self.fenster)
self.bt_dg = Button(self.frame1, text=" Diagramm zeigen ",
command=self.diagramm_anzeigen).grid(row=3, column=4,
padx=3, pady=3)
self.frame1.grid(row=1)
self.__addMenueleiste()
self.__addDateimenue()
self.fenster.mainloop()
#-------------------------------------------------------------------------------
def __addMenueleiste(self):
self.menueleiste=Menu(self.fenster)
self.fenster.configure(menu=self.menueleiste)
#-------------------------------------------------------------------------------
def __addDateimenue(self):
self.dateimenue=Menu(self.menueleiste)
self.dateimenue.add_command(label='Laden', command=self.laden)
self.dateimenue.add_command(label='Speichern', command=self.speichern)
self.dateimenue.add_separator()
self.dateimenue.add_command(label='Beenden', command=self.beenden)
self.menueleiste.add_cascade(label="Datei", menu=self.dateimenue)
#-------------------------------------------------------------------------------
def speichern(self):
self.datei = tkFileDialog.asksaveasfile()
if self.datei:
self.datei.write(self.text.get(1.0, END))
self.datei.close()
#-------------------------------------------------------------------------------
def diagramm_anzeigen(self):
diagramm = Diagramm()
#-------------------------------------------------------------------------------
def laden(self):
self.datei = tkFileDialog.askopenfile()
text = self.datei.read()
self.sys_text = text
self.text.insert(INSERT , self.sys_text)
self.bl = 1
#-------------------------------------------------------------------------------
def beenden(self):
self.fenster.destroy()
###########################################################################################
class Diagramm:
def __init__ (self):
self.fenster = Tix.Tk()
self.fenster.title("ids-Grafiken")
self.fenster.resizable(0,0)
self.bt_beenden = Button(self.fenster, text=" Beenden ",
command=self.beenden).pack(padx=3, pady=3,
side=BOTTOM)
self.zeichnung = Zeichnung(self.fenster)
self.daten = Daten(self.fenster, self.zeichnung)
self.fenster.mainloop()
#-------------------------------------------------------------------------------
def beenden(self):
self.fenster.destroy()
#############################################################################################
class Zeichnung:
def __init__(self, fenster):
self.c = Canvas(master=fenster, width='20c', height='21c')
self.c.pack()
self.x_achse = self.c.create_line('0.5c', '20c', '19.5c', '20c')
j = 36
for i in range(0,32):
self.kr = self.c.create_line(j, '20c', j, '20.2c')
self.kr_zh = self.c.create_text(j, '20.5c', text=i)
j = j + 22
self.list_balke = []
self.list_zahl = []
j = 36
for i in range(0,32):
self.balke = self.c.create_line(j, "20c", j, "20c", fill="red", width="0.3c")
self.list_balke.append(self.balke)
self.text = self.c.create_text(j, "20c", text="")
self.list_zahl.append(self.text)
j = j + 22
#############################################################################################
class Daten:
def __init__ (self, fenster, zeichnung):
self.addCombobox(fenster)
#-------------------------------------------------------------------------------
def addCombobox(self, fenster):
self.varcombo = Tix.StringVar()
self.combo = Tix.ComboBox(fenster, editable=1, dropdown=1,
command=self.suchen, variable=self.varcombo)
self.combo.entry.config(state='readonly')
self.combo.insert(0, "ids.powerup_counts")
self.combo.insert(1, "ids.expect_ack_retrys")
self.combo.insert(2, "ids.expect_waitack_retrys")
self.combo.insert(3, "ids.expect_data_retrys")
self.combo.insert(4, "ids.expect_data_pup_received")
self.combo.insert(5, "ids.expect_data_nak_packet")
self.combo.insert(6, "ids.expect_data_invalid_packet")
self.combo.insert(7, "ids.expect_ack_cks_invalid")
self.combo.insert(8, "ids.expect_ack_nak_packet")
self.combo.insert(9, "ids.expect_ack_invalid_packet")
self.combo.insert(10, "ids.expect_waitack_cks_invalid")
self.combo.insert(11, "ids.expect_waitack_nak_packet")
self.combo.insert(12, "ids.expect_waitack_invalid_packet")
self.combo.insert(13, "ids.expect_ack_pup_received")
self.combo.insert(14, "ids.log_on_retries")
self.combo.pack(fill=BOTH)
#-------------------------------------------------------------------------------
def suchen(self, evt):
ex = self.varcombo.get()
print ex + " NICHTS"
###########################################################################################
mw = MainWindow()
print + „NICHTS“ ist hier für den Test.
Danke im Voraus!
Jetzt habe ich den Quellcode noch reduziert. Das Problem liegt in der Zeile 7, wenn man kein Widget von der Klasse „Main Window“ erzeugt, dann ist alles in Ordnung, woran es liegt?
Code: Alles auswählen
from Tkinter import *
import Tix
#############################################################################################
class MainWindow:
def __init__ (self):
self.fenster = Tix.Tk()
self.fenster.title("1")
diagramm = Diagramm()
self.fenster.mainloop()
#############################################################################################
class Diagramm:
def __init__ (self):
self.fenster = Tix.Tk()
self.fenster.title("2")
self.daten = Daten(self.fenster)
self.fenster.mainloop()
#############################################################################################
class Daten:
def __init__ (self, fenster):
self.varcombo = Tix.StringVar()
self.combo = Tix.ComboBox(fenster, editable=1, dropdown=1,
command=self.suchen, variable=self.varcombo)
self.combo.entry.config(state='readonly')
self.combo.insert(0, "ids.powerup_counts")
self.combo.insert(1, "ids.expect_ack_retrys")
self.combo.insert(2, "ids.expect_waitack_retrys")
self.combo.insert(3, "ids.expect_data_retrys")
self.combo.insert(4, "ids.expect_data_pup_received")
self.combo.insert(5, "ids.expect_data_nak_packet")
self.combo.insert(6, "ids.expect_data_invalid_packet")
self.combo.insert(7, "ids.expect_ack_cks_invalid")
self.combo.insert(8, "ids.expect_ack_nak_packet")
self.combo.insert(9, "ids.expect_ack_invalid_packet")
self.combo.insert(10, "ids.expect_waitack_cks_invalid")
self.combo.insert(11, "ids.expect_waitack_nak_packet")
self.combo.insert(12, "ids.expect_waitack_invalid_packet")
self.combo.insert(13, "ids.expect_ack_pup_received")
self.combo.insert(14, "ids.log_on_retries")
self.combo.pack(fill=BOTH)
#-------------------------------------------------------------------------------
def suchen(self, evt):
ex = self.varcombo.get()
print ex + " NICHTS"
###########################################################################################
mw = MainWindow()
Es darf pro Programm nur ein Exemplar von `Tkinter.Tk` oder `Tix.Tk` geben. Das ist sozusagen das Ur-Widget, deshalb wird es in Programmen auch oft an den Namen `root` gebunden.
Wenn Du neben dem Hauptfenster noch weitere, unabhängige Fenster haben möchtest, dann nimm dafür `Tkinter.Toplevel`.
Wenn Du neben dem Hauptfenster noch weitere, unabhängige Fenster haben möchtest, dann nimm dafür `Tkinter.Toplevel`.
Für das zweite Fenster habe ich jetzt Toplevel genommen. Aber ich weiß nicht, wie ich jetzt darauf diese Combobox platzieren kann. Könntest du an meinem Beispiel mir zeigen, wie es seien soll.Wenn Du neben dem Hauptfenster noch weitere, unabhängige Fenster haben möchtest, dann nimm dafür `Tkinter.Toplevel`
Danke im Voraus!!!!