Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 240846 (2282)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Mcisend$ und Prozessorauslastung
Thomas Ungerböck
| Datum:21.09.02 10:48 (Kerzenlicht@chello.at) |
Hallo Profanforum Wenn ich ein Mp3 Titel mit
    @mcisend$("Open Waterbaby.mp3 TYPE MPEGVIDEO ALIAS Sound")
    @mcisend$("Play Sound")
abspiele und nacher wieder schließe
    @mcisend$("Close Sound")
steigt die Prozessorauslastung bei mir auf 75% komisch aber während der Wiedergabe zwischen 5 und 15% (Gibts bei mir normalerweise nicht). Spiel ich das selbe Lied als Wave ab gibts so eine seltsame Prozessorauslastung nicht. Irgendwas stimmt da nicht. Liegts an meiner Soundkarte oder bringt das der Mci Befehl in Zusammenhang mit Mp3 mitsich. Oder liegts an CpuWatch (Tool bei Prffellow) das mir die Prozessorauslastung mitteilt, oder an irgeneinem Treiber. Kann sonst normal Mp3 abspielen auf meinem Pc. Vielleicht weiß wer Bescheid Gruß Thomas Ps: Die Suchfunktion im Forum funktioniert auch nicht mehr!
Martin Pohl
| Datum:21.09.02 11:15 (martin_pohl@msn.com) |
Hallo, Thomas! Die Prozessorauslastung nach dem Schließen der MP3 verbinde ich mit dem Wiederfreigeben der benutzten Resourcen. Wenn du die MP3 öffnest wird sie im Speicher ja erst decodiert. Nach dem Schließen muss der Speicher wieder geleert werden. Dadurch kann es zu einer kurzweilig andauernden hohen Prozessorauslastung kommen.
Thomas Ungerböck
| Datum:21.09.02 11:31 (Kerzenlicht@chello.at) |
Hallo Martin Wenns nur kurz wäre hätt ich ja kein Problem damit, aber die Prozessorauslastug bleibt bei 75% bis zum Windowsneustart. Hätt ich fast vergessen: Habe Win Me, Profan 7,5 und meine 1500 MHz sollten auch nicht so leicht ins Schwitzen kommen. Gruß Thomas
Martin Pohl
| Datum:21.09.02 13:04 (martin_pohl@msn.com) |
Das ist allerdings schon seltsam. Steht das Lesen und schließen der MP3 in einer Endlosschleife? Oder wird danach eine Schleife aufgerufen, die nicht beendet wird? Wird das Programm auch richtig beendet?
Thomas Ungerböck
| Datum:21.09.02 14:38 (Kerzenlicht@chello.at) |
Hallo Hier nochmal ganz genau: Die Prozessorauslastung befindet sich nach dem Windowsstart bei ca. 25%. Beim Abspielen eines Mp3 Songs via Mci steigt die Prozessorauslastung ganz kurz und sinkt dann auf 5 -15%(und bleibt dort während der Wiedergabe). Nach @mcisend$("Close Sound") steigt die Prozessorauslastung auf 75% und bleibt dort bis ich entweder den Pc abschalt oder ich wieder ein Mp3 via Mci abspiele (Egal ob jetzt im selben Programm oder ob ich es schließen tu und wieder neustarte, es bleibt immer das selbe). Ich denk das alles richtig beendet wurde. Hab hier mal einen kleinen Quellcode zum Testen auf die Schnelle zusammengebastelt daher auch nicht sehr anspruchsvoll:
    'Zentriert das Fenster: @CreateWindow(%Hwnd,"Text",@ZX(X%),@ZY(Y%),X%,Y%)
      Def @ZX(1) @Div(@Sub(%MaxX,@%(1)),2)
      Def @ZY(1) @Div(@Sub(%MaxY,@%(1)),2)
    SetTrueColor 1

    Declare Pfad$,Datei$,Dummylistbox&,Anzahl%,Zeile%,Lied$
    Zeile%=90
    Proc Ende
    Parameters Fehler%
    Case Fehler%=1:@MessageBox("Keine Mp3 Datei gefunden","Fehler",0)
    @DestroyWindow(Dummylistbox&)
    Case @Neq$(Lied$,""):@Mcisend$("Close Sound")
    End
    Endproc

    Proc Titelauswahl
    Zeile%=0
    Whilenot Zeile%
      Zeile%=@Val(@Input$("Welcher Titel soll abgespielt werden?","Titelauswahl",""))
    	Case @Or(Zeile%=0,Zeile%>Anzahl%):Return
    	Case @Neq$(Lied$,""):mcisend$("Close Sound")
      Lied$=@Add$(Chr$(34),@Add$(@Getstring$(Dummylistbox&,Zeile%-1),Chr$(34)))
    	Lied$=@Add$("OPEN ",@Add$(Lied$," TYPE MPEGVIDEO ALIAS Sound"))
    	@MCISend$(Lied$)
    	@mcisend$("PLAY Sound")
    Wend
    Endproc

    Window @Zx(640),@Zy(480)-640,480
    Cls 10525596
    TextColor 1655073,-1
    UseFont "Abduction",30,15,1,0,0
    Drawtext 230,20,"Playsound"
    UseFont "Abduction",17,0,0,1,0
    Drawtext 220,50,"Von Thomas Ungerböck"

    Pfad$=@ChooseDir$("Verzeichnis wählen:")
    Case Pfad$="":End
    Chdir Pfad$

    Dummylistbox&=@CreateSortedListBox(%Hwnd,"",0,0,0,0)
    @Showwindow(Dummylistbox&,0)

    Datei$=@FindFirst$("*.Mp3")
    Case %IoResult:Ende 1
    @AddString(Dummylistbox&,Datei$)
    Whilenot %IoResult
      Datei$=FindNext$()
      Case %IoResult:Break
      @AddString(Dummylistbox&,Datei$)
    Wend

    Anzahl%=@SendMessage(Dummylistbox&,$018B,0,0)
    UseFont "Courier",20,10,0,0,0
    Whileloop Anzahl%
      Drawtext 40,Zeile%,@Add$(@Format$("00"":",&Loop),@GetString$(Dummylistbox&,&Loop-1))

    	Zeile%=Zeile%+25
    Wend

    While 1
      Waitinput
    If %Scankey=27
      Ende
    Elseif %Scankey=13
      Titelauswahl
    Endif
    Wend
