# -*- coding: cp1252 -*-
'''
Created on 11.10.2011
@author: sth2mt
'''
import time
import os
import threading
import thread
import shutil
from ctypes import pythonapi, py_object
import subprocess
import FertigungsTest.Hardware.WLAN as Wlan
import FertigungsTest.GUI.Display as Display
import FertigungsTest.Hardware.StartSchalter as StartSchalter
import FertigungsTest.Hardware.Typschild as Typschild
import FertigungsTest.Hardware.LtInterface as LtInterface
import FertigungsTest.Support.JasonCfg as JasonCfg
# WrFlash
# exit
Param = {"None":0,"production":1,"browser":2}
def kill(thread,iStopTimeout,tid):
if thread:
thread.printf ("kill iStopTimeout=%d"%iStopTimeout)
time.sleep(iStopTimeout)
#nach 30s hart beenden
if thread.isAlive():
res = pythonapi.PyThreadState_SetAsyncExc(tid,py_object(SystemExit))
if res == 0:
raise ValueError("nonexistent thread id (%s)" % thread._Thread_name)
elif res > 1:
pythonapi.PyThreadState_SetAsyncExc(tid,0)
raise SystemError("PyThreadState_SetAsyncExc failed")
else :
thread.printf ("kill Thread %s" % thread._Thread_name)
thread.errorcode=200
thread.isTimeout=True
thread.__del__()
else:
thread.printf ( "kill %s not allive" % thread._Thread_name)
else:
print "kill: no handle"
class Prueffunktionen(threading.Thread):
'''
classdocs
'''
def __init__(self, O_Parser,O_Serializer,param=None):
'''
Constructor
'''
self._Thread_name = "WrFlash"
self.stout = False
self.bInstallMlo = False
self.bInstallUboot = True
self.Uboot_Partitionen = [1]
self.bInstallKernel = True
self.Kernel_Partitionen = [3,4]
self.bInstallRootFs = True
self.RootFs_Partitionen = [5,6]
self.bInstallDataDrv = True
self.Data_Partitionen = [7]
self.bInstallLtFw = True
self.bInstallTypschildClean = True
self.bSetupConfiguration = True
self.AppMode = param
self.printf("self.AppMode %i"%self.AppMode)
self.printf("self.AppMode Param[""production""]=%i"%Param["production"])
self.printf("self.AppMode Param[""browser""]=%i"%Param["browser"])
if self.AppMode == Param["production"]:
self.printf("Contructor %s Param=production=%i" % (self._Thread_name,param))
if self.AppMode == Param["browser"]:
self.printf("Contructor %s Param=browser=%i" % (self._Thread_name,param))
self.bInstallMlo = False
self.InFertigungstring = False
self.bInstallTypschild = False
self.bDeleteKonfigDir = False
else:
self.bInstallMlo = False
self.InFertigungstring = True
self.bInstallTypschild = True
self.bDeleteKonfigDir = True
threading.Thread.__init__(self)
super(Prueffunktionen,self).__init__()
self._EventStop = threading.Event()
self.iStopTimeout = 3 # Stop Timeout bis zum Kill
self.iTimeout = 420 # Timeout bis Abbruch
self.errorcode = 200
self.isTimeout = False
self.LoginUser = "dcc"
self.LoginPassword = "dccpat22"
self.O_XmlParser = O_Parser
self.O_XML_Cmd = O_Serializer
self.O_WLAN = Wlan.Treiber()
self.s_mac=("%s"%self.O_WLAN.f_GetMACString())
self.hostIP = ("%s"%self.O_WLAN.f_GetNFSAdress())
self.O_Display = Display.Treiber()
self.O_Startschalter = StartSchalter.Treiber()
self.O_Typschild = Typschild.Treiber()
self.O_Display.setHeadlines("diagnosis tools","software update")
self.O_Display.paintDisplay()
self.O_LT = LtInterface.Treiber()
self.O_JasonCfg = JasonCfg.Treiber()
pass
def __del__(self):
'''
Destructor
'''
if self.errorcode==0:
sAbruchGrund="OK"
else:
sAbruchGrund="NOK"
self.printf("Destruktor %s" % self._Thread_name)
self.printf( "Timeout %i, self._EventStop.isSet() %i"%(self.isTimeout,self._EventStop.isSet()))
# Display bedienen
if (self.isTimeout | self._EventStop.isSet()):
#Abbruch der Funktion -> Fehler anzeigen
if self._EventStop.isSet():
sAbruchGrund="Abort"
self.O_Display.setAction(sAbruchGrund,"","")
else:
#Timeout der Funktion -> Fehler anzeigen
sAbruchGrund="Timeout"
self.O_Display.setAction(sAbruchGrund,"","")
self.O_Display.SaveLastActionOnError()
self.O_Display.setOKNOK(0)
self.O_Display.clrSelect()
print "%s"%self.O_XML_Cmd.BuildRueckgabewert(self._Thread_name,"%s %s"%(self._Thread_name,sAbruchGrund),None,self.errorcode,None)
self.O_Display.paintDisplay()
# Belegung der Prueffunktion im Parseer objekt loeschen -> Freigabe
self.O_XmlParser.AktivePrueffunktion=None
del (self.O_JasonCfg)
del (self.O_LT)
del (self.O_WLAN)
del(self.O_Startschalter)
del(self.O_Typschild)
if self.errorcode==0:
if self.AppMode == Param["browser"]:
time.sleep(5)
if subprocess.call(["sh","/etc/reboot/poweroff.sh"],shell=False)!=0:
self.printf ("sh /etc/reboot/poweroff.sh NOK\n")
else:
self.printf ("sh /etc/reboot/poweroff.sh OK\n")
pass
def stop(self):
# Thread normal beenden
self.printf("stop")
if self.isAlive():
self._EventStop.set()
# Kill-thread falls dieser thread sich nicht nach 30s beendet
for tid, tobj in threading._active.items():
if tobj is self:
thread.start_new_thread(kill,(self,self.iStopTimeout,tid))
#print "stop Ende"
pass
def run(self):
# Ablauf starten
self.printf("Ablauf starten")
print "%s"%self.O_XML_Cmd.BuildTimeout(self.iTimeout,self._Thread_name)
print "%s"%self.O_XML_Cmd.BuildPrintMainText("Software/Typschild programmieren")
# Watchdogtimer anstarten -> beendet Thread nach timeout
for tid, tobj in threading._active.items():
if tobj is self:
thread.start_new_thread(kill,(self,self.iTimeout-self.iStopTimeout-1,tid))
self.Ablauf()
self.printf("Nach Ablauf")
self.__del__()
pass
def stopped(self):
return self._EventStop.isSet()
def Ablauf(self):
self.printf("SoftwarePruefung")
print "%s"%self.O_XML_Cmd.BuildProgressbar(1)
self.O_Display.ResetLastError()
self.O_Display.setFortschritt(1)
self.O_Display.paintDisplay()
if self.bInstallMlo:
if self.InstallationMlo()!=0:
self.O_Display.SaveLastActionOnError()
self.errorcode=200
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallUboot:
if self.InstallationUboot()!=0:
self.O_Display.SaveLastActionOnError()
self.errorcode=210
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallKernel:
if self.InstallationKernel()!=0:
self.O_Display.SaveLastActionOnError()
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.errorcode=220
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallLtFw:
if self.InstallationLtFw()!=0:
self.O_Display.SaveLastActionOnError()
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.errorcode=230
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallRootFs:
if self.InstallationRootFs()!=0:
self.O_Display.SaveLastActionOnError()
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.errorcode=240
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallDataDrv:
if self.InstallationDataPartion()!=0:
self.O_Display.SaveLastActionOnError()
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.errorcode=260
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallTypschild:
if self.InstallationTypschild()!=0:
self.O_Display.SaveLastActionOnError()
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.errorcode=270
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bSetupConfiguration:
if self.SetupConfiguration()!=0:
self.O_Display.SaveLastActionOnError()
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.errorcode=280
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setOKNOK(not self.errorcode)
return self.errorcode
if self.bInstallTypschildClean:
self.InstallationTypschildClean()
self.O_Display.setActionRaw("","","")
self.O_Display.setOKNOK(1)
self.errorcode=0
self.printf("SoftwarePr\xc3\xbcfung -> Ende")
return self.errorcode
pass
def printf(self,string):
if self.stout:
print string
pass
def InstallationMlo(self):
#Ausgabe in logDatei umbiegen
# Geht nur aus u-boot heraus !!!!!
output = open ("MLO.log","w")
print >> output,"MLO flashen fuer %s\n"%self.O_WLAN.f_GetMACString()
Partition = 0
self.O_Display.setActionRaw("delete","Partition %i"%Partition,"of MLO")
print "%s"%self.O_XML_Cmd.BuildProgressbar(5)
self.O_Display.setFortschritt(5)
self.O_Display.paintDisplay()
# MLO loeschen
print >> output,"flash_eraseall /dev/mtd%i 0 0 (MLO)"%(Partition)
output.flush()
if subprocess.call(["flash_eraseall","/dev/mtd%i"%(Partition)],"0","0",stderr=output,stdout=output,shell=False)!=0:
output.close()
return 201
time.sleep(1)
# MLO flashen
print "%s"%self.O_XML_Cmd.BuildProgressbar(8)
self.O_Display.setFortschritt(8)
self.O_Display.setActionRaw("write","Partition %i"%Partition,"of MLO")
self.O_Display.paintDisplay()
print >> output,"\n\nnandwrite -p /dev/mtd%i /boot/MLO.nand\n"%(Partition)
output.flush()
if subprocess.call(["nandwrite","-p","/dev/mtd%i"%(Partition),"/boot/MLO.nand"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 202
print >> output,"\nFlashen des MLO in Partition %i OK\n"%(Partition)
output.flush()
time.sleep(1)
output.close()
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(13)
self.O_Display.setFortschritt(13)
self.O_Display.paintDisplay()
return 0
def InstallationUboot(self):
#Ausgabe in logDatei umbiegen
output = open ("U-boot.log","w")
print >> output,"U-boot flashen fuer %s\n"%self.O_WLAN.f_GetMACString()
Durchlauf = 1
for Partition in self.Uboot_Partitionen:
self.O_Display.setActionRaw("delete", "Partition %i"%Partition,"of %i.u-boot"%(Durchlauf))
print "%s"%self.O_XML_Cmd.BuildProgressbar(1+4*Durchlauf)
self.O_Display.setFortschritt(1+4*Durchlauf)
self.O_Display.paintDisplay()
# U-Boot loeschen
print >> output,"flash_eraseall /dev/mtd%i (u-boot %i)"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["flash_eraseall","/dev/mtd%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 211
time.sleep(1)
# U-Boot flashen
print "%s"%self.O_XML_Cmd.BuildProgressbar(3+4*Durchlauf)
self.O_Display.setFortschritt(3+4*Durchlauf)
self.O_Display.setActionRaw("write","Partition %i"%Partition,"of %i.u-boot"%(Durchlauf))
self.O_Display.paintDisplay()
print >> output,"\n\nnandwrite -p /dev/mtd%i /boot/u-boot.bin (u-boot %i)\n"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["nandwrite","-p","/dev/mtd%i"%(Partition),"/boot/u-boot.bin"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 212
print >> output,"\nFlashen des %i.u-boot in Partition %i OK\n"%(Durchlauf,Partition)
output.flush()
time.sleep(1)
Durchlauf+=1
output.close()
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(13)
self.O_Display.setFortschritt(13)
self.O_Display.paintDisplay()
return 0
def InstallationKernel(self):
#Ausgabe in logDatei umbiegen
output = open ("KernelFlash.log","w")
print >> output,"2 x Linux Kernel flashen fuer %s\n"%self.O_WLAN.f_GetMACString()
Durchlauf = 1
for Partition in self.Kernel_Partitionen:
self.O_Display.setActionRaw("delete","Partition %i"%Partition,"of %i.Kernel"%(Durchlauf))
print "%s"%self.O_XML_Cmd.BuildProgressbar(7+4*Durchlauf)
self.O_Display.setFortschritt(7+4*Durchlauf)
self.O_Display.paintDisplay()
# Kernel loeschen
print >> output,"flash_eraseall /dev/mtd%i (Kernel %i)"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["flash_eraseall","/dev/mtd%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 221
time.sleep(1)
# Kernel flashen
print "%s"%self.O_XML_Cmd.BuildProgressbar(10+4*Durchlauf)
self.O_Display.setFortschritt(10+4*Durchlauf)
self.O_Display.setActionRaw("write","Partition %i"%Partition,"of %i.Kernel"%(Durchlauf))
self.O_Display.paintDisplay()
print >> output,"\n\nnandwrite -p /dev/mtd%i /boot/uImage (Kernel %i)\n"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["nandwrite","-p","/dev/mtd%i"%(Partition),"/boot/uImage"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 222
print >> output,"\nFlashen des %i.Kernels in Partition %i OK\n"%(Durchlauf,Partition)
output.flush()
time.sleep(1)
Durchlauf+=1
output.close()
print "%s"%self.O_XML_Cmd.BuildProgressbar(19)
self.O_Display.setFortschritt(19)
self.O_Display.paintDisplay()
return 0
def InstallationLtFw(self):
self.O_Display.setActionRaw("LtFw","Update","")
self.O_Display.paintDisplay()
print "%s"%self.O_XML_Cmd.BuildProgressbar(20)
self.O_Display.setFortschritt(20)
#Ausgabe in logDatei umbiegen
output = open ("LtFw.log","w")
# Im Browser Mode Systemserver abschiesen !!
# sonst lässt sich bei fehlender LT-FW kein Update durchführen, da Systemserver Spannung zu Beginn des Updates abschaltet.
if self.AppMode == Param["browser"]:
if subprocess.call(["killall","SystemSrv.elf"],shell=False)!=0:
self.printf ("killall SystemSrv.elf NOK\n")
else:
self.printf ("killall SystemSrv.elf OK\n")
if not self.O_LT.UpdateLTFirmware():
print >> output,"LtFw Update Error"
output.flush()
output.close()
return 231
time.sleep(1)
print >> output,"LtFw Update OK"
output.flush()
print "%s"%self.O_XML_Cmd.BuildProgressbar(28)
self.O_Display.setFortschritt(28)
self.O_Display.paintDisplay()
output.close()
return 0
pass
def InstallationRootFs(self):
#Ausgabe in logDatei umbiegen
output = open ("rootfsFlash.log","w")
Durchlauf = 1
for Partition in self.RootFs_Partitionen:
if self.AppMode == Param["production"]:
# RootFs loeschen
self.O_Display.setActionRaw("delete","Partition %i"%(Partition),"of %i.rootfs"%(Durchlauf))
self.O_Display.paintDisplay()
print >> output,"\nPartition %i f\xc3\xbcr %i.rootfs l\xc3\xb6schen Nexo:%s"%(Partition,Durchlauf,self.O_WLAN.f_GetMACString())
print >> output,"flash_eraseall /dev/mtd%i (rootfs %i )"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["flash_eraseall","/dev/mtd%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 241
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(20+10*Durchlauf)
self.O_Display.setFortschritt(20+10*Durchlauf)
self.O_Display.paintDisplay()
# RootFs flashen
self.O_Display.setActionRaw("write","Partition %i"%(Partition),"of %i.rootfs"%(Durchlauf))
self.O_Display.paintDisplay()
#print >> output,"ubiformat /dev/mtd%i -f /Images/rootfs.ubi(rootFs %i )"%(Partition,Partition)
print >> output,"\n\nnandwrite -p /dev/mtd%i /Images/rootfs.ubi (%i.rootfs )"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["nandwrite","-p","/dev/mtd%i"%(Partition),"/Images/rootfs.ubi"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 242
print >> output,"\nFlashen in Partition %i von %i.rootfs OK\n"%(Partition,Durchlauf)
if self.AppMode == Param["browser"]:
# RootFs formatieren
self.O_Display.setActionRaw("ubiformat","partition %i"%(Partition),"of %i.rootfs"%(Durchlauf))
self.O_Display.paintDisplay()
print >> output,"\nubiformat partition %i of %i.rootfs Nexo:%s"%(Partition,Durchlauf,self.O_WLAN.f_GetMACString())
print >> output,"ubiformat /dev/mtd%i (%i.rootfs)"%(Partition,Durchlauf)
output.flush()
if subprocess.call(["ubiformat","/dev/mtd%i"%(Partition),"-f","/Images/rootfs.ubi","-y"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 243
print "%s"%self.O_XML_Cmd.BuildProgressbar(22+10*Durchlauf)
self.O_Display.setFortschritt(22+10*Durchlauf)
self.O_Display.paintDisplay()
# attach /dev/mtx
self.O_Display.setActionRaw("attach","partition %i"%(Partition),"of %i.rootfs"%(Durchlauf))
self.O_Display.paintDisplay()
print >> output,"attach partiton %i of %i.rootfs"%(Partition,Durchlauf)
output.flush()
#Attach /dev/mtdx
print >> output,"ubiattach /dev/ubi_ctrl -m %i -d %i"%(Partition,Durchlauf-1)
output.flush()
if subprocess.call(["ubiattach","/dev/ubi_ctrl","-m","%i"%(Partition),"-d","%i"%(Durchlauf-1)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 244
print "%s"%self.O_XML_Cmd.BuildProgressbar(23+Durchlauf*10)
self.O_Display.setFortschritt(23+Durchlauf*10)
self.O_Display.paintDisplay()
# Verzeichnis zum mounten anlegen
self.O_Display.setActionRaw("mkDir","/media/rootfs%i"%(Durchlauf),"")
self.O_Display.paintDisplay()
try:
os.makedirs("/media/rootfs%i" % (Durchlauf))
print >> output, ("os.makedirs /media/rootfs%i" % (Durchlauf))
output.flush()
except OSError,e:
print >> output, ("Error os.makedirs /media/rootfs%i %s" % (Durchlauf,e))
output.flush()
return 245
print "%s"%self.O_XML_Cmd.BuildProgressbar(24+Durchlauf*10)
self.O_Display.setFortschritt(24+Durchlauf*10)
self.O_Display.paintDisplay()
time.sleep(1)
# Mount ubi2_0 0_0 log, 1_0 data
self.O_Display.setActionRaw("mount","/media/rootfs%i"%(Durchlauf),"auf ubi%i"%(Durchlauf-1))
self.O_Display.paintDisplay()
print >> output,"mount -t ubifs ubi%i:rootfs /media/rootfs%i" % (Durchlauf-1,Durchlauf)
output.flush()
if subprocess.call(["mount","-t","ubifs","ubi%i:rootfs"% (Durchlauf-1), "/media/rootfs%i" % (Durchlauf)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 246
print "%s"%self.O_XML_Cmd.BuildProgressbar(25+Durchlauf*10)
self.O_Display.setFortschritt(25+Durchlauf*10)
self.O_Display.paintDisplay()
time.sleep(1)
# sync drive
self.O_Display.setActionRaw("sync","/media/rootfs%i"%(Durchlauf),"on ubi%i"%(Durchlauf-1))
self.O_Display.paintDisplay()
print >> output,"sync ubi%i:rootfs /media/rootfs%i" % (Durchlauf-1,Durchlauf)
output.flush()
if subprocess.call(["sync"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 247
time.sleep(1)
if subprocess.call(["sync"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 248
time.sleep(1)
if subprocess.call(["sync"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 249
print "%s"%self.O_XML_Cmd.BuildProgressbar(26+Durchlauf*10)
self.O_Display.setFortschritt(26+Durchlauf*10)
self.O_Display.paintDisplay()
time.sleep(1)
# UnMount ubix_0 0_0 log, 1_0 data
self.O_Display.setActionRaw("umount","/media/rootfs%i"%(Durchlauf),"on ubi%i"%(Durchlauf-1))
self.O_Display.paintDisplay()
print >> output,"umount /media/rootfs%i" % (Durchlauf)
output.flush()
if subprocess.call(["umount","/media/rootfs%i" % (Durchlauf)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 250
output.flush()
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(27+Durchlauf*10)
self.O_Display.setFortschritt(27+Durchlauf*10)
self.O_Display.paintDisplay()
# Verzeichnis rootfsx loeschen
self.O_Display.setActionRaw("rm","/media/rootfs%i"%(Durchlauf),"")
self.O_Display.paintDisplay()
try:
os.removedirs("/media/rootfs%i" % (Durchlauf))
print >> output, ("os.removedirs /media/rootfs%i" % (Durchlauf))
output.flush()
except OSError,e:
print >> output, ("Error os.removedirs /media/rootfs%i %s" % (Durchlauf,e))
output.flush()
return 251
print "%s"%self.O_XML_Cmd.BuildProgressbar(28+Durchlauf*10)
self.O_Display.setFortschritt(28+Durchlauf*10)
self.O_Display.paintDisplay()
time.sleep(1)
# detach /dev/mtx
self.O_Display.setActionRaw("detach","partition %i"%(Partition),"of %i.rootfs"%(Durchlauf))
self.O_Display.paintDisplay()
print >> output,"detach partiton %i of %i.rootfs"%(Partition,Durchlauf)
output.flush()
#detach /dev/mtdx
print >> output,"ubidetach /dev/ubi_ctrl -m %i"%(Partition)
output.flush()
if subprocess.call(["ubidetach","/dev/ubi_ctrl","-m","%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 252
print "%s"%self.O_XML_Cmd.BuildProgressbar(29+Durchlauf*10)
self.O_Display.setFortschritt(29+Durchlauf*10)
self.O_Display.paintDisplay()
print >> output,"\nflashing partition %i of %i.rootfs OK\n"%(Partition,Durchlauf)
output.flush()
print "%s"%self.O_XML_Cmd.BuildProgressbar(30+10*Durchlauf)
self.O_Display.setFortschritt(30+10*Durchlauf)
self.O_Display.paintDisplay()
time.sleep(1)
Durchlauf+=1
output.close()
return 0
def InstallationDataPartion(self):
self.O_Display.setActionRaw("delete","DataDrive","")
self.O_Display.paintDisplay()
#Ausgabe in logDatei umbiegen
output = open ("DataDrive.log","w")
# Achtung in rcs file darf data nicht eingebunden sein !!!!!!!!!!!!!!
Partition = self.Data_Partitionen[0]
# Data unmount
print >> output,"DataDrive umount f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"umount /mnt/data"
output.flush()
if subprocess.call(["umount","/mnt/data"],stderr=output,stdout=output,shell=False)!=0:
print >> output,"DataDrive umount NOK\n"
else:
print >> output,"DataDrive umount OK\n"
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(51)
self.O_Display.setFortschritt(51)
self.O_Display.paintDisplay()
#Data detach
print >> output,"DataDrive detach f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"ubidetach /dev/ubi_ctrl -m %i"%(Partition)
output.flush()
if subprocess.call(["ubidetach","/dev/ubi_ctrl","-m","%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
print >> output,"DataDrive ubidetach NOK\n"
else:
print >> output,"DataDrive ubidetach OK\n"
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(52)
self.O_Display.setFortschritt(52)
self.O_Display.paintDisplay()
# Data loeschen
print >> output,"DataDrive l\xc3\xb6schen f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"flash_eraseall /dev/mtd%i"%(Partition)
output.flush()
if subprocess.call(["flash_eraseall","/dev/mtd%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 261
time.sleep(1)
print >> output,"DataDrive l\xc3\xb6schen OK\n"
print "%s"%self.O_XML_Cmd.BuildProgressbar(54)
self.O_Display.setFortschritt(54)
self.O_Display.paintDisplay()
# Data formatieren mit ubifs
print >> output,"DataDrive ubiformat f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"ubiformat /dev/mtd%i"%(Partition)
output.flush()
if subprocess.call(["ubiformat","/dev/mtd%i"%(Partition)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 262
time.sleep(1)
print >> output,"DataDrive ubiformat OK\n"
print "%s"%self.O_XML_Cmd.BuildProgressbar(56)
self.O_Display.setFortschritt(56)
self.O_Display.paintDisplay()
# Data attach mit ubiattach
print >> output,"DataDrive ubiattach f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"ubiattach /dev/ubi_ctrl -m %i -d 2"%(Partition)
output.flush()
if subprocess.call(["ubiattach","/dev/ubi_ctrl","-m","%i"%(Partition),"-d","2"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 263
time.sleep(1)
print >> output,"DataDrive ubiattach OK\n"
print "%s"%self.O_XML_Cmd.BuildProgressbar(57)
self.O_Display.setFortschritt(57)
self.O_Display.paintDisplay()
# Data mkvolume mit ubimkvol
print >> output,"DataDrive ubimkvol f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"ubimkvol /dev/ubi2 -N data -m"
output.flush()
if subprocess.call(["ubimkvol","/dev/ubi2","-N","data","-m"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 264
time.sleep(1)
print >> output,"DataDrive ubimkvol OK\n"
print "%s"%self.O_XML_Cmd.BuildProgressbar(59)
self.O_Display.setFortschritt(59)
self.O_Display.paintDisplay()
# Data mount
print >> output,"DataDrive mount f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"mount -t ubifs ubi2:data /mnt/data"
output.flush()
if subprocess.call(["mount","-t","ubifs","ubi2:data","/mnt/data"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 265
time.sleep(1)
print >> output,"DataDrive mount OK\n"
# sync drive
self.O_Display.setActionRaw("sync","/mnt/data","")
self.O_Display.paintDisplay()
print >> output,"sync /mnt/data"
output.flush()
if subprocess.call(["sync"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 266
time.sleep(1)
if subprocess.call(["sync"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 267
time.sleep(1)
if subprocess.call(["sync"],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 268
time.sleep(1)
# Data unmount
print >> output,"DataDrive umount f\xc3\xbcr %s"%self.O_WLAN.f_GetMACString()
print >> output,"umount /mnt/data"
output.flush()
if subprocess.call(["umount","/mnt/data"],stderr=output,stdout=output,shell=False)!=0:
print >> output,"DataDrive umount NOK\n"
else:
print >> output,"DataDrive umount OK\n"
time.sleep(1)
print "%s"%self.O_XML_Cmd.BuildProgressbar(60)
self.O_Display.setFortschritt(60)
self.O_Display.paintDisplay()
output.close()
return 0
pass
def InstallationTypschild(self):
# Displaytexte anzeigen
#Ausgabe in logDatei umbiegen
output = open ("Typschild.log","w")
# Zwischenablagen fuer Daten generien
# Verzeichnis anlegen (Name=Mac-Adresse)
print "%s"%self.O_XML_Cmd.BuildProgressbar(61)
self.O_Display.setActionRaw("create","tmp folder",self.s_mac[3:])
self.O_Display.setFortschritt(61)
self.O_Display.paintDisplay()
print >> output, "Ordner /tmp/%s anlegen\n"%self.s_mac
#output.flush()
try:
os.mkdir(("/tmp/%s"%self.s_mac))
print >> output, ("os.mkdir /tmp/%s\n"%self.s_mac)
except OSError,e:
print >> output, ("Error os.mkdir /tmp/%s %s\n"%(self.s_mac,e))
output.close()
return 271
time.sleep(1)
# Dateien von Windows-Pruefrechner auf Linux VM kopieren
print "%s"%self.O_XML_Cmd.BuildProgressbar(62)
self.O_Display.setActionRaw("receive","typedata","over Telnet")
self.O_Display.setFortschritt(62)
self.O_Display.paintDisplay()
# Hierzu TelnetVerbindung zur VM Linux aufbauen
p=subprocess.Popen(["telnet",self.hostIP],stderr=output,stdout=output,stdin=subprocess.PIPE,shell=False)
if p._child_created==False:
#sys.stdout = stdout
print >> output,"Telnet-Verbindung nach %s nicht m\xc3\xb6glich !"%self.hostIP
output.close()
return 272
time.sleep(10)
print >> p.stdin, self.LoginUser
time.sleep(1)
print >> p.stdin, self.LoginPassword
time.sleep(4)
# Kopieren der Konfigdateien auf das /tmp VM-Laufwerk des NFS rootFS
if self.InFertigungstring == True:
string = "sudo cp -R /mnt/hgfs/Flash_Image/%s /usr/local/src/nfsboot/%s/tmp/" % (self.s_mac,self.O_WLAN.f_GetIPAdress())
else:
string = "sudo cp -R /mnt/hgfs/Flash_Image/%s /usr/local/src/omap/rootfs/tmp/" % self.s_mac
print >> p.stdin, string
time.sleep(1)
print >> p.stdin, self.LoginPassword
# Warten bis alles kopiert
time.sleep(5)
print >> output,"\n"+string+"\n"
output.flush()
# Telnet Verbindung zu Linux VM des Pruef-Rechner schliesen
print >> p.stdin, "exit"
time.sleep(2)
#Elektrische Typschilder im Schrauber schreiben
print "%s"%self.O_XML_Cmd.BuildProgressbar(65)
self.O_Display.setActionRaw("write", "Main typeplate","")
self.O_Display.setFortschritt(65)
self.O_Display.paintDisplay()
#Gesamttypschild aus Datei in Eeprom schreiben
print >> output,"\nGesamttypschild aus Datei in Eeprom schreiben"
output.flush()
# Typschild schreiben
if self.O_Typschild.CpyBrcTypFileToEeprom()!=True:
print >> output,"Error Gesamttypschild schreiben !\n"
output.close()
return 273
time.sleep(1)
print >> output,"Elektrische Typschilder schreiben OK\n"
output.flush()
#Ausgabe in logDatei beenden
output.close()
return 0
pass
def SetupConfiguration(self):
# Displaytexte anzeigen
#Ausgabe in logDatei umbiegen
output = open ("SetupConfig.log","w")
# MAC-ID des Schraubers pruefen
print "%s"%self.O_XML_Cmd.BuildProgressbar(67)
self.O_Display.setActionRaw("check","CRC of","EN typeplate")
self.O_Display.setFortschritt(67)
self.O_Display.paintDisplay()
sInhalt = self.O_Typschild.ReadEnStatParFromEeprom()
if self.O_Typschild.checkCRC(sInhalt) == False:
print >> output,"CRC Typschild EN %s ung\xc3\xbcltig !"%self.O_Typschild.SplitCRC(sInhalt)
self.printf("CRC Typschild EN %s ung\xc3\xbcltig !"%self.O_Typschild.SplitCRC(sInhalt))
output.close()
return 281
else:
self.printf( "CRC Typschild EN g\xc3\xbcltig %s !"%self.O_Typschild.SplitCRC(sInhalt))
print >> output,"CRC Typschild EN g\xc3\xbcltig %s !"%self.O_Typschild.SplitCRC(sInhalt)
s_Typschild_MAC=self.O_Typschild.getStatValue(sInhalt, "MAC")
print >> output,"s_Typschild_MAC=%s"%s_Typschild_MAC
self.printf( "s_Typschild_MAC=%s"%s_Typschild_MAC)
L_MAC=self.O_WLAN.f_GetMACLong()
s_nvsmap_MAC = "%012X"%(L_MAC)
print >> output,"s_nvsmap_MAC=%s"%s_nvsmap_MAC
self.printf( "s_nvsmap_MAC=%s"%s_nvsmap_MAC)
output.flush()
# Ist MAC_ID in Datei nvs_map.bin ungleich 0 ?
if L_MAC == 0:
print >> output,"MAC_ID nvsmap.bin(%s) ung\xc3\xbcltig !"%(s_nvsmap_MAC)
self.printf( "MAC_ID nvsmap.bin(%s) ung\xc3\xbcltig !"%(s_nvsmap_MAC))
output.close()
return 282
else:
self.printf( "MAC_ID (%s) in nvs_map.bin plausibel !"%s_nvsmap_MAC)
print >> output,"MAC_ID (%s) in nvs_map.bin plausibel !"%(s_nvsmap_MAC)
# Ist MAC_ID in EN-Typschild und MAC_ID in Datei nvs_map.bin identisch ?
if s_nvsmap_MAC != s_Typschild_MAC:
print >> output,"MAC_ID unterschiedlich in EN Typschild(%s) und nvsmap.bin(%s) !"%(s_Typschild_MAC,s_nvsmap_MAC)
self.printf( "MAC_ID unterschiedlich in EN Typschild(%s) und nvsmap.bin(%s) !"%(s_Typschild_MAC,s_nvsmap_MAC))
output.close()
return 283
else:
self.printf( "MAC_ID (%s) EN g\xc3\xbcltig !"%s_nvsmap_MAC)
print >> output,"MAC_ID (%s) EN g\xc3\xbcltig !"%(s_nvsmap_MAC)
Durchlauf = 1
for Partition in self.RootFs_Partitionen:
#Daten auf das zukuenftige UBI Rootfs des Schraubers kopieren
print "%s"%self.O_XML_Cmd.BuildProgressbar(60+Durchlauf*10)
self.O_Display.setActionRaw("attach","Partition %i"%(Partition),"of %i.rootfs"%(Durchlauf))
self.O_Display.setFortschritt(60+Durchlauf*10)
self.O_Display.paintDisplay()
# Hierzu Laufwerk temporaer mounten
output.flush()
print >> output,"\nZuk\xc3\xbcnftiges %i.rootfs zum ablegen der Konfigdaten auf Partition %i mounten\n"%(Durchlauf,Partition)
output.flush()
#Attach /dev/mtd4
print >> output,"ubiattach /dev/ubi_ctrl -m %i -d %i"%(Partition,Durchlauf+4)
output.flush()
if subprocess.call(["ubiattach","/dev/ubi_ctrl", "-m", "%i"%(Partition), "-d", "%i"%(Durchlauf+4)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 284
output.flush()
time.sleep(1)
# Verzeichnis zum mounten anlegen
print "%s"%self.O_XML_Cmd.BuildProgressbar(62+Durchlauf*10)
self.O_Display.setActionRaw("mkDir","/media/rootfs%i"%(Durchlauf),"")
self.O_Display.setFortschritt(62+Durchlauf*10)
self.O_Display.paintDisplay()
try:
shutil.rmtree("/media/rootfs%i"%(Durchlauf), ignore_errors=True, onerror=None)
os.makedirs("/media/rootfs%i" % (Durchlauf))
print >> output, ("os.makedirs /media/rootfs%i" % (Durchlauf))
output.flush()
except OSError,e:
print >> output, ("Error os.makedirs /media/rootfs%i %s" % (Durchlauf,e))
output.flush()
output.close()
return 285
time.sleep(1)
# Mount ubi2_0 0_0 log, 1_0 data
print "%s"%self.O_XML_Cmd.BuildProgressbar(64+Durchlauf*10)
self.O_Display.setActionRaw("mount","/media/rootfs%i"%(Durchlauf),"on ubi%i"%(Durchlauf+4))
self.O_Display.setFortschritt(64+Durchlauf*10)
self.O_Display.paintDisplay()
print >> output,"mount -t ubifs ubi%i:rootfs /media/rootfs%i" % (Durchlauf+4,Durchlauf)
output.flush()
if subprocess.call(["mount","-t","ubifs","ubi%i:rootfs"% (Durchlauf+4), "/media/rootfs%i" % (Durchlauf)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 286
time.sleep(1)
output.flush()
#WLAN NVSMap Datei vom Flash ins RootFs kopieren
print "%s"%self.O_XML_Cmd.BuildProgressbar(66+Durchlauf*10)
self.O_Display.setActionRaw("copy","nvs_map.bin","to %i.rootfs"%(Durchlauf))
self.O_Display.setFortschritt(66+Durchlauf*10)
print >> output,("f_CopyNvsMap('/media/rootfs%i/opt/ti-wireless/WL6.1.6.0.3/'" % (Durchlauf))
output.flush()
if (self.O_WLAN.f_CopyNvsMap("/media/rootfs%i/opt/ti-wireless/WL6.1.6.0.3/"%(Durchlauf))==False):
output.close()
return 287
if self.AppMode == Param["production"]:
# Daten kopieren
print "%s"%self.O_XML_Cmd.BuildProgressbar(68+Durchlauf*10)
self.O_Display.setActionRaw("copy","/config","to %i.rootfs"%(Durchlauf))
self.O_Display.setFortschritt(68+Durchlauf*10)
self.O_Display.paintDisplay()
print >> output,"cp -f -p -R /tmp/%s/config /media/rootfs%i/home/tool" % (self.s_mac,Durchlauf)
output.flush()
if subprocess.call(["cp","-f","-p","-R","/tmp/%s/config" % self.s_mac,"/media/rootfs%i/home/tool" % (Durchlauf)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 288
print "%s"%self.O_XML_Cmd.BuildProgressbar(70+Durchlauf*10)
self.O_Display.setFortschritt(70+Durchlauf*10)
print >> output,"Konfiguration (nvs_map u. SrbPrg) in %i.rootfs schreiben OK\n"%(Durchlauf)
output.flush()
time.sleep(1)
if self.AppMode == Param["browser"]:
# MFU-SrbPrg in Flash rootfs kopieren
print "%s"%self.O_XML_Cmd.BuildProgressbar(68+Durchlauf*10)
self.O_Display.setActionRaw("copy","/srbprg","to %i.rootfs"%(Durchlauf))
self.O_Display.setFortschritt(68+Durchlauf*10)
self.O_Display.paintDisplay()
print >> output,"cp -f -p -R /home/tool/config/srbprg /media/rootfs%i/home/tool/config" % (Durchlauf)
output.flush()
if subprocess.call(["cp","-f","-p","-R","/home/tool/config/srbprg","/media/rootfs%i/home/tool/config" % (Durchlauf)],stderr=output,stdout=output,shell=False)!=0:
output.close()
return 288
print "%s"%self.O_XML_Cmd.BuildProgressbar(70+Durchlauf*10)
self.O_Display.setFortschritt(70+Durchlauf*10)
print >> output,"MFU-Schraubprogamme in %i.rootfs schreiben OK\n"%(Durchlauf)
output.flush()
time.sleep(1)
# Laserwarning in guiconfig aktivieren wenn Laser verbaut
sInhalt = self.O_Typschild.ReadBrcStatParFromEeprom()
h_Typschild_Typ=self.O_Typschild.getStatValue(sInhalt, "Komponententyp")
if (h_Typschild_Typ&0x02) == 0x02:
# Laserwarning in guiconfig aktivieren wenn Laser verbaut
# guiconfig.json in pystruc konvertieren
pyjsonCfg=self.O_JasonCfg.Decode(self.O_JasonCfg.ReadFile("guiconfig","/media/rootfs%i/home/tool/config" % (Durchlauf)))
# key : value auf true setzen
self.O_JasonCfg.SetValue(pyjsonCfg, True, 'global','laserwarning')
self.O_JasonCfg.SetValue(pyjsonCfg, True, 'view','warning','forceread')
# pystruc in jason string zurueck konvertieren und in guiconfig.json speichern
self.O_JasonCfg.WriteFile(self.O_JasonCfg.Encode(pyjsonCfg),"guiconfig","/media/rootfs%i/home/tool/config" % (Durchlauf))
else:
# Laserwarning in guiconfig deaktivieren, kein Laser verbaut
# guiconfig.json in pystruc konvertieren
pyjsonCfg=self.O_JasonCfg.Decode(self.O_JasonCfg.ReadFile("guiconfig","/media/rootfs%i/home/tool/config" % (Durchlauf)))
# key : value auf true setzen
self.O_JasonCfg.SetValue(pyjsonCfg, False, 'global','laserwarning')
self.O_JasonCfg.SetValue(pyjsonCfg, False, 'view','warning','forceread')
# pystruc in jason string zurueck konvertieren und in guiconfig.json speichern
self.O_JasonCfg.WriteFile(self.O_JasonCfg.Encode(pyjsonCfg),"guiconfig","/media/rootfs%i/home/tool/config" % (Durchlauf))
time.sleep(1)
Durchlauf+=1
#Ende gut alles Gut
#Ausgabe in logDatei beenden
output.close()
return 0
pass
def InstallationTypschildClean(self): # Displaytexte anzeigen
#Ausgabe in logDatei umbiegen
output = open ("TypschildClean.log","w")
Durchlauf = 1
for Partition in self.RootFs_Partitionen:
#Umount des UBI Rootfs
print "%s"%self.O_XML_Cmd.BuildProgressbar(86+Durchlauf*4)
self.O_Display.setActionRaw("umount","/media/rootfs%i"%(Durchlauf),"")
self.O_Display.setFortschritt(86+Durchlauf*4)
self.O_Display.paintDisplay()
print >> output,"umount /media/rootfs%i" % (Durchlauf)
output.flush()
if subprocess.call(["umount","/media/rootfs%i" % (Durchlauf)],stderr=output,stdout=output,shell=False)!=0:
#output.close()
#return 204
pass
time.sleep(1)
output.flush()
#Detach des UBI Fs
print "%s"%self.O_XML_Cmd.BuildProgressbar(88+Durchlauf*4)
self.O_Display.setActionRaw("ubidetach","/media/rootfs%i"%(Durchlauf),"ubi_ctrl -m %i"%(Durchlauf+4))
self.O_Display.setFortschritt(88+Durchlauf*4)
self.O_Display.paintDisplay()
print >> output,"ubidetach /dev/ubi_ctrl -m %i"%(Durchlauf+4)
output.flush()
if subprocess.call(["ubidetach","/dev/ubi_ctrl","-m", "%i"%(Durchlauf+4)],stderr=output,stdout=output,shell=False)!=0:
#output.close()
#return 204
pass
time.sleep(1)
output.flush()
#Mountverzeichnis Laufwerk loeschen
print "%s"%self.O_XML_Cmd.BuildProgressbar(89+Durchlauf*4)
self.O_Display.setActionRaw("rmDir","/media/rootfs%i"%(Durchlauf),"")
self.O_Display.setFortschritt(89+Durchlauf*4)
self.O_Display.paintDisplay()
try:
shutil.rmtree("/media/rootfs%i"%(Durchlauf), ignore_errors=False, onerror=None)
print >> output, ("shutil.rmtree /media/rootfs%i" % (Durchlauf))
output.flush()
except OSError,e:
print >> output, ("error shutil.rmtree /media/rootfs%i %s" % (Durchlauf,e))
output.flush()
#output.close()
#return 204
time.sleep(1)
output.flush()
Durchlauf+=1
# temp/xx-xx-xx-xx Laufwerk loeschen
print "%s"%self.O_XML_Cmd.BuildProgressbar(98)
self.O_Display.setActionRaw("rmDir","/temp/...","")
self.O_Display.setFortschritt(98)
self.O_Display.paintDisplay()
try:
shutil.rmtree("/tmp/%s" % self.s_mac, ignore_errors=False, onerror=None)
print >> output, ("shutil.rmtree /tmp/%s" % self.s_mac)
output.flush()
except OSError,e:
print >> output, ("error shutil.rmtree /tmp/%s %s" % (self.s_mac,e))
output.flush()
#output.close()
#return 204
time.sleep(1)
output.flush()
if self.bDeleteKonfigDir:
#Konfig Verzeichnis des Pruefstands auf /mnt/Flash_Daten/xx-xx-xx-xx loeschen
print "%s"%self.O_XML_Cmd.BuildProgressbar(99)
self.O_Display.setActionRaw("rmDir",self.s_mac[3:],"")
self.O_Display.setFortschritt(99)
self.O_Display.paintDisplay()
# Hierzu TelnetVerbindung zum Host aufbauen
p=subprocess.Popen(["telnet",self.hostIP],stderr=output,stdout=output,stdin=subprocess.PIPE,shell=False)
if p._child_created==False:
#sys.stdout = stdout
output.close()
return 295
time.sleep(10)
print >> p.stdin, self.LoginUser
time.sleep(1)
print >> p.stdin, self.LoginPassword
time.sleep(3)
#Konfig Verzeichnis des Pruefstands auf /mnt/Flash_Daten/xx-xx-xx-xx wechseln
string = "cd /mnt/hgfs/Flash_Image"
#print >> output,string
#output.flush()
print >> p.stdin, string
time.sleep(1)
#print >> p.stdin, self.LoginPassword
#output.flush()
#time.sleep(1)
#Konfig Verzeichnis des Pruefstands auf /mnt/Flash_Daten/xx-xx-xx-xx loeschen
string = "sudo rm -r %s/*"%(self.s_mac)
#print >> output,string
#output.flush()
print >> p.stdin, string
# Warten bis alles geloescht
#output.flush()
time.sleep(1)
print >> p.stdin, self.LoginPassword
time.sleep(1)
string = "rmdir %s"%(self.s_mac)
#print >> output,string
#output.flush()
print >> p.stdin, string
# Warten bis alles geloescht
#output.flush()
time.sleep(2)
print >> p.stdin, "exit"
#print >> output,string
#output.flush()
#sys.stdout = stdout
print "%s"%self.O_XML_Cmd.BuildProgressbar(100)
self.O_Display.setActionRaw("","","")
self.O_Display.setFortschritt(100)
self.O_Display.paintDisplay()
output.flush()
#Ende gut alles Gut
#Ausgabe in logDatei beenden
output.close()
return 0
pass
def TestMenueSchreiben(self,O_Paint):
if O_Paint:
Input = ' '
while Input!= "s":
Input=O_Paint.TestfunktionsEingabe()
if Input[0] == "z":
# zuruck
return Input
O_Paint.SetTestText(["Schreibvorgang bestaetigen mit (J)"])
O_Paint.Update()
Input = ' '
while Input!= "z":
Input=O_Paint.TestfunktionsEingabe()
if Input[0] == "J":
# Schreibvorgang starten
O_Paint.AddTestTextZeile("Schreibe.....")
O_Paint.Update()
time.sleep(3)
# Platzhalter fuer Schreibfunktion
O_Paint.SetTestText(["Typschild schreiben OK"])
O_Paint.Update()
return "z"
O_Paint.Update()
O_Paint.ClearTestText()
return Input
pass
def TestMenueLesen(self,O_Paint):
if O_Paint:
O_Paint.SetTestText("Startschalter betaetigen")
O_Paint.Update()
Input = ' '
while Input!= "z":
Input=O_Paint.TestfunktionsEingabe()
O_Paint.Update()
O_Paint.Update()
O_Paint.ClearTestText()
return Input
pass
pass