Seltsames Phänomen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Uwe Stockemer
User
Beiträge: 13
Registriert: Freitag 3. Februar 2006, 12:48

Hallo,

Ich habe ein Pythonprog mit Eclipse geschrieben, läuft auch wunderbar,
bloß manchmal springt das Prog in Zeilen rein wo es nie rein springen darf.
Das heißt ich habe z.B. ein iF ABFRAGE dürfte nur in einem bestimmten
Fall was ausführen aber manchmal macht das Prog genau das Gegenteil.
Liegt es vielleicht daran das ich die Zeilen nicht genau genug eingerückt
habe(das ein Leerzeichen oder so)?
Was ich noch dazu sagen muss ist, das Programm mit py2exe gepackt
und vielleicht es es py2exe was empfindlich reagiert.
Ansonsten bin ich wirklich ratlos und brauch unbedingt Euren Rat.


stockie :(
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Ähm wie sollen wir dir helfen, ohne den Source Code zu sehen? Also bitte posten.

Gruß Thomas!
mfg

Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

sry, is etwas offtopic, aber das gleiche hatte ich schon einmal bei php.
damals habe ich keine lösung gefunden...aber ich hoffe, dass ich python in eine andere schublad stecken kann.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Uwe Stockemer hat geschrieben:bloß manchmal springt das Prog in Zeilen rein wo es nie rein springen darf.
Hi stockie!

Python springt nicht ohne Grund irgendwo rein ohne das es vom Programmierer so programmiert wurde. Lass dein Programm mit einem Debugger genau dann stehen bleiben, wenn es nicht das tut, was du von ihm willst. Prüfe dann die Variablen. Vergleiche diese noch einmal mit einer if-Anweisung...

Um solchen Fehlern auf die Spur zu kommen, führt man das Programm Schritt für Schritt aus und beobachtet, was es in welchem Fall macht. Man kann sich mit "print" anzeigen lassen, ob es in eine Schleife eingetreten ist und ob eine if-Anweisung die richtige Auswirkung hat. Du kannst mit "assert" prüfen. Z.B. ob eine if-Anweisung auch wirklich zwei gleiche Datentypen miteinander vergleicht oder nicht. -- Was in solchen Fällen wahrscheinlich der größte Fehlerfaktor ist.

Debugge dein Programm.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Uwe Stockemer
User
Beiträge: 13
Registriert: Freitag 3. Februar 2006, 12:48

Da ich ständig die serielle Schnittstelle auslese mit
pyserial und über die konsole print das Ergebnis ausgebe.
Habe ich den Verdacht das die Anwendung aufbläht und dann wahrscheinlich nicht mehr richtig läuft.
Könnte das sein?
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

schau doch im taskmanager nach !

Aber halte ich für unwahrscheinlich, du wirst eher entweder eine Möglichkeit vergessen haben zu prüfen, oder falsch eingerückt.


Aber immernoch : Ohne Source keine hilfe möglich.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Uwe Stockemer hat geschrieben:Könnte das sein?
Könnte sein. Wahrscheinlicher ist jedoch, dass sich in jenen Moment ein Hacker in deinen Rechner hackt und das Programm falsche Daten erzeugen läßt.

Mit anderen Worten: Nein, wohl nicht.

Und ohne Code können wir dir nicht helfen. Du rufst ja auch nicht in einer Autowerkstatt an und sagt: "Mein Auto geht nicht. Woran liegt das?"
Zuletzt geändert von Joghurt am Montag 19. Juni 2006, 13:01, insgesamt 1-mal geändert.
Uwe Stockemer
User
Beiträge: 13
Registriert: Freitag 3. Februar 2006, 12:48

//Scannklasse

import serial
import threading
import sys
import string
from ScanProzess import Scan_Prozess
import os
import ConfigParser
import time
from qt import *
from printing import Print
from data import data_class
from Errorhandling import Error_handle



class Scanning(threading.Thread):
item=""
Filesize=0
x=0
running=True
Adr_Reader_1=""
Adr_Reader_2=""
Adr_Reader_3=""

Reader_1=""
Reader_2=""



Reader_3=""

def __init__(self):
self.data=data_class("Warehouse/warehouse/")
self.execute_flag=True
threading.Thread.__init__(self)


#Read the Interfacesettings from ini-File "lvs.ini"

self.config = ConfigParser.ConfigParser()
file = open("data/lvs.ini",'r')
self.config.readfp(file)
file.close()
self.Print_Time=self.config.get('PrintMovement','Time')
self.O_print=Print()
self.Error=Error_handle()

self.Adr_Reader_1=self.config.get('Readerconfig','reader_Adr1')
self.Adr_Reader_2=self.config.get('Readerconfig','reader_Adr2')
self.Adr_Reader_3=self.config.get('Readerconfig','reader_Adr3')

self.Reader_1=self.config.get('Readerconfig','reader1')
self.Reader_2=self.config.get('Readerconfig','reader2')
self.Reader_3=self.config.get('Readerconfig','reader3')



if self.config.get('Interface', 'Databits')=="6":
bsize=serial.SIXBITS
elif self.config.get('Interface', 'Databits')=="8":
bsize=serial.EIGHTBITS
elif self.config.get('Interface', 'Databits')=="5":
bsize=serial.FIVEBITS
elif self.config.get('Interface', 'Databits')=="7":
bsize=serial.SEVENBITS

if self.config.get('Interface', 'Parity')=="Even":
bparity=serial.PARITY_EVEN
elif self.config.get('Interface', 'Parity')=="Odd":
bparity=serial.PARITY_ODD
elif self.config.get('Interface', 'Parity')=="None":
bparity=serial.PARITY_NONE


if self.config.get('Interface', 'Stopbits')=="1":
bstopbits=serial.STOPBITS_ONE
elif self.config.get('Interface', 'Stopbits')=="2":
bstopbits=serial.STOPBITS_TWO

if self.config.get('Interface', 'Flowcontrol')=="Xon/Xoff":
bflowcontrol=0
elif self.config.get('Interface', 'Flowcontrol')=="Hardware":
bflowcontrol=1
elif self.config.get('Interface', 'Flowcontrol')=="None":
bflowcontrol=2


self.threadport=threading.Event()
self.serial=serial.Serial(
port=int(self.config.get('Interface', 'Port')),
baudrate=int(self.config.get('Interface', 'Baudrate')),
bytesize=bsize,
parity=bparity,
stopbits=bstopbits,
timeout=1,
xonxoff=bflowcontrol,
rtscts=0
)


#Create the Objects
self.scanner1=Scan_Prozess()
self.scanner2=Scan_Prozess()
self.scanner3=Scan_Prozess()

#write String to serial Interface
def write(self,value):
self.serial.write(value)

#Start the Thread
def scanStart(self):
self.threadport.set()

#Stop the Thread
def scanStop(self):
self.running=False
self.threadport.set()
self.canceled = True


#Read String from Buffer and call the Function "action" from Object Scan_Prozess()
#Parallel print a Report Movement out

def run(self):
try:
while self.running==True:

text = self.serial.read(1)
print ""
print "serial read"
print ""

if text:
n = self.serial.inWaiting()
if n >0:




text =text + self.serial.read(n)

self.laengestr=len(text)
self.item=self.item+text

if ord(text[self.laengestr-1:self.laengestr])==3:
print self.item[6:len(self.item)-1]
self.scanner=self.item[1:5]
if self.scanner==self.Adr_Reader_1 and self.Reader_1=="1":
self.scanner1.action(self.item[6:len(self.item)-1],"1")
elif self.scanner==self.Adr_Reader_2 and self.Reader_2=="1":
self.scanner2.action(self.item[6:len(self.item)-1],"2")
elif self.scanner==self.Adr_Reader_3 and self.Reader_3=="1":
self.scanner3.action(self.item[6:len(self.item)-1],"3")
self.item=""
else:

if ord(self.item[0:1])==1 and ord(self.item[5:6])==2:
print self.item[6:len(self.item)]
self.scanner=self.item[1:5]
if self.scanner==self.Adr_Reader_1 and self.Reader_1=="1":
self.scanner1.action(self.item[6:len(self.item)],"1")
elif self.scanner==self.Adr_Reader_2 and self.Reader_2=="1":
self.scanner2.action(self.item[6:len(self.item)],"2")
elif self.scanner==self.Adr_Reader_3 and self.Reader_3=="1":
self.scanner3.action(self.item[6:len(self.item)],"3")
self.item=""
self.serial.flushInput()
print "flush Buffer"
else:
hour=time.localtime()[3]
min=time.localtime()[4]

if (hour==int(self.Print_Time[0:2]) and min==int(self.Print_Time[3:5]) and self.execute_flag==True):
self.execute_flag=False
self.O_print.titel="Overview Movement"
self.sql="select prod_ort_ID,r3nr,index_Nr,package_ID,palette_ID,einlagerdat,auslagerdat,menge,fauf,ieebatch,datum,stellplatz from protokoll where r3nr<>0 "
self.headerlist=('','R3-Nr.','','','','Incomingdat.','Outgoingdat.','Quantity','Fauf','IEE-Batch','Date','Storelocation')
sql_list=self.data.Erg_Liste(self.sql)
self.Pri_Col_width=(20,60,20,10,20,160,160,60,60,80,200,60)
self.O_print.Ue_ergebnis=sql_list
self.O_print.Ue_Headerlist=self.headerlist
self.O_print.print_Mat_overview("",self.Pri_Col_width,True,"",0)
self.data.SQL_Execute("delete from protokoll")
elif (hour==int(self.Print_Time[0:2]) and min == int(self.Print_Time[3:5])+1) and self.execute_flag==False:
self.execute_flag=True
self.closePort()
except:
self.Error.Errorbox("Error in Func run",True)


////Die Methode Action ich hoffe Ihr kommt klar :oops:


def action(self,scancode,scanner):
try:
if scanner=="1":
self.Temp_Tab="temp_stellpl"
elif scanner=="2":
self.Temp_Tab="temp_stellpl_2"
elif scanner=="3":
self.Temp_Tab="temp_stellpl_3"


self.scan_text=scancode
if len(self.scan_text)==8:
if self.Regalpl_1=="":
self.Regalpl_1=self.scan_text[0:2]
self.Spaltepl_1=self.scan_text[3:5]
self.Zeilenpl_1=self.scan_text[6:8]
else:
self.Regalpl_2=self.scan_text[0:2]
self.Spaltepl_2=self.scan_text[3:5]
self.Zeilenpl_2=self.scan_text[6:8]

if self.Regalpl_1==self.Regalpl_2 and self.Spaltepl_1==self.Spaltepl_2 and self.Zeilenpl_1==self.Zeilenpl_2:
self.sql="Select * from regal where regalnr="+str(int(self.Regalpl_2))+" and lagerplatz_ID="+str(int(self.Spaltepl_2))+" and regalzeilen_ID="+str(int(self.Zeilenpl_2))
self.regal_ID_pup=self.data.Erg_Field(self.sql,0)
if self.regal_ID_pup<>"":
if self.Prod_ID<>"69" or not self.Prod_ID<>"20":
self.Datawrite_delete(True,self.regal_ID_pup)
else:
self.Error.Errorbox("Stellplatz ist noch nicht angelegt",False)
self.data.SQL_Execute("delete from "+self.Temp_Tab)



else:
self.Error.Errorbox("Falscher Stellplatz gescannt "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1+" ",False)
self.data.SQL_Execute("delete from "+self.Temp_Tab)



self.Prod_Art=0
self.Prod_ID=""
self.Box_Nr.clear()

self.Regalpl_1=""
self.Spaltepl_1=""
self.Zeilenpl_1=""

else:
if self.Regalpl_1 <> "":
self.Prod_ID=self.scan_text[0:2]
else:
self.Prod_ID=""
self.anz_temp_tab=self.data.Erg_Field("Select count(*) from "+self.Temp_Tab,0)

if self.Prod_ID=="20":
self.sql="Select * from regal where regalnr="+str(int(self.Regalpl_1))+" and lagerplatz_ID="+str(int(self.Spaltepl_1))+" and regalzeilen_ID="+str(int(self.Zeilenpl_1))
self.__regal_ID=self.data.Erg_Field(self.sql,0)
self.Datawrite_delete(False,self.__regal_ID)
elif self.Prod_ID=="30":
print "reserviert"
elif self.Prod_ID=="40":
if self.Prod_Art==4 or self.Prod_Art==0:
self.Rawmaterial(self.scan_text)
self.Prod_Art=4
else:
self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)
elif self.Prod_ID=="41":
if self.Prod_Art==5 or self.Prod_Art==0:
self.Semi_Finished(True,self.scan_text)
self.Prod_Art=5
else:
self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)
elif self.Prod_ID=="57":
if self.Prod_Art==5 or self.Prod_Art==0:
self.Semi_Finished(False,self.scan_text)
self.Prod_Art=5
else:
self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)
elif self.Prod_ID=="69":
self.sql="Select * from regal where regalnr="+str(int(self.Regalpl_1))+" and lagerplatz_ID="+str(int(self.Spaltepl_1))+" and regalzeilen_ID="+str(int(self.Zeilenpl_1))
self.__regal_ID=self.data.Erg_Field(self.sql,0)

if self.Prod_Art==1 or self.Prod_Art==0:
self.Empty_Storeloc(self.__regal_ID)
self.Prod_Art=1
else:
self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)
if self.scan_text[0:1]=="7" or self.Prod_ID=="50":
self.laenge=len(self.scan_text)
if self.Prod_Art==7 or self.Prod_Art==0:
self.Prod_Art=7
if self.laenge > 22:
self.Finishedmat(False,self.scan_text)
else:
self.Finishedmat(True,self.scan_text)
else:
self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)
except:
self.Error.Errorbox("Error in Func Action",True)
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Könntest du das ganze noch in [code=py][/code] einklammern und richtig einrücken
Uwe Stockemer
User
Beiträge: 13
Registriert: Freitag 3. Februar 2006, 12:48

Code: Alles auswählen

//Ups sorry
//Methode action von klasse Scan_Prozess

    def action(self,scancode,scanner): 
       try:
           if scanner=="1":
               self.Temp_Tab="temp_stellpl"
           elif scanner=="2":
               self.Temp_Tab="temp_stellpl_2"
           elif scanner=="3":
               self.Temp_Tab="temp_stellpl_3"
            
                    
           self.scan_text=scancode
           if len(self.scan_text)==8:
               if self.Regalpl_1=="":
                   self.Regalpl_1=self.scan_text[0:2]
                   self.Spaltepl_1=self.scan_text[3:5]
                   self.Zeilenpl_1=self.scan_text[6:8]
               else:
                   self.Regalpl_2=self.scan_text[0:2]
                   self.Spaltepl_2=self.scan_text[3:5]
                   self.Zeilenpl_2=self.scan_text[6:8]
                
                   if self.Regalpl_1==self.Regalpl_2 and self.Spaltepl_1==self.Spaltepl_2 and self.Zeilenpl_1==self.Zeilenpl_2:
                       self.sql="Select * from regal where regalnr="+str(int(self.Regalpl_2))+" and lagerplatz_ID="+str(int(self.Spaltepl_2))+" and regalzeilen_ID="+str(int(self.Zeilenpl_2))
                       self.regal_ID_pup=self.data.Erg_Field(self.sql,0)                   
                       if self.regal_ID_pup<>"":
                           if self.Prod_ID<>"69" or not self.Prod_ID<>"20":
                               self.Datawrite_delete(True,self.regal_ID_pup)
                       else:
                           self.Error.Errorbox("Stellplatz ist noch nicht angelegt",False)
                           self.data.SQL_Execute("delete from "+self.Temp_Tab)
                          
                       

                   else:
                       self.Error.Errorbox("Falscher Stellplatz gescannt  "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1+" ",False)
                       self.data.SQL_Execute("delete from "+self.Temp_Tab)
                   
                   
                   
                   self.Prod_Art=0
                   self.Prod_ID=""
                   self.Box_Nr.clear()    
                   
                   self.Regalpl_1=""
                   self.Spaltepl_1=""
                   self.Zeilenpl_1=""
            
           else:
               if self.Regalpl_1 <> "":
                   self.Prod_ID=self.scan_text[0:2]
               else:
                   self.Prod_ID=""
                   self.anz_temp_tab=self.data.Erg_Field("Select count(*) from "+self.Temp_Tab,0)
      
           if self.Prod_ID=="20":
               self.sql="Select * from regal where regalnr="+str(int(self.Regalpl_1))+" and lagerplatz_ID="+str(int(self.Spaltepl_1))+" and regalzeilen_ID="+str(int(self.Zeilenpl_1))
               self.__regal_ID=self.data.Erg_Field(self.sql,0)                   
               self.Datawrite_delete(False,self.__regal_ID)
           elif self.Prod_ID=="30":
               print "reserviert"
           elif self.Prod_ID=="40":
               if self.Prod_Art==4 or self.Prod_Art==0:
                   self.Rawmaterial(self.scan_text)
                   self.Prod_Art=4
               else:
                   self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)
           elif self.Prod_ID=="41":
               if self.Prod_Art==5 or self.Prod_Art==0:
                   self.Semi_Finished(True,self.scan_text)
                   self.Prod_Art=5
               else:
                   self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)  
           elif self.Prod_ID=="57":
               if self.Prod_Art==5 or self.Prod_Art==0:
                   self.Semi_Finished(False,self.scan_text)
                   self.Prod_Art=5 
               else:
                   self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)  
           elif self.Prod_ID=="69":
               self.sql="Select * from regal where regalnr="+str(int(self.Regalpl_1))+" and lagerplatz_ID="+str(int(self.Spaltepl_1))+" and regalzeilen_ID="+str(int(self.Zeilenpl_1))
               self.__regal_ID=self.data.Erg_Field(self.sql,0)                   
            
               if self.Prod_Art==1 or self.Prod_Art==0:
                   self.Empty_Storeloc(self.__regal_ID)
                   self.Prod_Art=1
               else:
                   self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)  
           if self.scan_text[0:1]=="7" or self.Prod_ID=="50":
               self.laenge=len(self.scan_text)
               if self.Prod_Art==7 or self.Prod_Art==0:
                   self.Prod_Art=7
                   if self.laenge > 22:
                       self.Finishedmat(False,self.scan_text)
                   else:
                       self.Finishedmat(True,self.scan_text)
               else:
                   self.Error.Errorbox("Achtung falsches Paket eingelesen "+self.Regalpl_1+"-"+self.Spaltepl_1+"-"+self.Zeilenpl_1,False)  
       except:
           self.Error.Errorbox("Error in Func Action",True)

Uwe Stockemer
User
Beiträge: 13
Registriert: Freitag 3. Februar 2006, 12:48

Code: Alles auswählen


//Klasse Scan

import serial
import threading
import sys
import string
from ScanProzess import Scan_Prozess
import os
import ConfigParser
import time
from qt import *
from printing import Print
from data import data_class
from Errorhandling import Error_handle 



class Scanning(threading.Thread):
    item=""
    Filesize=0
    x=0
    running=True
    Adr_Reader_1=""
    Adr_Reader_2=""
    Adr_Reader_3=""
          
    Reader_1=""
    Reader_2=""
    Reader_3=""
    
    def __init__(self):
        self.data=data_class("Warehouse/warehouse/")
        self.execute_flag=True
        threading.Thread.__init__(self)
            
            
#Read the Interfacesettings from ini-File "lvs.ini"
        
        self.config = ConfigParser.ConfigParser()  
        file = open("data/lvs.ini",'r') 
        self.config.readfp(file)
        file.close()  
        self.Print_Time=self.config.get('PrintMovement','Time')
        self.O_print=Print()
        self.Error=Error_handle()

        self.Adr_Reader_1=self.config.get('Readerconfig','reader_Adr1')
        self.Adr_Reader_2=self.config.get('Readerconfig','reader_Adr2')
        self.Adr_Reader_3=self.config.get('Readerconfig','reader_Adr3')
           
        self.Reader_1=self.config.get('Readerconfig','reader1')
        self.Reader_2=self.config.get('Readerconfig','reader2')
        self.Reader_3=self.config.get('Readerconfig','reader3')

        
        
        if self.config.get('Interface', 'Databits')=="6":
            bsize=serial.SIXBITS
        elif self.config.get('Interface', 'Databits')=="8":
            bsize=serial.EIGHTBITS
        elif self.config.get('Interface', 'Databits')=="5":
            bsize=serial.FIVEBITS
        elif self.config.get('Interface', 'Databits')=="7":
            bsize=serial.SEVENBITS
        
        if self.config.get('Interface', 'Parity')=="Even":
            bparity=serial.PARITY_EVEN
        elif self.config.get('Interface', 'Parity')=="Odd":
            bparity=serial.PARITY_ODD
        elif self.config.get('Interface', 'Parity')=="None":
            bparity=serial.PARITY_NONE
        
                                 
        if  self.config.get('Interface', 'Stopbits')=="1":
            bstopbits=serial.STOPBITS_ONE
        elif self.config.get('Interface', 'Stopbits')=="2":
            bstopbits=serial.STOPBITS_TWO
        
        if  self.config.get('Interface', 'Flowcontrol')=="Xon/Xoff":
            bflowcontrol=0
        elif self.config.get('Interface', 'Flowcontrol')=="Hardware":
            bflowcontrol=1
        elif self.config.get('Interface', 'Flowcontrol')=="None":
            bflowcontrol=2
            
                                
        self.threadport=threading.Event()
        self.serial=serial.Serial(
                port=int(self.config.get('Interface', 'Port')),
                baudrate=int(self.config.get('Interface', 'Baudrate')),
                bytesize=bsize,
                parity=bparity,
                stopbits=bstopbits,
                timeout=1,
                xonxoff=bflowcontrol,
                rtscts=0                  
                )                  
                                  
                                  