Jörg Sellmeyer
| Datum:21.09.02 17:02 (joerse@gmx.de) |
Hallo Thomas, In Deinem Code wird das X (Schließen) in der Titelzeile nicht abgefangen. Füg' mal usermessages 16 am Anfang ein und If %umessage=16 an den Anfang Deiner If-Abfrage. Evtl. mußt Du noch checken, ob wirklich jeder Benutzerabruch im Programm von Deiner Ende-Prozedur aufgelöst wird. Gruß Jörg
Thomas Ungerböck
| Datum:21.09.02 18:10 (Kerzenlicht@chello.at) |
Hallo Hab den Quelltext eigentlich für Testzwecke geschrieben um zu sehen wie es aussieht wenn ich mehrere Mp3 Dateien nacheinander öffnen und schließen tu. Aber es hat sich nichts geändert. Bei Abbruch über Esc wird das Prog ordnungsgemäß beendet (habs mit Beep überprüft). Hab auch probiert nach der Zeile Case @Neq$(Lied$,""):mcisend$("Close Sound") noch ein Waitinput rangehäng und bei mir ists schon wieder das mit der Prozessorauslastung auf 75% bis ich eine Eingabe tätige und der nächste Titel abgespielt wird. Also hats mit mcisend$("Close Sound") zu tun. Nachdem hier keiner mein Problem wirklich nachvollziehen kann und ich eigentlich im Forum noch nichts drüber gefunden hab glaub ich da hats irgenwas mit meiner Soundkarte oder irgend einen Treiber. Gruß Thomas
Gerd Telzerow
| Datum:21.09.02 21:28 (GTelzerow@T-Online.de) |
Hallo Thomas, bei mir ist alles Ok beim abspiele 2% und nach dem schließe wieder 0% Aber win 2000 Mein TIPP du solltest dein Programm Richtig beenden. Nicht mit Ende sondern mit End Mfg Gerd
Gerd Telzerow
| Datum:21.09.02 21:45 (GTelzerow@T-Online.de) |
Hallo, zur Info -> PlaySound und der @MCISend$ bei (*.MID;*.RMI) unterstützen keine langen Dateinamen unter "win 2000" gerade getestet, also nur 16 Bit Befehle, der Programm-Pfad ist nicht betroffen! unten ein Beispiel wie ich es machen würde. Der Pfad der Datei2$ sollte natürlich der Pfad deines Programms sein Declare Datei1$,Datei2$ Print "Test" Let Datei1$= @LoadFile$("ÖFFNE","WAV-Dateien|*.WAV|MIDI-Dateien|*.MID;*.RMI") If @Equ$(@Upper$(@Right$(Datei1$,3)),"WAV") Let Datei2$="C:\Gerd.wav" COPY Datei1$ > Datei2$ PlaySound Datei2$,0 Else Let Datei2$="C:\Gerd.mid" COPY Datei1$ > Datei2$ Let Datei2$=@ADD$(@ADD$("OPEN ",Datei2$)," TYPE SEQUENCER ALIAS MIDI") @MCISend$(Datei2$) @MCISend$("PLAY MIDI")? Case %MCIError: Print "Fehler: ",Datei2$ Waitinput @MCISend$("CLOSE MIDI") Endif End Mfg Gerd
Thomas Ungerböck
| Datum: 27.09.02 22:01 (Kerzenlicht@Chello.at) |
Hallo nochmal Danke für eure zahlreichen Antworten, bin auch schon dem Rätsel auf die Spur gekommen. Starte ich den oben geposteten Quelltext ohne Cpu-Watch, spiel ein paar Songs ab und schließe das Programm. Anschließend starte ich Cpu-Watch und siehe da, Prozessorauslastung normal. Starte ich das Programm anschließend mit Cpu-Watch und schließe das Programm, erhöhte Cpu-Auslastung. Da hat mir doch Cpu-Watch die ganze Zeit was vorgegaukelt. Schöne Wochenendgrüße, Thomas

| Zurück zur Übersicht