Beiträge von Swingi

    Hallo zusammen


    Seit Tagen kämpfe ich schon mit diesem Fehler. Ich habe lokal auf der Dreambox eine Bild-Datei die sich alle 100ms oder schneller aktualisiert. Ich möchte nun diese auf einem Screen anzeigen lassen und so schnell es geht aktualisieren. Dies geschieht mit ePicLoad und läuft eigentlich super. Ich kriege ein flüssiges Bild hin! Bis die Kiste nach 2,5 Minuten abstürzt. GSoD! (Green Screen of Death)


    Fehler:
    ([Failure instance: Traceback (failure with no frames): : [Errno 24] Too many open files: /......'])


    Es scheint so als ob ePicLoad das Bild nach dem Lesen nicht mehr richtig schliesst! Ich habe in der Konsole die Anzahl der offenen Dateien ausgegeben und der Zähler steigt beim Laden der Bilder ins Unermessliche!


    Folgender Code habe ich dafür geschrieben:




    Ich habe tausende von Plugins untersucht, wie sie die Bilder laden und ich kann leider keinen Unterschied erkennen. Ich habe viel experimentiert, doch schlussendlich hat nichts genützt. Könnte das allenfalls ein Fehler von Enigma sein?


    Gruss

    Also, meine Lösung soweit.


    Python
    from enigma import eServiceReference
    
    
    self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
    
    
    sref = eServiceReference(4097, 0,"/pfad/zur/datei.mp3")
    self.session.nav.playService(sref)



    Code
    def __onClose(self):
    	self.session.nav.playService(self.oldService)



    Diese Lösung funktioniert eigentlich schon, aber sie beendet das Fernsehprogramm, da ja der Service geändert hat. Klar setze ich den Service wieder zurück, aber das ganze ist in meinen Augen unschön. Kann man das mp3 nicht irgendwie mit der Tonausgabe des aktuellen Senders mischen/überblenden? Gibt es keine andere Variante um das mp3 abzuspielen?

    Hallo zusammen


    Ich empfange im Python-Plugin den Stream einer Bild-Datei (PNG oder JPG). Nun will ich dieses Bild auf einem Dialog anzeigen. Wenn ich den Inhalt zuerst in einer Datei speichere und dann via LoadPixmap(datei) lade, geht das wunderbar.


    Code
    file = open("receivedImage.jpg", "w")
    file.write(imageString)
    file.close()


    Code
    def loadImage(self, filePath):
    	ptr = LoadPixmap(filePath)
    	if ptr is None:
    		ptr = LoadPixmap("/default.png")
    	if ptr is not None:
    		self["img"].instance.setPixmap(ptr.__deref__())


    Kann mir jemand helfen wie ich anstatt mit LoadPixmap(xy) das Bild selber erstellen kann?


    PS: Ist das wirklich so dass einfach keine gescheite Dokumentation besteht? Kenne momentan nur http://dream.reichholf.net/pydoc/html/index.html

    Hallo zusammen


    Ich habe gestern den ganzen Tag nach einer Möglichkeit gesucht, eine Datei (mp3 oder so) aus einem python Plugin abzuspielen oder ein einfaches Tonsignal auszugeben, welches den Benutzer über eine Meldung am Bildschirm aufmerksam macht. Ich denke dass dies bei einer Dreambox doch ohne Probleme möglich sein sollte oder liege ich da falsch?


    Der einzige halbwegs brauchbare Ansatz war der MediaPlayer. Bei der Playlist hat man die Möglichkeit ein File hinzuzufügen, braucht dafür aber eine "serviceref", etc und da stockts bei mir bereits.


    Hat das jemand schon gemacht und könnte mir ein paar gute Tipps geben?
    Vielen Dank!

    Vielen Dank für die Antwort


    Mein Code ist bereits ein Plug-In und die Session habe ich auch schon und das funktioniert eigentlich sehr gut. Habe die Session jetzt so übergeben wie in deinem Code-Beispiel.


    Es gibt keine MessageBox/ChoiceBox? In meinem enigma2 Ordner sind diese jedoch vorhanden. (Screens.MessageBox, Screens.ChoiceBox, Screens.InputBox) Und sie funktionieren auch bestens, bis auf die ChoiceBox.


    Code
    class InfoProt(Protocol):
    	def showInformation(self, message):
    		self.session.open(MessageBox, str(message))   # Funktioniert
    		self.session.openWithCallback(self.answer, InputBox, title="Gib etwas ein.", windowTitle="MyInputBox")   # Funktioniert
    		self.session.openWithCallback(self.answer, ChoiceBox, title="Heute?", list=[(_("Ja"), "yes"), (_("Nein"), "no")])   # Funktioniert NICHT
    
    
    	def answer(self, ret):
    		print ret


    Alle Dialoge werden ohne Probleme angezeigt, nur bei der ChoiceBox wird die Antwort-Funktion "answer(self, rect)" NIE aufgerufen!?! Bei der InputBox funktioniert dies wunder bar.


    Irgendwelche Ideen?

    Hallo zusammen


    Ich bin ziemlich neu auf diesem Gebiet und versuche einen TCP Server in python zu implementieren um den Benutzer auf gewisse Ereignisse zu informieren oder nach etwas zu fragen. Ich arbeite mit dem "reactor" und verknüpfe einen Port mit einer Protokoll-Klasse (twisted.internet.protocol).


    server.py

    Python
    from Protocol import InfoProt
    
    
    ...
    factory = Factory()
    factory.protocol = InfoProt
    listener = reactor.listenTCP(port, factory, interface = ip)
    ...



    protocol.py

    Code
    class InfoProt(Protocol):
    	def dataReceived(self, data):
    		try:
    			# Hier soll eine ChoiceBox angezeigt werden
    			???
    			# Die Antwort soll dann zurück geschickt werden
    			self.transport.write("The answer was xxx!\n") ???
    		except Exception, e:
    			print e



    Hat mir jemand einen kleinen Hinweis wie ich das am besten anstellen könnte. Für die ChoiceBox fehlt mir die "session" Referenz. Ich könnte diese natürlich über globale Objektvariablen übergeben, aber ich finde diese Variante nicht besonders schön.


    Und für die ChoiceBox müsste ich eine Callback-Methode für die Antwort verwenden. Wie bekomme ich hier die Referenz auf das Objekt "self" um die Antwort zu senden?


    Vielen Dank im voraus