thof Napisano Październik 16, 2011 Zgłoszenie Share Napisano Październik 16, 2011 Wklej kod z tego projektu w Anjucie. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Październik 16, 2011 Autor Zgłoszenie Share Napisano Październik 16, 2011 Moje niedopatrzenie przepraszam Kod jest właściwie ten sam, jedynie nad "include" są wpisy licencji i takie tam #include <unistd.h> #include <stdio.h> //#include <glib/glib.h> //ciekawe czy potrzebne mu w koncu bedzie czy nie #include <gst/gst.h> #define MNOTE_C4 261.63 #define MNOTE_D4 293.66 #define MNOTE_E4 329.63 #define MNOTE_F4 349.23 #define MNOTE_G4 392.00 #define MNOTE_A4 440.00 #define MNOTE_H4 493.88 #define MNOTE_C5 523.25 int x; main (int argc, char *argv[]) { gst_init (&argc, &argv); printf("Wybierz opcje \n"); printf("1. DMW DS (17,5 min) 2. DMW D/D (30 min) 3. Exit"); scanf("%d", x); switch(x) { case 1 : sleep(1050); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 2 : sleep(1800); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 3 : sleep(10); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; default : printf("Zla opcja"); break; } } Od razu wyprzedzę Cię morsik, na razie próbuję doprowadzić to do działania "jakkolwiek", potem zrobię tak jak mówisz to wyliczanie i całą resztę poprawiania merytorycznego Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Październik 16, 2011 Zgłoszenie Share Napisano Październik 16, 2011 Ale jak już korzystasz z przykładu to przeczytaj chociaż ze zrozumieniem cały. W http://developer.gnome.org/gnome-devel-demos/unstable/guitar-tuner.c.html.en funkcja play_sound nie jest wbudowana w bibliotekę tylko zadeklarowana w tym przykładzie: static void play_sound (gdouble frequency) { ... } Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Październik 18, 2011 Autor Zgłoszenie Share Napisano Październik 18, 2011 Dopisałem co trzeba (static void play_sound) lecz błędy wciąż te same, w konsoli wygląda to tak: src/Makefile.am:5: gstreamer-0.10_CFLAGS: non-POSIX variable name src/Makefile.am:23: gstreamer-0.10_LIBS: non-POSIX variable name Makefile.am:5: bad characters in variable name `dmw_alarmdocSHHHH5!' Makefile.am:3: gstreamer-0.10_CFLAGS: non-POSIX variable name make[1]: *** [Makefile.in] Błąd 1[/quote] MakeFile został na nowo stworzony przez Anjuta (dłuuugi strasznie) jednakże chyba najbardziej znaczące teraz linijki to: [code]GSTREAMER_CFLAGS = -pthread -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libxml2 GSTREAMER_LIBS = -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lrt -lglib-2.0 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Październik 18, 2011 Zgłoszenie Share Napisano Październik 18, 2011 Widać, że w Makefile.am używasz jakichś niestandardowych znaków. Wklej kod poprawionego programu. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Październik 21, 2011 Autor Zgłoszenie Share Napisano Październik 21, 2011 Caly widz polegana tym, ze do Makefile.am sie nie dotykalem, wszystkie pliki "typu" makefile sa robione przez Anjuta przy kompilacji, wiec wina nie jest w 100% moja (lub moze w ogole nie jest moja) Kod programu na obecna chwile wyglada tak: #include <unistd.h> #include <stdio.h> //#include <glib/glib.h> //ciekawe czy potrzebne mu w koncu bedzie czy nie #include <gst/gst.h> #define MNOTE_C4 261.63 #define MNOTE_D4 293.66 #define MNOTE_E4 329.63 #define MNOTE_F4 349.23 #define MNOTE_G4 392.00 #define MNOTE_A4 440.00 #define MNOTE_H4 493.88 #define MNOTE_C5 523.25 int x; static void play_sound (gdouble frequency) { GstElement *source, *sink; GstElement *pipeline; pipeline = gst_pipeline_new ("note"); source = gst_element_factory_make ("audiotestsrc", "source"); sink = gst_element_factory_make ("autoaudiosink", "output"); /* set frequency */ g_object_set (source, "freq", frequency, NULL); gst_bin_add_many (GST_BIN (pipeline), source, sink, NULL); gst_element_link (source, sink); gst_element_set_state (pipeline, GST_STATE_PLAYING); /* stop it after 500ms */ g_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline); } main (int argc, char *argv[]) { gst_init (&argc, &argv); printf("Wybierz opcje \n"); printf("1. DMW DS (17,5 min) 2. DMW D/D (30 min) 3. Exit"); scanf("%d", x); switch(x) { case 1 : sleep(1050); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 2 : sleep(1800); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 3 : sleep(10); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; default : printf("Zla opcja"); break; } } EDIT #1 Dorzuce na wszelki wypadek rzeczony Makefile.am http://pastebin.com/fChZe4HM Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Październik 21, 2011 Zgłoszenie Share Napisano Październik 21, 2011 Jak sie nie nauczysz debugowac i czytac podpowiedzi kompilatora to niewiele w zyciu pokodzisz. Dzialajacy kod: #include <unistd.h> #include <stdio.h> #include <gst/gst.h> #define MNOTE_C4 261.63 #define MNOTE_D4 293.66 #define MNOTE_E4 329.63 #define MNOTE_F4 349.23 #define MNOTE_G4 392.00 #define MNOTE_A4 440.00 #define MNOTE_H4 493.88 #define MNOTE_C5 523.25 #define LENGTH 500 int x; static gboolean pipeline_stop (GstElement* pipeline) { gst_element_set_state (pipeline, GST_STATE_PAUSED); g_object_unref (pipeline); return FALSE; } static void play_sound (gdouble frequency) { GstElement *source, *sink; GstElement *pipeline; pipeline = gst_pipeline_new ("note"); source = gst_element_factory_make ("audiotestsrc", "source"); sink = gst_element_factory_make ("autoaudiosink", "output"); /* set frequency */ g_object_set (source, "freq", frequency, NULL); gst_bin_add_many (GST_BIN (pipeline), source, sink, NULL); gst_element_link (source, sink); gst_element_set_state (pipeline, GST_STATE_PLAYING); /* stop it after 500ms */ g_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline); } main (int argc, char *argv[]) { gst_init (&argc, &argv); play_sound (MNOTE_E4); } Jak cos nie bedziesz dzialac to utwórz nowa prosta aplikacje gtk. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Październik 23, 2011 Autor Zgłoszenie Share Napisano Październik 23, 2011 Kod po malych poprawkach (case switch) wyglada nastepujaco #include <unistd.h> #include <stdio.h> #include <gst/gst.h> #define MNOTE_C4 261.63 #define MNOTE_D4 293.66 #define MNOTE_E4 329.63 #define MNOTE_F4 349.23 #define MNOTE_G4 392.00 #define MNOTE_A4 440.00 #define MNOTE_H4 493.88 #define MNOTE_C5 523.25 #define LENGTH 500 int x; static gboolean pipeline_stop (GstElement* pipeline) { gst_element_set_state (pipeline, GST_STATE_PAUSED); g_object_unref (pipeline); return FALSE; } static void play_sound (gdouble frequency) { GstElement *source, *sink; GstElement *pipeline; pipeline = gst_pipeline_new ("note"); source = gst_element_factory_make ("audiotestsrc", "source"); sink = gst_element_factory_make ("autoaudiosink", "output"); /* set frequency */ g_object_set (source, "freq", frequency, NULL); gst_bin_add_many (GST_BIN (pipeline), source, sink, NULL); gst_element_link (source, sink); gst_element_set_state (pipeline, GST_STATE_PLAYING); /* stop it after 500ms */ g_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline); } int main (int argc, char *argv[]) { gst_init (&argc, &argv); printf("Wybierz opcje \n"); printf("1. DMW DS (17,5 min) 2. DMW D/D (30 min) 3. Exit \n"); scanf("%d", x); switch(x) { case 1 : sleep(1050); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 2 : sleep(1800); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; case 3 : sleep(10); play_sound (MNOTE_E4); play_sound (MNOTE_E4); play_sound (MNOTE_E4); break; default : printf("Zla opcja"); break; } return 0; } Kod juz sie kompiluje i buduje (dzieki thof) Uruchamiam, no dostaje owszem liste opcji, wybieram 1, zatwierdzam i "Naruszenie Ochrony Pamieci" Nie bardzo wiem czy to moze wina scanf zle poskladanego, bowiem czepia sie go troche: /home/Subaru/dmw-alarm/src/main.c:55:1: warning: return type defaults to ‘int’ [-Wreturn-type] /home/Subaru/dmw-alarm/src/main.c:61:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat] Raczej nie brakuje mu biblioteki, bo by sie czepil o to wyraznie Dlaczego czepia sie nagle int main to dla mnie niespodzianka troche EDIT #1 Dobra, sprawa main skorygowana na: int main (int argc, char *argv[]) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Październik 23, 2011 Zgłoszenie Share Napisano Październik 23, 2011 Scanf jako argument przyjmuje wskaźnik, czyli powinno być scanf("%d", &x); Znasz stronę cplusplus.com? Jeśli nie to polecam http://www.cplusplus.com/reference/clibrary/cstdio/scanf/ 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Listopad 14, 2011 Autor Zgłoszenie Share Napisano Listopad 14, 2011 Przepraszam, ze tak pózno z odpowiedzia przybywam. Faktycznie gafe zrobilem z tym scanf, przyzwyczajenie do DS'a tam w troche innej instrukcji wypisania podaje co prawda %d dla liczb calkowitych, ale po przecinku daje normalnie zmienna bez wskaznika, to mnie zmylilo Strone znam, co niestety dobija moja gafe ze zdwojona sila T_T. Skompilowalem i juz nie wywala gadki o naruszeniu ochrony pamieci, dziekuje bardzo thof Jeszcze tylko zastanawiam sie czemu nie ma dzwieku. Myslalem, ze moze zle podpialem kabel mini-jack (ciagle go gdzies musze przepinac sobie), ale wlaczylem na VLC muzyke pierwsza z brzegu i dzwiek jest. Wedle kodu powinno 3 razy "piknac" nutke E4 a nie slysze tego. Podglosnilem nawet kolumienki na maksimum sadzac, iz moze po prostu tak cicho gra to, ale nadal cisza. Youtube, Wine, VLC nie sa uruchomione (VLC zamknalem po sprawdzeniu), totez nie widze co by jeszcze moglo jakos blokowac dzwiek. EDIT #1 Aaa momencik jest cos poprawy dodalem play_sound (MNOTE_E4); pod gst_init (&argc, &argv); i juz zagralo dlugi staly dzwiek (zapewne E4 rzeczone). Zapewne w kodzie w takim razie mam jakis blad, ze nie wygrywa tego jak nalezy. EDIT #2 Malo tego, ten dzwiek gra tak dlugo, az natrafi na kolejny play_sound (MNOTE_E4); np. po odliczeniu dziesieciu sekund z opcji #3 o_o. Moze nalozone 3 play_sound (MNOTE_E4); jeden za drugim sie jakos udusily albo zniwelowaly? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się