Seite 1 von 1
prinf("\a");
Verfasst: So Jul 29, 2012 6:00 pm
von Horus-der-Falke
Hallo alle zusammen!
Ich habe einn kleines Problem und bin schon ziemlich verzweifelt, da weder wiki, noch irgendwo im Internet in C Programmierung mir bei meinen Problem helfen konnte.
Ich versuche eine Tonausgabe in c zu schreiben um zu wissen wann das Programm die Schleifen durchlaufen hat. Aber die printf("\a") funktioniert nicht!
Mein testprogramm:
Code: Alles auswählen
#include <stdio.h>
int main()
{
printf("\a");
return 0;
}
Der PC Speaker ist angeschlossen, wenn ich beep in das Terminal eingebe kommt wie erwartet ein Ton! Jedoch wenn ich das Programm aufrufe bekomme ich keinen Ton. Ich benutze Ubuntu 12.04, kann es sein das ich eine zusätzliche Bibliothek einbinden muß? Und wenn ja welche?
Edit by cloidnerux: Code tags
Re: prinf("\a");
Verfasst: So Jul 29, 2012 7:04 pm
von cloidnerux
Ich versuche eine Tonausgabe in c zu schreiben um zu wissen wann das Programm die Schleifen durchlaufen hat
Lass es lieber.
Der PC Speaker ist angeschlossen, wenn ich beep in das Terminal eingebe kommt wie erwartet ein Ton! Jedoch wenn ich das Programm aufrufe bekomme ich keinen Ton. Ich benutze Ubuntu 12.04, kann es sein das ich eine zusätzliche Bibliothek einbinden muß? Und wenn ja welche?
Gar keine. Das Escape-Zeichen \a ist ein relikt aus lange vergangenen Zeiten und muss nicht zwangsläufig unterstützt werden, bzw es ist nicht definiert wie es gehandhabt wird.
Viele Terminals unterstützen es noch und ich habe eben mal unter Fedora 17 getestet, da ging es auch mit C.
Aber ich weiß noch, dass es unter Windows nicht funktionieren wollte und anscheinend soll das unter Ubuntu genau so sein.
Zusätzlich ist es so, dass es keine praktische Verwendung mehr besetzt. Ich kenne soweit kein Programm, das eine solche art der Tonausgabe nutzt, da es heutzutage sehr viel bessere Audio-Librarays gibt, bei denen man alle arten von mp2 oder wav abspielen kann, was für ein Feedback zum Nutzer oder als Entertainment sehr viel nützlicher ist. Willst du Mitteilungen machen wenn dein Programm irgendwo angekommen ist, gibt es einfach als Text aus. Diesen kannst du z.B auch bei einem Aufruf aus dem terminal aus in eine Datei speichern und dann kannst du in ruhe nach verfolgen, was dein Programm macht. Das geht mit dem Ton nicht.
MfG cloidnerux
Re: prinf("\a");
Verfasst: So Jul 29, 2012 9:19 pm
von Horus-der-Falke
Sorry aber ich habe keine Zeit mich 5 bis 20 Minuten vor dem Rechner zu setzten und zu warten bis die Berechnung durchgelaufen ist!
Und dann die nächsten Rekursiven Werte einzugeben.
Also ich will damit sagen das ich in der Zwischenzeit, noch etwas anderes mache möchte. Fedora habe ich auch noch auf dem Rechner, jedoch verwende ich es nicht mehr wegen der rpm Dateiverwaltung die ist zwar besser geworden ist jedoch bei neuen Programentwicklungen immer weniger genutz wird. Hin oder her nun gibt es eine andere möglichkeit in C eine Tonausgabe zu programmieren? oder C++? Jedoch kenne ich mich mit C++ momentan nicht aus!
Re: prinf("\a");
Verfasst: So Jul 29, 2012 9:38 pm
von cloidnerux
Und dann die nächsten Rekursiven Werte einzugeben.
Ich frag mich gerade wie deine Werte Rekursiv sein können, aber egal.
So wie ich das verstanden habe, wäre es doch für dich sinnvoller deine Daten in eine Datei zuschreiben(CSV oder so) und dann auszulesen? Weil wenn der User alle 20 Minuten Daten eingeben muss, ist da definitiv was falsch.
Hin oder her nun gibt es eine andere möglichkeit in C eine Tonausgabe zu programmieren? oder C++? Jedoch kenne ich mich mit C++ momentan nicht aus!
Es gibt definitiv wege, deine Frage ist doch eher, ob es einen einfachen gibt, und den gibt es nicht. Du könntest natürlich versuchen mit dem "system" Befehl eine instanz von vlc oder gstreamer dazu zu bringen einen Sound abzuspielen.
Aber generell, so wie ich dein Problem sehe, ist es sinnvoller deine Daten in eine Datei zu schreiben.
Re: prinf("\a");
Verfasst: So Jul 29, 2012 9:52 pm
von Fisherman
Naja, dachte immer hier wird einem bei seinem Problem geholfen und nicht belehrt ....
Egal hier ist eine Lösung für dein Problem bzgl. dem System Beep in C
Original C System Beep
Linux und Windows Beeps
Hoffe es hilft Dir bei deinem Problem
Gruß Fisherman
PS: und lustige Dinge mit Beeps gibt es auch :
Beep
Re: prinf("\a");
Verfasst: So Jul 29, 2012 10:24 pm
von cloidnerux
Naja, dachte immer hier wird einem bei seinem Problem geholfen und nicht belehrt ....
Es gibt 3 arten ein Problem zu "lösen": Man kann es Ignorieren, es verändern oder es lösen.
Damit ergibt sich beim "Problem lösen" auch immer die Frage, wie sinnvoll der gewählte Ansatz gibt, bzw wie sinnvoll Alternativen sind.
Wie z.B auch an deinen Links sieht, ist es nicht ganz so einfach das ganze so zu implementieren, dass es definitiv funktioniert. Hier stellt sich die frage: Gibt es nicht komplett andere Ansätze, die vlt an anderer Stelle Zeit sparen.
Ansonsten danke für diene Links.
Re: prinf("\a");
Verfasst: Mo Jul 30, 2012 9:13 am
von Xin
Horus-der-Falke hat geschrieben:Ich versuche eine Tonausgabe in c zu schreiben um zu wissen wann das Programm die Schleifen durchlaufen hat. Aber die printf("\a") funktioniert nicht!
Öffne die Konsole (KDE) und schau bei Settings->Configure Notifications. Per Default ist 'Bell in Visible Session' nichts zugeordnet: Du hörst nichts. Stell einen Sound ein und fertig.
Seitdem bimmelt es jedenfalls in meiner Konsole - vorher auch nicht.
Oder verwendest Du Gnome? Da müsste man dann da nochmal gucken.