Forum I Roku Informatyki UW


Join the forum, it's quick and easy

Forum I Roku Informatyki UW
Forum I Roku Informatyki UW
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Zadanie 3

+6
pawel14
Wiezzel
kutino
Krzyszcz
kw
k1391
10 posters

Page 1 of 2 1, 2  Next

Go down

Zadanie 3 Empty Zadanie 3

Post by k1391 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

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

puts dodaje znak nowej lini na koniec.

kw

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by k1391 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Krzyszcz 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by kw 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by kutino 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Wiezzel 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Krzyszcz 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by k1391 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by pawel14 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Wiezzel 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by pawel14 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Wiezzel 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by pawel14 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by pawel14 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

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


marcinek

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by saephir 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...
Zadanie 3 Dont-feed-the-troll
saephir
saephir

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Wiezzel 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Heniek 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by saephir 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.
saephir
saephir

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Heniek 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

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

Dealer's choice
Gricha
Gricha

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by saephir 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.
saephir
saephir

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Heniek 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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

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

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

Wiezzel

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

Back to top Go down

Zadanie 3 Empty Re: Zadanie 3

Post by Sponsored content


Sponsored content


Back to top Go down

Page 1 of 2 1, 2  Next

Back to top

- Similar topics

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