- Geri Bátyó: Megint tahó voltam – SZEMÉLYISÉGFEJLŐDÉS
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Meggyi001: Nyilvános wc-k.....még mindig hiánypótló...
- sziku69: Szólánc.
- Mr Dini: Mindent a StreamSharkról!
- GoodSpeed: AMD Ryzen 7 7700X vs AMD Ryzen 9 9900X Cinebench R23 & R24 Benchmarkokban mérve
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Meggyi001: RTX 5060 - Az új népkártya?
-
LOGOUT
Új hozzászólás Aktív témák
-
STibi_
csendes tag
Üdv!
Látom itt sistereg az ész!
Hálózati gondom van. Az a felállás, hogy egy hotelban dolgozom, ahol egy kamerás renszer van. Ez még ok, de itt a recepción van 2 is, ami az én pofámat veszi.A gépet netről el lehet érni, még én állítottam be a routert, hogy milyen portokat kell a kamerás gépre forwardolni. A ''külső'' nézetet valami böngészös ActiveX vezérli. Az volna a kérdésem, hogy hogyan tudnám figyelni én a megadott portokat, hogy felcsatlakozott-e valaki kintről? (Delphi or API please...) Ha van erre valami kész progi, az is jó, legalább nem kell pötyögnöm, csak ha én írom, akkor el tudom ütni az időt a halálos éjszakai műszakban. Nézegettem a Help-et, de nem jutottam vele előre. Ha valaki tud pár utasítást, abból már ki tudok indulni, tudom merre keressek/menjek tovább.
THX -
emitter
őstag
válasz
Jester01 #1596 üzenetére
de akkor elvileg a nyers fordítatlan SDL-libraryban benne kéne legyen, nem? mint nyers szövegfájlban - pedig azt is átnéztem, és semmit nem találtam benne..
akkor ez így reménytelen?
írok a fejlesztőknek, h mi van már
egyébként nem tudom elképzelni, h mivel openszorsz, ne lenne meg valahol a fv forrása.. csakhogy eddig sehol nem találtam -
Jester01
veterán
válasz
emitter #1595 üzenetére
Azzal nem mész semmire, neked a library forrása kell. Egyébként a /usr/lib/libSDL_mixer.so.x.x fájlban lesz, de az nem a forráskód. Ha függvénykönyvtárat használsz, akkor az ahhoz tartozó headerben csak a deklarációk (prototípusok) vannak, a definíciók (implementáció) a könyvtárba van belefordítva. A könyvtár forráskódja, (amibõl a library készül) nem kell ahhoz, hogy magát a libraryt másik program használja. Ezért nem is szokás felrakni. Csak azoknak kell, akik magát a libraryt akarják újrafordítani (fejlesztõk).
-
emitter
őstag
válasz
Jester01 #1594 üzenetére
kerestem, de nem nagyon találtam.. Krusaderrel végignéztem a /usr tartalmát fájlbéli kereséssel a fv nevére - semmi eredmény (kivéve az SDL_mixer.h extern-es sora)
amikor fordítom így, hogy:
gcc -o music_2 music_2.c -Wall -lncurses -lSDL_mixer
itt a ''-lSDL_mixer'' hova hivatkozik? Már csak ez az utolsó esély arra, hogy ebben van valahol a definíció, mert semelyik include nem húz be definíciós fájlt, másra meg nem tudok gondolni... -
emitter
őstag
vszeg azert mert extern..
az extern arra valo hogy megadod a fv interfeszet, es jelzed hogy ennek nem lesz implementacioja a forrasaid kozott. viszont a forrasodban ettol fuggetlenul tudod hasznalni.
és ez mit jelent az én esetemben? szóval van egy ilyen extern fv:
extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS(const char *file);
ezt hol definiálhatják? mert működik ez a fv, csak nem találom sehol a definícióját...
se includolt headerekben, máshol meg hol keressem?
tanácstalan vagyok.. -
Jester01
veterán
válasz
emitter #1588 üzenetére
Na látod ez a baj. A fordító is ezen a véleményen van, hogy neki biza senki nem árulta el mi a szösz ez a struktúra. Überbrutálnagyhekk, de meg lehet próbálni, hogy az általad beszúrt struct Mix_Music definíciót átnevezed _Mix_Music-ra, mert nem lehet tudni, hogy a library ugyanazt a struktúrát használja-e (a sok #ifdef miatt).
-
-
Jester01
veterán
válasz
emitter #1584 üzenetére
Ez most úgy látom a typedef nélküli verzió. Akkor nyilván sizeof(struct Mix_Music) kell. De valahol még mindig gáz van, hiszen pl. a Mix_PlayMusic prototípusa a fordító szerint hivatkozik a Mix_Music típusra. Szóval valamelyik headerben benne kell legyen. Keresd tovább
-
emitter
őstag
válasz
Jester01 #1583 üzenetére
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL -I /usr/local/include/SDL/
music.c: In function 'main':
music.c:83: warning: passing argument 1 of 'Mix_PlayMusic' from incompatible pointer type
music.c: In function 'LoadMusic':
music.c:136: warning: assignment from incompatible pointer type
music.c: In function 'myMix_LoadMUS_RW':
music.c:168: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
music.c:168: warning: assignment from incompatible pointer type
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$
pedig leszedtem a csomag SDL-t, majd újraraktam forrásból a patchelt SDL-t, és forgattam volna a kódomat... [link] -
emitter
őstag
válasz
Jester01 #1580 üzenetére
nekem pedig nem jó
mind1, leszedtem libsdl-mixer1.2-dev csomagot, mindenhol beírtam egy struct-ot, elvileg jó kéne legyen, de nem:
(nem inklúdoltam a nemlétező SDL_mixer.h-t)
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
music.c:24: error: syntax error before 'Mix_MusicType'
music.c:24: warning: no semicolon at end of struct or union
music.c:50: error: syntax error before 'fading'
music.c:50: warning: type defaults to 'int' in declaration of 'fading'
music.c:50: warning: data definition has no type or storage class
music.c:54: error: syntax error before '}' token
music.c: In function 'main':
music.c:72: warning: implicit declaration of function 'Mix_OpenAudio'
music.c:72: error: 'MIX_DEFAULT_FREQUENCY' undeclared (first use in this function)
music.c:72: error: (Each undeclared identifier is reported only once
music.c:72: error: for each function it appears in.)
music.c:73: error: 'MIX_DEFAULT_FORMAT' undeclared (first use in this function)
music.c:74: error: 'MIX_DEFAULT_CHANNELS' undeclared (first use in this function)
music.c:82: warning: implicit declaration of function 'Mix_PlayMusic'
music.c:85: warning: implicit declaration of function 'Mix_PlayingMusic'
music.c:90: warning: implicit declaration of function 'Mix_CloseAudio'
music.c: In function 'LoadMusic':
music.c:135: error: 'Mix_Music' undeclared (first use in this function)
music.c:135: error: syntax error before ')' token
music.c: In function 'myMix_LoadMUS_RW':
music.c:154: warning: implicit declaration of function 'Mix_SetError'
music.c:167: error: 'Mix_Music' undeclared (first use in this function)
music.c:167: error: syntax error before ')' token
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$
-----------
ha pedig inklúdolom a nemlétező headert, akkor csak ennyit ad:
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
music.c: In function 'main':
music.c:82: warning: passing argument 1 of 'Mix_PlayMusic' from incompatible pointer type
music.c: In function 'LoadMusic':
music.c:135: warning: assignment from incompatible pointer type
music.c: In function 'myMix_LoadMUS_RW':
music.c:167: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
music.c:167: warning: assignment from incompatible pointer type
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ -
emitter
őstag
válasz
Jester01 #1574 üzenetére
mod: frissítettem a kódomat a weblapomon..
asszem megtalűltam a headert: [link]
így inklúdoltam: #include ''music.h'' (azonos könyvtárban van a music.c-vel), de hibaüzit dob, hogy akadnak a music.h fv-ei más headerekével:
gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
...
/usr/local/include/SDL/SDL_mixer.h:529: error: conflicting types for 'Mix_FadingMusic'
music.h:941: error: previous definition of 'Mix_FadingMusic' was here
/usr/local/include/SDL/SDL_mixer.h:530: error: conflicting types for 'Mix_FadingChannel'
/usr/include/SDL/SDL_mixer.h:532: error: previous declaration of 'Mix_FadingChannel' was here
/usr/local/include/SDL/SDL_mixer.h:567: error: conflicting types for 'Mix_GetChunk'
/usr/include/SDL/SDL_mixer.h:569: error: previous declaration of 'Mix_GetChunk' was here
....
stb
egy másik srác kipróbálta ugyanígy, neki nem akadtak, mi lehet a probléma?
----------------
megpróbáltam átrakni a Mix_Music definícióját a music.c kódomba:
struct Mix_Music {
Mix_MusicType type;
union {
#ifdef CMD_MUSIC
MusicCMD *cmd;
#endif
#ifdef WAV_MUSIC
WAVStream *wave;
#endif
#ifdef MOD_MUSIC
UNIMOD *module;
#endif
#ifdef MID_MUSIC
#ifdef USE_TIMIDITY_MIDI
MidiSong *midi;
#endif
#ifdef USE_NATIVE_MIDI
NativeMidiSong *nativemidi;
#endif
#endif
#ifdef OGG_MUSIC
OGG_music *ogg;
#endif
#ifdef MP3_MUSIC
SMPEG *mp3;
#endif
} data;
Mix_Fading fading;
int fade_step;
int fade_steps;
int error;
};
---
ha ezt a main elé berakom, így ahogy van, akkor jónak kéne lennie, nem? pedig nem jó, a fordító ugyanazt a hibát adja...
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o music music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
music.c: In function 'myMix_LoadMUS_RW':
music.c:165: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
[Szerkesztve] -
emitter
őstag
válasz
emitter #1565 üzenetére
hát végülis a 3 music->error-t kikommenteztem
(jó kis favágó módszerrel), a
187: music = (Mix_Music *) malloc(sizeof(Mix_Music*));
sort pedig így átartam, most lefordul, csak hang nem jön...
megkérhetnék valakit, hogy próbálja meg linuxon lefordítani, megy-e neki? [link]
thx
(kell hozzá SDL-mixer, meg -dev-files, meg asszem smpeg-lib is) -
#51736960
törölt tag
hali! egy nagyon egyszerű honlapot szeretnék összedobni:
a könyvtárstruktúra egyszerű, egyetlen oldalból (index.html) áll, továbbá ugyanebben a könyvtárban van 20 jpg file.
maga az oldal úgy nézne ki, hogy középen van egy kép és két link (next és back). a next-re megjeleníti a következő képet, a back-re az előzőt. tehát tulajdonképpen egy egyszerű képgaléria az egész.
hogyan lehetne ezt a legegyszerűbben megoldani? (nem szeretnék előre elkészített galériákat, (pl photoshop web gallery) használni)
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1564 üzenetére
hát azt meg honnan tudjam, h jók-e a headerek
egyébként igazad van, ez tényleg csak egy mutató, de a progimban is mindenhol csak ilyen mutató típusú változókat deklaráltam, szóval elvileg ezzel nem kéne porbléma legyen..
ha átírom a
187: music = (Mix_Music *) malloc(sizeof(Mix_Music));
sort
187: music = (Mix_Music *) malloc(sizeof(Mix_Music*));
-ra, akkor már nem ad hibát erre, persze a, másik 3 hiba még marad..
egyébként mit jelent az, h dereferncing pointer.. szóval a többi hibaüzi mi miatt lehet?
ja, és ha vissza akarnám szedni a patchelt SDL-mixer libet, visszaállítani a régi hivatalost, akkor mit kell csnálnom? csak simán csomagból felrakom a régit? -
KMan
őstag
Hali! turbo pascal 7.0-at szeretnek windows 2000 alatt futtatni. akarhogy probalom nem akar osszejonni. Guglizok meg minden de semmi. Help pls.
-
emitter
őstag
Fordítási hibák, valszeg én vagyok a béla, de mi a rák van ezzel
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -o mixer-music mixer-music.c -Wall -lncurses -lSDL -lSDL_mixer -I/usr/include/SDL
mixer-music.c: In function 'Mix_LoadMUS_RW2':
mixer-music.c:187: error: invalid application of 'sizeof' to incomplete type 'Mix_Music'
mixer-music.c:192: error: dereferencing pointer to incomplete type
mixer-music.c:280: error: dereferencing pointer to incomplete type
mixer-music.c:282: error: dereferencing pointer to incomplete type
a kérdéses sorok a kódomban:
187: music = (Mix_Music *) malloc(sizeof(Mix_Music));
192, 280, 282: music->error = 0;
---
megnéztem, a patchelt SDL-példakódban a MixMusic* típus így néz ki:
static Mix_Music * volatile music_playing = NULL;
ezalapján hol lehet a hiba?
köszi!
ui: mindez egy hivatalos SDL-példakódban volt..
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1559 üzenetére
no és én most mit csináljak ezzel?
music = (Mix_Music*) Mix_LoadMUS_RW(rw); // ---itt van a forditasi hiba---
ezt írtam, de ettől még éppúgy implicit deklarációra hivatkozik...
el tudnád magyarázni az utolsó link alapján, hogy a srácnak hogyan sikerült megoldani hasonló problémáját? sajna nekem nem világos a válaszokból ([link])
köszi -
emitter
őstag
válasz
Jester01 #1557 üzenetére
köszi!
egy újabb kérdés, ezt kapom fordításkor:
emitter@LAPTOP:~/Letoltesek/sdl-talk-1-examples$ gcc -Wall -lncurses -lSDL -lSDL_mixer -o mixer-demo mixer-demo.c
mixer-demo.c: In function 'LoadMusic':
mixer-demo.c:128: warning: implicit declaration of function 'Mix_LoadMUS_RW'
mixer-demo.c:128: warning: assignment makes pointer from integer without a cast
mixer-demo.c: [link]
ezt a kódrészletet, amivel pufferből mix_music-ot csinálok, itt találtam: [link]
a srácnak se működött valami miatt, de nem értettem, hogy mi is pontosan a megoldás, amit válaszoltak neki.. -
-
emitter
őstag
válasz
Jester01 #1551 üzenetére
ez alapján próbálkoztam, már működik a getch()
, csak akadtak egyéb problémák...
[link]
...
initscr();
cbreak();
do{
printw(''Pause - 'p' '');
printw(''\nResume - 'r' '');
printw(''\nStop - 's'\n'');
refresh();
do{
switch( c=getch() ){
case 'p' :
printf(''\nPaused\n'');
Mix_PauseMusic();
break;
case 's' :
printf(''\nStopped\n'');
Mix_HaltMusic();
exit(1);
break;
default :
break;
}
}
while(c!='r');
Mix_ResumeMusic();
}
while (Mix_PlayingMusic());
endwin();
...
szóval ez a kódom, de nagyon érdekes dolgokat csinál: ha 's'-t nyomok, akkor leállítja ugyan, kilép a progiból, csak:
- a promptot behúzza egy tabbal, és nem látom, amit beírok utána
- amit látatlanba írok parancsot, végrehajtja, de minden egyes kiírást eltol egy tabbal..
- ctrl+c-re sem lép ki ebből a hülyeségből, egy újabb tabbal odébbrakja a promptot
- csak exit-re lép ki a konzolból
ez mitől lehet??? -
SaNyEe
aktív tag
Üdv, kellene használható MAGYARnyelvű prolog könyv/jegyzet ami az alapoktól tanít mindent.
Létezik ilyen? Aki tud valamit írjon, THX -
tomcs
őstag
válasz
emitter #1549 üzenetére
vszeg azert mert extern..
az extern arra valo hogy megadod a fv interfeszet, es jelzed hogy ennek nem lesz implementacioja a forrasaid kozott. viszont a forrasodban ettol fuggetlenul tudod hasznalni.
mivel azert nem art, ha megis van ilyen fv, a linker meg tudni fog rola es keresni fogja, azaz forditasi (pontosabban linkelesi) hibat kapsz, ha az objektjeid kozott nem talalta meg ezt az azonositot.
tipikusan akkor kell, ha vmilyen mas nyelven akarsz megirni egy fuggvenyt, pl assemblyben, leforditod objekt file-ra, meg a projektedet is es a kettobol kapott objekt fileokat linkeled ossze.
btw headerekben egyebkent sem illik implementaciot keresni -
emitter
őstag
és egy másik kérdés
nem nagyon értek sajnos a headre-fájlokhoz, ezért fordulok ide:
van ez az sdl_mixer.h [link]
ebben pedig a mixloadmus() fv
extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS(const char *file);
viszont mixer.h a beinklúdolt többi headerjében nem igazán találom a fv definícióját... pedig szeretném megnézni, mit csinál pontosan - hol találhatom meg szerintetek ezt?
bocs ha láma a kérdés, és köszi előre is!
ui. egyébként azt akarom megtudni, melyik fv olvassa be - gondolom egy pufferből - a lejátszandó streamet, ugyanis ez az sdl (ha jól láttam) közvetlenül játsza a zenét, nem enged pufferszinten manipulálni - nekem pedig a hálózati átvitelhez pont ez kéne
mod: izé, kicsit utánajártam az előző kérdésemnekés -lncurses-sel jól efordul, viszont a getch() valami miatt nem működik
nem csinálja azt, amit kéne, még ha utána entert ütök, se..
[Szerkesztve] -
emitter
őstag
getch() miért nem működik nekem linuxon?
olvastam, hogy a curses.h-val meg lehet csinálni, de hogyan...
nekem ilyet ír ki #include ''curses.h'' mellett a getch()-re:
emitter@LAPTOP:~/sdl-talk$ gcc -Wall -lSDL -lSDL_mixer -o mixer-demo mixer-demo.c
/tmp/cc0ENjYn.o: In function `main':
mixer-demo.c.text+0x86): undefined reference to `stdscr'
mixer-demo.c.text+0x8f): undefined reference to `wgetch'
collect2: ld returned 1 exit statusmilyen opcióval fordítsam, hogy jó legyen?
thx -
Forest_roby
őstag
válasz
Forest_roby #1544 üzenetére
megvan a hiba
%d helyett %f -et kellett volna irnom -
Forest_roby
őstag
hi!
c nyelven irott alap progi:
#include <stdio.h>
#include <math.h>
int main(){
double x = 1;
for(x = 1; x<=10 ; x++){
printf(''%d\n'',sqrt(x));
}
}
forditas:
gcc -lm gyokx.c -o gyokx
gyok1, gyok2 ..... gyok10 -et akartam kiiratni, de vmi badarsagot irt ki.
A kerdes az, hogy mi a hiba? Valszeg az sqrt -t rosszul hasznalom, de hogy kell helyessen hasznalni?
Elore is koszi a segitsegeket! -
Jester01
veterán
Emitter kollega fentebb pont wav fájlokat töltöget be, igaz c-ben.
Mindenesetre a wav file elején egy header van amibõl ki lehet olvasni a paramétereket.
Utána az adatok jönnek, minden mintavételi idõponthoz az összes csatorna egymás után.
Tehát pl. 16 bites 2 csatornás wav adatrészébõl úgy csinálsz 1 csatornát, hogy 2 byteot megtartasz és a következõ kettõt eldobod, sít. Értelemszerûen a fejlécben pedig átírod a csatornák számát 1-re. (Hozzáteszem, hogy a wavban nem csak tömörítetlen adatfolyam lehet, de gondolom a feladatban ezt feltételezheted.)
Aztán hogy ezt hogyan lehet beletuszkolni egy OO programnyelvbe azt sajnos nem tudom. -
ALI_G
veterán
válasz
Jester01 #1541 üzenetére
Van egy rakat fajta kötprogi, és 4 fajta nyelv közül lehet választani: prolog (logikai), occam (párhuzamos), haskell (funkcionális) és smalltalk (OO).
A prologot nem merem választani, bár egyenlőre ezt értem a legjobban. Nem sok progit adnak meg, amihez ez a nyelv jól használható.
occam: na ezt még nem is vettük, ezért főleg nem merek ebből választani.
haskell: gyakon nem értettem meg igazán.
smalltalk: ezt felfogtam többé kevésbé, csak elsőre túlságosan OO-nak néz ki (még a számok is objektumok), ha jól emléxem, ez az OO nyelvek őse, de legalább is az egyik. Ebből merném bevállalni vmelyik kötprogit.
A gondom, hogy wav-hoz azon kívül, hogy lejátszom nem értek, de sejtem, hogy nem egy nehéz művelet lehet egy hangcsatornákra bontás.
Szóval OO-ban, hogy is nézne ki kb. röviden a csatornákra bontás, hogy kell neki kezdeni. Van erről vmi leírás magyarul, hogy a wav fájlok, hogy néznek ki belülről, mik választják el a dolgokat. stb. Ha logikailag adnátok egy kis tanácsot merre induljak, feltehetőleg magam is rájönnék (ez csak egy gyenge sejtésde remélem nem tévedek).
-
ALI_G
veterán
Hi!
Érdeklődnék, hogy egy .wav fájl fájl-t csatornákra szétbontani mennyire nehéz/egyszerű, egy objektum orientált nyelvben? -
Jester01
veterán
válasz
emitter #1537 üzenetére
Valami telepítési gubanc lehet nálad, ha nincs doksi.
info libc ''waiting for i/o'' vagy online itt: [link]
A select nem eszik procit. Arra kell vigyázni, hogy a hang lejátszás ne blokkolja a vezérlést. Igy hasraütésre nekem az egy adatfolyam beágyazott vezérlõjelekkel szimpatikusabb, talán kevesebb baj van vele. -
emitter
őstag
válasz
emitter #1536 üzenetére
Úgy látom, mégsem biztos, hogy jó a select() az én helyzetemben, ugyanis ugye minden egyes ciklusiterációban meg kéne néznie a selectnek, hogy éppen melyik socket küld neki adatot (a vezérlő-, vagy az adat-socket), és ha utóbbi küldi, akkor fogadni, belerakni a pufferba, majd újra előlről kezdeni a figyelést... nem lesz ez túl lassú folyamat?
Ezt csak azért kérdezem, mert gőzöm sincs, hogy a processzor szempontjából ez mennyi időt vesz igénybe, nem fog-e egy idő után kiürülni a puffer az ''adatátvitel lassúsága'' miattnemtudom, érhető-e a kétségem?
vagy inkább azt a megoldást válasszam, hogy az adatokat becsomagolom, mindig megvizsgálom a fejlécét, és ha vezérlőcsomag érkezik, akkor azalapján döntök a lejátszásról, stb...
melyik lenne a gyorsabb megoldás - vagy mindkettő megfelelő nekem? -
emitter
őstag
válasz
Miracle #1535 üzenetére
majdnem teljesen igazad van, de most már nem tudok ettől a vállalt feladattól visszalépni, és nem is igazán akarok, valahogy csak kiizzadom
még van idő...
az lehet, hogy a select-nek nincs man-ja a gépemen? (2.6.12 kernel, g++ elfogadja, és működik is a programban), de man select nem működik
kerestem guglin egy csomó helyen a selectnek bármiféle doksiját, de nem találtam semmi jót... szóval ha tudtok, nyugodtan kisegíthettek ilyesmivel- persze közben még én is tovább keresek
-
Miracle
senior tag
válasz
emitter #1534 üzenetére
Hello. Az a velemenyem, hogy nem tudsz programozni, es egy nagyon nagy faba vagtad a fejszed, eloszor meg kellene tanulni algoritmusokat alkotni magadtol, megerteni, hogyan mukodik legalabb a nyelv, es utana lehet ilyen dolgokkal foglalkozni, de szemmel lathatolag a C nyelvi ismereteid finoman szolva hianyosak, a programozasi kornyezetrol meg kevesebbet tudsz, az meg hogy olyan kerdesekkel allsz itt elo, hogy melyik cilusba mit kell tenni arra enged kovetkeztetni, hogy ugy altalaban veve nem tudsz programozni. Most lehet hogy en vagyok a fasz, de igy sosem fogsz megtanulni, amit muvelsz az heggesztes, es mivel fingod sincs mit csinalsz nem is tanulsz belbelole semmit. Tanulni normalis, emberi mertekben merheto lepcsokben kell, mashogy nem lehet, es szerintem erdemes volna eloszor legalabb a nyelvvel, a fejlesztesi/futtatasi kornyezettel annyira baratsagba kerulni, hogy hogy magadtol meg tudd nezni egy-egy fv. dokumentaciojat ahelyett hogy ide irnal olyan kerdeseket, amelyekre nagyjabol 3 sor elolvasasa utan tudnad a valaszolni.
-
emitter
őstag
válasz
emitter #1532 üzenetére
fel!
szóval az elképzelésem mégegyszer a következő:
-kliensprogi wav-játszás közben figyeli a select()-tel a standard inputot, ha mondjuk azt írom, hogy ''pause'', akkor a szervernek küld egy pasue-nek megfelelő vezérlőjelet, mire a szerver leállítja a wav-játszást, stb.
Szóval lenne két socketem, egy vezérlő- és egy adat-socket. Odáig rendben, hogy mind kliens-, mind szerveroldalon kell 1-1 select a fő-ciklusban, a kérdés, hogy konkrétan hogyan valósítsam meg a dolgot...
nem értem pontosan, hogyan is működik a select()... ez itt a baj -
emitter
őstag
válasz
emitter #1531 üzenetére
hát nem teljesen világos ez a select:
ha 2 fájlleíró közül akarok selectelni, azt hogyan - szerver- és kliensoldalon is kell 1-1 select?
szerveren (ez fogadja az adatot) readfds, kliensen meg writefds?
a select milyen gyakran nézi meg, hogy melyik bemeneten jött adat?
és egyáltalán szintaktikailag hogyan kell használni? ez így jó lesz:
while(1){
select(sockfd1+1, &readfds, NULL, NULL, NULL);
if(IS_SET(sockfd1, &readfds)){...} //sockfd1 fogad adatot
else{...} //sockfd2 fogad adatot
} -
s1ny1
tag
c programozásban lenne olyan kérdésem, hogy hogyan kell véletlen szám generálásnál megadni az intervallumot [-500, 500]? lehetőleg random függvénnyel kellenne, de ha csak a rand-dal megy az sem baj. kösz
-
emitter
őstag
egy folyamat egyszerre csak egy porton tud kommunikálni?
azt szeretném valahogy megoldani, hogy a kliensprogim ne csak a wav-streamet küldje át a szervernek, hanem egyfajta vezérlőjeleket is, amivel tudnám utasítani mondjuk a wav megállítására, új wav lejátszására, stb.
mindezt persze valahogy párhuzamosan kéne megcsinálni, hogy épp lejátszás közben is tudjak más parancsot küldeni a szervernek.. -
tkazmer
addikt
Ja, a TextBox1.Text= WebBrowser1.Url-t a form load eseménykezelőjébe vagy milyébe írtam
-
tkazmer
addikt
Szerintetek VB.neteben azt hogy csináljam meg, hogy a szövegdoboz tartalma azonos legyen a webbongésző url-jével?
Igy próbáltam:
TextBox1.Text= WebBrowser1.Url
ill fordítva, de a fordító(vb.net 2005 express edition) nem fogadta el, a vb.net fekete könyvemben meg nem találtam erre utaló részt, hogy hogy kell pontosan, ezért csak ezzel a sajátos lehetőséggel próbálkoztam. -
robisz
senior tag
válasz
zordmorc #1521 üzenetére
Röviden: az InterruptedException akkor váltódik ki, ha valaki meghívja
a szál interrupt() metódusát.
Bövebben: Ha egy szál blokkol állapotba kerül (a sleep, a wait vagy a join
metódus hatására) akkor meg lehet szakítani az interrupt metódus hívásával.
Az interrupt metódus hatására a szálban egy InterruptedException váltódik
ki, és a programozóra van bízva, hogy mit kezd vele...
Ha szeretnéd az interrupt metódussal megszakítani a szálat, akkor a
kivétel hatására lépj ki a szálból (''return'').
Ha nem használod az interrupt metódust, akkor a kivétel sosem fog bekövetkezni
tehát figyelmen kivül hagyható (egy üres catch blokkal.)
Remélem segített -
zordmorc
csendes tag
sziasztok.
Tudja valaki, hogy javaban az interruptedexception kivétel mikor váltodik ki.
Azt tudom hogy szálakhoz kel csak azt nem miért váltodhat ki -
Jester01
veterán
-
emitter
őstag
válasz
emitter #1515 üzenetére
méretesebb (100kb-nál nagyobb) wavoknál nem jó a lejátszás
a buffer méretét nem sikerül eltalálni. Az a baj, hogy eddig sehol nem találtam normális leírást arról, hogy mekkora is kell legyen a puffer mérete - ami gondolom a mintavételi frekitől/ minták méretétől/ csatornák számától függ.
általában elkezdi lejátszani, és kis idő után - az első puffer kiírása után - elkezd akadozni, recsegni, stb...
most így néz ki a kód: [link]
amúgy és azt sem értem, hogy bármelyik wav végén mindig azt írja ki, hogy ''Hiba fajlolvasas kozben!'' Egy tipp: ez attól lehet, hogy a puffer mérete nem egész-számszorosa a hang-adat méretének, ezért picit hamarabb abbahagyja a lejátszást? Mondjuk ez néha hallható is, hogy nem fejezi be teljesen a wavot. -
robisz
senior tag
válasz
alienpapa #1517 üzenetére
Ha jar-ról van szó, akkor be kell tenni őket a CLASSPATH környezeti változóba.
Erre egészen biztos, hogy a JCreator is lehetőséget nyújt bár nem ismerem...
Vannak más lehetőségek is: a java.exe-nek megadhatod őket a -classpath
vagy -cp paraméterrel. (Egyébként kezdőként szerintem megéri csak a parancssoros
java-t használni mindenféle IDE nélkül, sokat lehet belőle tanulni)
Harmadik lehetőség, ha a jar-t bemásolod a jdk ''jre/lib/ext'' könyvtárába de ezt
nem ajánlom mert előbb utóbb rengeteg szemét lesz ott... -
alienpapa
senior tag
Most kezdtem el javaval foglakozni de elakadtam. Próbálgatnék példaprogikat, de a Jcreator hibát ír ki mert extra csomag kell hozzájuk. Ez a csomag nekem meg is van, csak nem tudom hova kell bemásolni. Valaki tudna nekem segíteni?
-
emitter
őstag
válasz
emitter #1512 üzenetére
tárgytalan a dolog, tényleg nagyon sz@r sorrendben és teljesen összevissza volt leírva a wav-file felépítése
hogy lehet ilyen munkát kiadni valakinek a kezéből
fejből, elméletben írta és soha ki nem próbálta
úgyhogy most szépen fut a progim, felismeri a wavokat - minden OK![link]
most már csak annyi a problámám, hogy a lejátszás végén elég sokáig tart (5-6 mp), míg kilép a progiból... ez vajon mitől lehet?
mégegy dolog: szeretném kibővíteni majd a tudását mp3-ra is, tudtok mondani olyan libet, ami mp3-at tud dekódolni? mert eddig a neten sajna nem sok mindent találtam, persze keresek tovább, de azért ha tudtok kapásból ilyet, az jól jönne
emitter
mod: Jester, köszi szépen az infót, sokat segítettélja, a kódom mostantól nem wav2.c, hanem a linkelt
[Szerkesztve] -
SimS
senior tag
válasz
qestion #1499 üzenetére
Globális változót akkor ha azt cím szerint is átadod (functionokban és procedure-kban)...és az egész programod használja (meg az alprogram is)
Lokálist pedig csak az adott alprogram használja, tehát a külső programban nem szerepel, csak addig foglal a memóriában helyet ameddig az alprogi fut
[Szerkesztve] -
Jester01
veterán
válasz
emitter #1512 üzenetére
Mivel a te wavod a kiírás szerint csak 10676 byte így persze, hogy nem kell a ciklus hiszen egy bufferbe belefér
Próbáld egy nagyobb fájllal.
Az snd_pcm_writei visszatérési értéke csak akkor hiba, ha kisebb mint 0. Egyébként a kiírt keretek számát adja vissza. Gondolom teljesen szabályos, ha alkalomadtán kevesebbet ír ki mint amennyit beadtál, ilyenkor feltehetõleg ciklusban újra kell próbálni. De olvasd el a doksit ezügyben.
Vszg azért kapsz segmentation fault-ot, mert többet íratsz ki a bufferbõl mint amekkora a mérete. Most már én is kezdek belezavarodni (persze én nem néztem utána), hogy minta (sample) vagy keret (frame) számot kell neki megadni. -
emitter
őstag
válasz
emitter #1511 üzenetére
az mitől lehet, hogy a progim más formátum-hosszt ismer fel egy adott wavnál, mint a 'file' progi
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ ./wav2 rexi.wav
Begin fileposition: 0
RIFF
10676
WAVE
fmt
format_length: 16
format_tag: 1
channels: 1
sample_rate: 44100
avg_bytes_sec: 44100
block_align: 0
bits_per_sample: 1
...
----------
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ file rexi.wav
rexi.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 8 bit, mono 44100 Hz
----------
és ezáltal persze rosszul is játsza le a rexi.wav-ot..
itt a kibővített kód [link], ugyanis átírtam, hogy ő olvassa ki a wav headerjéből az infókat... mindezt ezen az oldalon találtam: [link]
az az érdekes, hogy az írója szerint a 38.-ik bájttól már jön a wavban a 'data', szóval a hasznos rész, ezzel szemben az én wavomnál csak a 41.-ik bájt az első adatbájt
akkor a maradék 3 bájt mi lehet?
asszem erre az írásra mondtad Jester, hogy nem tudja a fazon, mit is csinál valójában, ez lehet, mert elég zavaros a dolog, pl szerinte köv. sor
fread(&bits_per_sample, sizeof(short), 1, fp); //8 bit or 16 bit file?
egy mintavétel méretét adja meg bitben. Ehhez képest nekem bits_per_sample: 1
mit javítsak a kódon, hogy jól felismerje a wav sample-méretét? -
emitter
őstag
válasz
Jester01 #1510 üzenetére
hát eléggé nehezen tudtam rájönni a megoldásra, de szerencsére megvan a dolog
akkora buffer kell neki, amekkora a mintavét-freki kétszerese (mono 16bit esetben)
szóval most szépen lejátsza a wavokat, viszont lejátszás után ilyeneket ír ki:
write to audio interface failed (Unknown error 44096)
vagy
Szegmens hiba
a kód: [link]
egyébként azt nem nagyon értem, hogy hogyan tudja a wavot úgy lejátszani, hogy csak egyszer fread()-eli, és utána egyszer hívja az snd_pcm_writei()-ttehát nem is kell az egész köré a while(!feof(wav_handle)) {...}
ezt nem értemszóval hogyan fér bele a ~44kb-os pufferembe az egész hanganyag??
ui: most felraktam a puffer méretét 88200-ra, így szépen hiba nélkül lefut... viszont így egy nagyobb wav-stream esetében hogyan fogom megoldani tudni a álózaton való átküldést, ha ez egyszerre akarja kinyomni a hangkártyának a puffer tartalmát... erre mi lehet a megoldás szerinted?
-
emitter
őstag
válasz
Jester01 #1508 üzenetére
nem értem ezt a paraméterezést!
pl. van egy PCM 16bit mono 11025Hz-es wavom, ezesetben mit mekkora értékűre állítsak?
snd_pcm_hw_params_set_format (playback_handle, hw_params, SND_PCM_FORMAT_S16_LE)
snd_pcm_hw_params_set_rate_near (playback_handle, hw_params, 11025, 0)
snd_pcm_hw_params_set_channels (playback_handle, hw_params, 2)
snd_pcm_writei (playback_handle, buf, 128)) !=128)
vagy egy másik wavnál: PCM 8bit mono 44100Hz - itt mekkorára állítsam a fentieket?
vagy tudnál adni egy linket, ahol ezek normálisan le vannak vezetve, hogy hova mekkora érték kell?
amúgy lejátsza a cuccot, csak kicsit érdekes hangon/gyorsasággal
és nem hw:0,0-val, hanem csal plughw:0,0-val (ez asszem konvertál, ha nem jók a paraméterek) -
Jester01
veterán
válasz
Jester01 #1507 üzenetére
Múködik szépen.
Az snd_pcm_writei kereteket (frame) ír, vagyis oda feleakkora szám kell mint ahány minta (sample) van mert 2 csatornát használsz. Ha ezután sem jó, akkor ellenõrizd, hogy a teszt wav tényleg 44.1kHz (ez nem fontos, legfeljebb gyorsabb-lassabb lesz), stereo S16LE (ez fontos) formátumú:
> file t.wav
t.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz -
Jester01
veterán
válasz
emitter #1506 üzenetére
Az semmiképp nem egészséges, hogy minden buffert 10x játszol le
Amúgy úgy látom különbözõ library verziót használunk, mert nekem a rate beállító fv tényleg nem pointer vár (ezért is írtam tegnap, hogy nekem mûködött az eredeti változat). Cserébe viszont nekem nem szól
MOD: már legalább szól16384 biztos sok volt neki. Alakulgat...
[Szerkesztve] -
emitter
őstag
válasz
emitter #1505 üzenetére
nagyon nem vagyok tisztában azzal, hogy végülis egy wavban milyen infó hol található (fejlécre gondolok), és hogy mi történik akkor, ha nem a neki megfelelő paraméterekkel játszom le... ez utóbbiról azt olvastam, h kárt is okozhat akár, szernecsére nekem csak idegesítő zaj jött a hangszórómból
itt találtam egy wav-felépítést: [link]
viszont nekem így néz ki a wav fájlom (eddig kettőt néztem meg, mindkettő fejléce azonos hosszú):
RIFF~DÝ^@^@WAVEfmt ^P^@^@^@^A^@^A^@^Q+^@^@''V^@^@^B^@^P^@data...
szóval a 40.-ik karakternél kezdődnek a tényleges adatok. Egyébként attól, hogy véletlenül a 44. karaktertől kezdem el lejátszani, attól még kéne szólnia, nem? csak legfeljebb ''kicsit'' később kezdve
segítsetek, mert egyedül nem tudok túljutni ezen a dolgon
ui: és arról sem találtam még infót, hogy mekkora buffert ajánlatos fenntartani, ez gondolom megegyezik azzal az adatmérettel, amit egyszerre kiküld a hangkártyának - ez mekkora legyen? próbálkoztam már 1-16384 bájtig, egyik se jött be, csak zümmögés...
mod: a wav fejlécénél ''fmt'' után egy szóköz van, és természetesen az egész fejléc egy sorban van
és felraktam a legújabb wav2.c-t
[Szerkesztve] -
emitter
őstag
válasz
Jester01 #1504 üzenetére
kirrály!!! megszólalt a hangszóróm!
csak az egyetlen dolog ami beárnyékolja az örömömet, hogy végre sikerült hangot lejátszanom - az, hogy csak egy hangon zümmög, valami a bufferral nincs rendben
megnéznéd a wav2.c-t?
mekkora buffert érdemes foglalni neki, és milyen gyakran érdemes a kártyára küldeni a hangot? -
emitter
őstag
válasz
Jester01 #1498 üzenetére
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ ./wav2 hw:0,0
Szegmens hiba
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$ gdb wav2
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type ''show copying'' to see the conditions.
There is absolutely no warranty for GDB. Type ''show warranty'' for details.
This GDB was configured as ''i486-linux-gnu''...Using host libthread_db library ''/lib/tls/i686/cmov/libthread_db.so.1''.
(gdb) set args hw:0,0
(gdb) run
Starting program: /home/emitter/BME_nemet/Prog2/Nagyhazi/wav2 hw:0,0
[Thread debugging using libthread_db enabled]
[New Thread -1212152128 (LWP 9322)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212152128 (LWP 9322)]
0xb7ea183c in snd_pcm_hw_param_set_near () from /usr/lib/libasound.so.2
(gdb) bt
#0 0xb7ea183c in snd_pcm_hw_param_set_near () from /usr/lib/libasound.so.2
#1 0xb7e98699 in snd_pcm_hw_params_set_rate_near () from /usr/lib/libasound.so.2
#2 0x08048a59 in main (argc=2, argv=0xbf935a74) at wav2.c:44
(gdb) quit
The program is running. Exit anyway? (y or n) y
emitter@LAPTOP:~/BME_nemet/Prog2/Nagyhazi$
a wav2 binárist az elején jó argumentummal indítottam?
mi az hogy szegmens hiba?
neked ez a progi működik?
itt van a jelenlegi wav2.c: [link] -
qestion
aktív tag
szabad_vagyok := [szerda];
rendel := [hetfo, szerda, pentek];
if rendel * szabad_vagyok <> [] then
Most ennek az utsó sornak mi az értelme?
Ha a rendel -szer szabad_vagyok nem egyenlő üreshalmaz, akkor :
?
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- LG OLED & OLED evo Televíziók -30%
- BESZÁMÍTÁS! ASUS B760M i7 13700K 32GB DDR4 512GB SSD RX 6800XT 16GB Phanteks Eclipse P400 Glacier
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Lenovo T14 Thinkpad G2 FHD IPS i5-1145G7 vPro 4.4Ghz 16GB 512GB SSD Intel Iris XE Win11 Pro Garancia
Állásajánlatok
Cég: FOTC
Város: Budapest