Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 240846 (2282)
  Suchen
 Zurück zur Übersicht
 AutorThema: Mcisend$ und Prozessorauslastung
Thomas Ungerböck
Datum:21.09.02 10:48 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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