Umsteiger und Anfänger sucht Hilfe
Verfasst: Samstag 20. Juli 2013, 08:00
Hallo Leute. Erstmal großes Lob an die ganzen Leute die hier wirklich brauchbare Tipps geben. Ich hoffe nun das ihr mir auch helfen könnt. Ich habe erst kurz mit der Sprache Python zu tun. Seit 3 Wochen geht es in das GUI mit wxPython. Ich möchte ein Programm erstellen wo ich per RS232 Daten versenden und empfangen kann. Das funktioniert schon sehr gut. Jetzt muss ich die Daten die angekommen sind aus dem TextCTRL auslesen und mit Werten vergleichen. Und genau da komme ich nicht weiter. Also hier mal meine Fragen.
Wie kann ich ich per evtHandler (Enter oder Update) die letzte Zeile in eine Variable einlesen? Kann ich die Vergleiche in eine "Unterroutine" legen (wie bei VB) und wie kann ich diese von einem ButtonClick Event aufrufen? Anbei mein Code bis jetzt ... ICh hoffe ihr könnt mir helfen
Wie kann ich ich per evtHandler (Enter oder Update) die letzte Zeile in eine Variable einlesen? Kann ich die Vergleiche in eine "Unterroutine" legen (wie bei VB) und wie kann ich diese von einem ButtonClick Event aufrufen? Anbei mein Code bis jetzt ... ICh hoffe ihr könnt mir helfen

Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
RS232 senden und empfangen und auswerten Versuch 1
'''
#COMport = "/dev/ttyUSB0"
COMport = "COM37"
Baud = 38400
#*******Import Python Funktionen Anfang******************
import wx
from serialthread import *
#*******Import Python Funktionen Ende********************
class Window(wx.Frame):
def __init__(self, *args, **kwargs):
super(Window, self).__init__(*args, **kwargs)
self.InitUI()
def InitUI(self):
self.textbox=wx.TextCtrl(self, style = wx.TE_MULTILINE, pos = (5,5),size=(385, 100))
myfont = wx.Font(12, wx.MODERN, wx.NORMAL, wx.BOLD, False, u'Courier')
self.textbox.SetFont(myfont)
buttonOn=wx.Button(self, -1, "Start", pos=(100,230))
buttonOff=wx.Button(self, -1, "Stop", pos=(200,230))
menubar = wx.MenuBar() #Menue erstellen
self.SetMenuBar(menubar)#Menue zeichnen
#*******Filemenue Anfang*********************************
fileMenu = wx.Menu()
fileMenu.Append(wx.ID_NEW, '&New')
fileMenu.Append(wx.ID_OPEN, '&Open')
fileMenu.Append(wx.ID_SAVE, '&Save')
#*******Filemenue Ende***********************************
#*******Seperator Anfang********************************
fileMenu.AppendSeparator()
#*******Seperator Ende**********************************
#*******Importmenue Anfang*******************************
imp = wx.Menu()
fileMenu.AppendMenu(wx.ID_ANY, 'I&mport', imp)
imp.Append(wx.ID_ANY, 'Import Test1...')
imp.Append(wx.ID_ANY, 'Import Test2...')
imp.Append(wx.ID_ANY, 'Import TEst3...')
#*******Importmenue Ende*********************************
#*******Quitmenu Anfang**********************************
qmi = wx.MenuItem(fileMenu, wx.ID_EXIT, '&Quit\tCtrl+W')
fileMenu.AppendItem(qmi)
#*******Quitmenu Ende************************************
#*******Bindings Anfang**********************************
self.Bind(wx.EVT_MENU, self.OnQuit, qmi)
self.Bind(wx.EVT_IDLE, self.OnIdle)
self.Bind(wx.EVT_WINDOW_DESTROY, self.OnQuit)
buttonOn.Bind(wx.EVT_BUTTON, self.OnButtonOn)
buttonOff.Bind(wx.EVT_BUTTON, self.OnButtonOff)
#*******Bindings Ende************************************
menubar.Append(fileMenu, '&File')
#*******Fenster zeigen Anfang*****************************
self.SetSize((400, 400))
self.SetTitle('Flow Displayboard')
self.Centre()
self.Show(True)
#*******Fenster zeigen Ende********************************
# serial thread
self.serial_thread = Serialthread(COMport, Baud)
self.serial_thread.connect()
self.textbox.AppendText ("bereit\n")
self.textbox.AppendText ("ComPort: " + COMport + "\n")
def OnIdle( self, event):
# if nothing else to do, update text from message queue
while not self.serial_thread.msgQueue.empty():
msg=self.serial_thread.msgQueue.get()
self.textbox.AppendText(msg)
def OnButtonOn(self, event):
self.textbox.AppendText ("Start\n")
data = b"\xAA\x00\x00\x05\x00\x0A\x00\x00\x00\x00\x60\x01\x00\x00\x00\x00"
self.serial_thread.sCOM.write(data)
def OnButtonOff(self, event):
self.textbox.AppendText ("Stop\n")
data = b"\xAA\x00\x00\x05\x00\x0A\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00"
self.serial_thread.sCOM.write(data)
#script2run = "c:\simple.py"
#execfile( script2run )
self.textbox.SetBackgroundColour("green")
self.textbox.SetFocus()
self.textbox.SetValue("Hallo Welt\n")
time.sleep(10)
value = self.textbox.GetValue()
self.textbox.AppendText (value)
def OnQuit(self, e):
self.serial_thread.disconnect()
time.sleep(0.5)
self.Close()
def main():
ex = wx.App(redirect = False)
Window(None)
ex.MainLoop()
if __name__ == '__main__':
main()