#Create the Objects                                
        self.scanner1=Scan_Prozess()
        self.scanner2=Scan_Prozess()
        self.scanner3=Scan_Prozess()
        
#write String to serial Interface
    def write(self,value):
        self.serial.write(value)
 
#Start the Thread        
    def scanStart(self):
        self.threadport.set()
        
#Stop the Thread        
    def scanStop(self):
        self.running=False
        self.threadport.set()
        self.canceled = True 
        
      
#Read String from Buffer and call the Function "action" from Object Scan_Prozess()  
#Parallel print a Report Movement out
        
    def run(self):
      try:  
           while self.running==True:
           
             text = self.serial.read(1) 
             print ""  
             print "serial read"
             print ""
             
             if text:
                 n = self.serial.inWaiting()
                 if n >0:
                  
                         
                         
                                    
                     text =text + self.serial.read(n)
                    
                     self.laengestr=len(text)
                     self.item=self.item+text



                     if ord(text[self.laengestr-1:self.laengestr])==3:
                         print self.item[6:len(self.item)-1]
                         self.scanner=self.item[1:5]
                         if self.scanner==self.Adr_Reader_1 and self.Reader_1=="1":
                             self.scanner1.action(self.item[6:len(self.item)-1],"1")
                         elif self.scanner==self.Adr_Reader_2 and self.Reader_2=="1":
                             self.scanner2.action(self.item[6:len(self.item)-1],"2")
                         elif self.scanner==self.Adr_Reader_3 and self.Reader_3=="1":
                             self.scanner3.action(self.item[6:len(self.item)-1],"3")
                         self.item=""
                 else:                
                    
                     if ord(self.item[0:1])==1 and ord(self.item[5:6])==2:
                         print self.item[6:len(self.item)]
                         self.scanner=self.item[1:5]
                         if self.scanner==self.Adr_Reader_1 and self.Reader_1=="1":
                             self.scanner1.action(self.item[6:len(self.item)],"1")
                         elif self.scanner==self.Adr_Reader_2 and self.Reader_2=="1":
                             self.scanner2.action(self.item[6:len(self.item)],"2")
                         elif self.scanner==self.Adr_Reader_3 and self.Reader_3=="1":
                             self.scanner3.action(self.item[6:len(self.item)],"3")
                         self.item=""
                 self.serial.flushInput() 
                 print "flush Buffer"       
             else:
               hour=time.localtime()[3]
               min=time.localtime()[4]
           
               if (hour==int(self.Print_Time[0:2]) and min==int(self.Print_Time[3:5]) and self.execute_flag==True):
                   self.execute_flag=False
                   self.O_print.titel="Overview Movement"
                   self.sql="select prod_ort_ID,r3nr,index_Nr,package_ID,palette_ID,einlagerdat,auslagerdat,menge,fauf,ieebatch,datum,stellplatz from protokoll where r3nr<>0 "
                   self.headerlist=('','R3-Nr.','','','','Incomingdat.','Outgoingdat.','Quantity','Fauf','IEE-Batch','Date','Storelocation')
                   sql_list=self.data.Erg_Liste(self.sql)
                   self.Pri_Col_width=(20,60,20,10,20,160,160,60,60,80,200,60)
                   self.O_print.Ue_ergebnis=sql_list
                   self.O_print.Ue_Headerlist=self.headerlist
                   self.O_print.print_Mat_overview("",self.Pri_Col_width,True,"",0)
                   self.data.SQL_Execute("delete from protokoll")
               elif  (hour==int(self.Print_Time[0:2]) and min == int(self.Print_Time[3:5])+1) and self.execute_flag==False:
                   self.execute_flag=True
           self.closePort()         
      except:
         self.Error.Errorbox("Error in Func run",True)
                     
                             
                        

#Close Serial Port                 
    def closePort(self):
       self.serial.close()

Antworten