prinf("\a");

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Horus-der-Falke
Beiträge: 6
Registriert: So Jul 29, 2012 4:37 pm

prinf("\a");

Beitrag von Horus-der-Falke » So Jul 29, 2012 6:00 pm

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

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: prinf("\a");

Beitrag von cloidnerux » So Jul 29, 2012 7:04 pm

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
Redundanz macht wiederholen unnötig.
quod erat expectandum

Horus-der-Falke
Beiträge: 6
Registriert: So Jul 29, 2012 4:37 pm

Re: prinf("\a");

Beitrag von Horus-der-Falke » So Jul 29, 2012 9:19 pm

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!

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: prinf("\a");

Beitrag von cloidnerux » So Jul 29, 2012 9:38 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Fisherman
Beiträge: 84
Registriert: Mi Jun 06, 2012 4:53 am
Wohnort: 127.0.0.1

Re: prinf("\a");

Beitrag von Fisherman » So Jul 29, 2012 9:52 pm

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
There is no place like 127.0.0.1

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: prinf("\a");

Beitrag von cloidnerux » So Jul 29, 2012 10:24 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: prinf("\a");

Beitrag von Xin » Mo Jul 30, 2012 9:13 am

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten