Forum I Roku Informatyki UW

Zadanie 3

Page 1 of 2 1, 2  Next

Go down

Zadanie 3

Post by k1391 on Sun Apr 29, 2012 5:19 pm

Mam problem z programem sox (przynajmniej tak mi się wydaje Wink ). Mam na razie w nadajnik.c taki kawałek kodu:

while(fgets(buffer, PSIZE + 1, stdin) != NULL){ /* PSIZE = 512 */
strncpy(message, buffer, PSIZE);
length = strnlen(message, PSIZE);
puts(message);
}

kompiluję i odpalam w ten sposób:

sox -v -5.0 -S "01 - Welcome To The Jungle.mp3" -r 44100 -b 16 -e signed-integer -c 2 -t raw - | pv -q -L $((44100*4)) | ./nadajnik -a 0.0.0.0 | play -t raw -c 2 -r 44100 -b 16 -e signed-integer --buffer 32768

i to, co wydobywa się z moich głośników to niestety nie muzyka Guns&Roses tylko jakieś szumy i bzyknięcia Crying or Very sad

Wiecie, czy mam jakoś źle skonfigurowany program sox, czy gdzieś indziej jest błąd?

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Zadanie 3

Post by kw on Mon Apr 30, 2012 2:02 am

puts dodaje znak nowej lini na koniec.

kw

Liczba postów : 62
Join date : 2010-11-25

View user profile

Back to top Go down

Re: Zadanie 3

Post by k1391 on Mon Apr 30, 2012 11:14 am

A co mogę zamiast tego użyć? Jak robię printf("%s", message); to też jest taki sam efekt, a printf chyba znaku '\n' sam nie dodaje?

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Zadanie 3

Post by Krzyszcz on Mon Apr 30, 2012 8:01 pm

Nie doszedłem do tego etapu jeszcze, ale z tego co wiem fputs nie dodaje \n.

Czy ktoś może wie, czy subscriber multicastu może tak zrobić connect na odpowiednim sockecie, żeby nie przychodziło do niego nic poza tym? Czy też to musi być jakieś oszustwo, np. connect do samego siebie, a multicast, do którego się zapisał, i tak przyjdzie..?

Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by kw on Mon Apr 30, 2012 9:48 pm

printf w takiej formie nie wypisze null bajtu. Dlaczego nie wczytywać i wypisywać bajt po bajcie?

kw

Liczba postów : 62
Join date : 2010-11-25

View user profile

Back to top Go down

Re: Zadanie 3

Post by kutino on Mon Apr 30, 2012 10:37 pm

polecam użycie do stdin fread, a do stdout fwrite. u mnie działa.

kutino

Liczba postów : 38
Join date : 2010-11-08

View user profile

Back to top Go down

Re: Zadanie 3

Post by Wiezzel on Tue May 01, 2012 12:21 am

Jeśli użytkownik podłączy się tam np. programem Telnet, powinien zobaczyć prosty tekstowy interfejs, w którym za pomocą strzałek góra/dół można zmieniać stacje (bez konieczności wciskania Entera)

Czy ktoś ma dobry pomysł, jak to zrealizować? Próbowałem użyć ncurses z przekierowanym wejściem/wyjściem na gniazdko TCP, ale to generalnie nie działa. Próba przełączenia terminala telnetu w tryb raw albo cbreak skutkuje zmianą trybu terminala maszyny, na której jest uruchomiony proces odbiornika a nie maszyny łączącej się przez telnet. Sad

P.S. Używania tcsetattr z termios.h nie uważam za dobry pomysł (chociaż to na razie jedyny działający sposób, jaki wymyśliłem).

Wiezzel

Liczba postów : 18
Join date : 2010-11-24

View user profile

Back to top Go down

Re: Zadanie 3

Post by Krzyszcz on Tue May 01, 2012 7:10 pm

Czy pojedyncze read na UDP może zwrócić więcej niż jedną paczkę za jednym powrotem?

Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by k1391 on Thu May 03, 2012 12:24 pm

A tak zupełnie z innej beczki: jakie są kryteria zaliczenia labów? I czy do zaliczenia w II terminie SIKu muszę mieć zaliczone laby?

k1391

Liczba postów : 108
Join date : 2010-11-17

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Thu May 03, 2012 5:57 pm

Może ktoś napisać w jaki sposób zrobić ten graficzny interfejs albo chociaż dać jakiś przydatny link, bo ja już nie mam pomysłu. I czy w ogóle ten interfejs ma dawać możliwość przełączania aktualnie grającego nadajnika czy to ma być jakaś atrapa?

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Wiezzel on Thu May 03, 2012 6:05 pm

Kilka przydatnych sekwencji do sterowania terminalem:

http://ascii-table.com/ansi-escape-sequences-vt-100.php

Opcja ECHO telnetu:

http://tools.ietf.org/html/rfc857

Opcja SUPPRESS-GO-AHEAD telnetu:

http://tools.ietf.org/html/rfc858

Aby korzystać z predefiniowanych stałych telnetowych (IAC, WILL, ECHO etc.) trzeba załączyć nagłówek:
Code:
#include <arpa/telnet.h>

Wiezzel

Liczba postów : 18
Join date : 2010-11-24

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Thu May 03, 2012 6:35 pm

Wielkie dzięki.

EDIT:
Powtórzę pytanie z posta wyżej. Czy poprzez interfejs można zmieniać aktualnie grającą stację czy to ma być tylko atrapa?

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Wiezzel on Thu May 03, 2012 6:53 pm

Z tego co rozumiem to tak. Kiedy użytkownik naciska strzałkę w górę, to zaczyna grać poprzednia stacja a kiedy naciska strzałkę w dół to następna.

Wiezzel

Liczba postów : 18
Join date : 2010-11-24

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Thu May 03, 2012 6:56 pm

Ok, czyli będzie trochę więcej zabawy. Jeszcze raz dzięki.

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Fri May 04, 2012 2:23 pm

Niestety mam duże problemy z tym interfejsem.
Jak wysłać sekwencję "escape", żeby Telnet ją dobrze zinterpretował?
Próbuję to robić w ten sposób: wpisuję do tablicy kolejno znaki sekwensji i ją wysyłam. Jednak w Telneci pokazują się tylko krzaczki.

I czy można jakoś zablokować wpisywanie znaków w Telnecie, a pozostawić tylko poruszanie strzałkami.

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by marcinek on Fri May 04, 2012 5:45 pm


marcinek

Liczba postów : 35
Join date : 2010-10-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by saephir on Sun May 06, 2012 11:43 pm

Moim zdaniem telnet należy przełączyć w character mode, żeby to działało Smile

[EDIT]
Nie kumałem dostatecznie protokołu telnet, są magiczne sekwencje kontrolne, które można wysłać do klienta telnetu: jak 255-251-3, która powoduje przełączenie właśnie w ten tryb.

A co do aktywności na forum zadania, to błagam...
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Zadanie 3

Post by Wiezzel on Mon May 07, 2012 12:24 am

Wydaje mi się, że raczej 255 253 1, bo to ma być IAC DO SUPPRESS-GO-AHEAD a nie IAC WILL SUPPRESS-GO-AHEAD.

Wiezzel

Liczba postów : 18
Join date : 2010-11-24

View user profile

Back to top Go down

Re: Zadanie 3

Post by Heniek on Mon May 07, 2012 2:58 pm

Mógłby ktoś powiedzieć jak można sensownie i w miarę prosto zrobić buforowanie, bo czytając forum na moodlu sam już nie wiem co jest dobrze.

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by saephir on Mon May 07, 2012 6:26 pm

Szybko&prosto: tablica cykliczna, dla której trzymasz dodatkowo offset - numer pierwszego pakietu w buforze. NUMER_PAKIETU % ROZMIAR_BUFORA wyznacza pozycję w tablicy. Gdy do tablicy trafiają nowe dane, nadpisujemy stare.
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Zadanie 3

Post by Heniek on Tue May 08, 2012 12:54 am

A te stare wysyłamy na wyjście czy po prostu gubimy?

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Tue May 08, 2012 7:11 pm

Dealer's choice
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by saephir on Tue May 08, 2012 7:39 pm

Dzisiaj na labie u Janowskiej (były 3 osoby) dowiedziałem się, że najprawdopodobniej będziemy oddawać osobiście aplikacje na następnych zajęciach (ewentualnie na jeszcze następnych), także z pewnością będzie duża dowolność.
Nie jest to trudne do przewidzenia Razz

Zasadniczy cel jest taki, żeby grała muzyka i była jakaś retransmisja, mniej lub bardziej skuteczna.
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Zadanie 3

Post by Heniek on Wed May 09, 2012 12:09 am

Męczę się już z tym. Dostaje na socket znak z telnetu. Może ktoś powiedzieć jak sprawdzić, czy wciśnięto znak "Strzałka w górę/dół"

Heniek

Liczba postów : 329
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Wiezzel on Wed May 09, 2012 12:15 am

Góra: Esc[A
Dół" Esc[B

Wiezzel

Liczba postów : 18
Join date : 2010-11-24

View user profile

Back to top Go down

Re: Zadanie 3

Post by Sponsored content


Sponsored content


Back to top Go down

Page 1 of 2 1, 2  Next

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum