| | |
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
|
Ahojte,
Mam mensi problem pri volbe sposobu prenosu dat medzi aplikaciami. Moj problem:
Mam 5 samostatnych aplikacii ktore by mali pristupovat k perifernemu zariadeniu. Nakolko ku tomuto perifernemu zariadeniu moze pristupovat len jedna aplikacia v danom casovom okamihu, musim komunikaciu vyriesit pomocou samostatnej aplikacie ktora ku nemu bude pristupovat a RGB obraz,... bude distribuovat tym piatim aplikaciam (data bude multicastovat). Problem je ten, ze sa neviem rozhodnut aku technologiu pouzit na prenos dat. Ci surove TCP (tych 5 aplikacii je pisanych skoro kazda v inom jazyku C,Cpp,C# cize pri TCP by som nemusel riesit proprietarnost). Pre C# existuje daco ako Interface plugin ale to si nemyslim ze poriesim v Ccku ...
Otazka: Ako by ste prenasali relativne velke datove toky (video a zvuk) medzi medzi aplikaciami ? V pripade dakych riadiacich dat by som toto neriesil ale pri realtime streamoch (video a zvuk) sa neviem rozhodnut.
Dakujem.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.03.2013 9:17 | |
|
Ešte pred tým, než nad tým začnem rozmýšľať sa spýtam - Čo je to za zariadenie? Musí to ísť softwareovo? Nešlo by tam dať nejaký HW medziprvok, ktorý by požiadavky aplikácií hádzal do nejakej fronty a postupne ich púšťal k slovu?
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Napísal autor témy Ivan11114: 23.03.2013 13:25 | |
|
je to kinect. problem je ten ze pred pouzitim ho treba inicializovat a jedna aplikacia zozerie celu USB zbernicu. Pustanie k slovu nie je dobre lebo ja potrebujem primst data stale na jednom HW. cize ta aplikacia v ulohe dakeho hubu bude asi nevyhnutna.Najidealnejsie by bolo ak by tych 5 aplikacii bola jedna aplikacia ale to je nerealne. Tum hubom som si isty potrebujem len technologiu na prenos takeho mnozstva dat.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.03.2013 13:57 | |
|
Aha, takže tebe ide komunikácia nejak takto? App1: Init Kinect, Send/Read data, Close connection App2: Init Kinect, Send/Read data, Close connection App3: Init Kinect, Send/Read data, Close connection atď. Púšťanie k slovu som myslel tak, že by si mal napríklad nejaký mikrokontrolér s FTDI, ktorý by si pripojil na USB a z aplikácií posielal požiadavky na Kinect. A ten by sa trebárs mohol starať aj o jeho inicializáciu pri prepnutí kontextu (v tomto prípade teda aplikácie) Softwareové riešenie mi napadne zdieľaná pamäť, ale to nie je veľmi komfortné. Príp. sa môžeš z tých 5 aplikácií dorozumievať s nejakou šiestou cez sockety, ktorej by si ale hovoril len "v tomto súbore máš pripravené dáta, pošli ich a pošli mi odpoveď", alebo "tuto do tohoto súboru mi pošli dáta a povedz, keď tam budú" Ak to budú realtime streamy, tak cez súbory by sa to dalo nejak poriešiť, ale tam by som už keď tak aspoň tie riadiace signály vtrepal do zdieľanej pamäte. Alebo niečoho rýchlejšieho ako sockety, len ma nič teraz nenapadá. Prečo by ale nemohli byť v jednej aplikácií? Príp. môžeš každú upraviť tak, aby sa dalo ovládať všetko potrebné cez parametre v príkazovom riadku/termináli a v tej šiestej robiť niečo ako "spusti App1 -parametre" a ono to niečo urobí. Neviem, či nepíšem bludy, neviem si poriadne predstaviť, čo s tým chceš robiť
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
Ivan, možno by bolo fajn najskôr čo najkonkrétnejšie uviesť, na čo to potrebuješ, lebo ani mne to nejako nedáva logiku, čo by si s tým chcel potom robiť... Mám taký dojem, že riešením tvojho problému bude nejaká primitívna záležitosť...
_________________ C#, PHP, ... |
|
| Napísal autor témy Ivan11114: 23.03.2013 15:24 | |
|
To na co to poterbujem je nepodstatne. Staci len tolko, ze tych x aplikacii s datamy z kinectu daco robi (analyzuje ich - zvuk\obraz). HW riesenie pomocou prepinaca je nevhodne nakolko tych x aplikacii ma bezat na jednom stroji. Preprogramovat to do jednej aplikacie je prilis narocne (nerealne pri sucasnom stave). Softwarove zdielanie zariadenia je tiez nevhodne pretoze je pre mna neziaduje aby si daka aplikacia rezervovala zariadenie na daky cas len pre seba plus niektore aplikacie su citlive na dicontinuity (zvuk). Preto ten multicast. Niektore z aplikacii vyzaduju identicke data v danom casovom okamihu tak preco by si na to mali samostatne vyhradzovat cas (preto multicast). Zapisovanie do suboru je tazkopadne a pomale. Preco do procesu pri ktorom su prenasane velke datove toky zaradovat najpomalsie zariadenie pocitaca. Este si viem predstavit ze by to bolo zapisovane do Ramky a tieto data zdielane pre vsetkych x aplikacii, ale s tym nemam skusenosti. Ja som ako prve pri rieseni problemu zvazoval sockety ... no zaujma ma ci nie je daky vhodnejsi framework/API/kniznica. Vhodna pre C/Cpp/C#. Uplne super by bolo dake trensparentne riesenie pri ktorom by som sa nemusel riesit low level zalezitosti. Dakujem
PS: Aplikacie nie je mozne spustat a zapinat (teda je ale nie je to vhodne). Operacie ktore vykonavaju niesu jednorazove. Aplikacie si mozes predstavit ako servery ktore vyhodnocuju data.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.03.2013 15:50 | |
|
Tak si sprav RAM disk a pracuj so súbormi. Bude to trochu pomalšie, než zapisovanie priamo do RAMky (pretože sa tam bude volať filesystem), ale bude to podstatne rýchlejšie aj od SSD disku. No a urob si aplikáciu, ktorá bude všetky dáta z kinectu chŕliť do súboru/ov, ktoré budeš mať nejako vhodne štruktúrované. A z ostatných aplikácií si z nich budeš vyberať to, čo potrebuješ. Toto ale bude pri veľkých dátach poriadna záťaž na RAMku a zase sa to oplatí len ak je tých dát naozaj veľa naraz - volať filesystem každú chvíľu s každou blbosťou je záťaž a bude treba nájsť kompromis medzi "realtime" a rozumným spracovaním. Z toho čo som pochopil ti netreba posielať dáta priamo kinectu, však? V tom prípade by toto mohlo byť riešenie. Ak potrebuješ aj posielať dáta, tak sa to tam dá nejako zakomponovať. Žiadny framework ale na toto iste nebude, štruktúrovať dáta si musíš sám a čítať zo súborov tiež. A samozrejme ich musíš aj priebežne kontrolovať a tie nepotrebné mazať. Inak to nevidím, neviem aké zverstvo robíš, ale asi to robíš zle
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Napísal autor témy Ivan11114: 23.03.2013 16:07 | |
|
Ano robim to zle, ale to je len dosledok toho, ze na probleme pracuje vela ludi a kazdy si tu svoju specificku aplikaciu programoval sam vo vlastnom jazyku (nepytaj sa preco sam tomu nechapem). Teraz ked to treba skombinovat tak musim riesit takyto stupidny problem.
No nic tie sockety vidim fakt ako najschodnejsiu cestu v pomere narocnost\vykon.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.03.2013 16:11 | |
|
Ivan11114 píše: No nic tie sockety vidim fakt ako najschodnejsiu cestu v pomere narocnost\vykon. A čítal si, čo som písal? Fakt chceš kopu dát pchať cez sockety a to na jedinom počitači? Teda neviem, koľko je tých dát a ako rýchlo ich chceš spracovávať, ale sockety mi veru neprídu ani rýchle, ani jednoduché (tiež to budeš musieť nejako manageovať)
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Napísal autor témy Ivan11114: 23.03.2013 16:17 | |
|
jj toho som si vedomy no ked si predstavim vsetko chrlit do suborov a tam riesit XY veci naviac tak neviem ci vysledna aplikacia bude o tolko rychlejsia, ze to v konecnom dosledku bude stat za to.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.03.2013 16:24 | |
|
So súbormi to môže byť rovnako zložité, ako so socketmi, ale už aj vtedy to bude rýchlejšie, lebo obídeš celý TCP/IP protokol a nahradíš ho rýchlym filesystemom, ktorý zapisuje do extrémne rýchlej RAMky. Zjednodušiť by sa to dalo ešte tak, že cez sockety by si riešil riadiace signály, aké som popisoval vyššie, ale veĺké dáta by som tak určite neprenášal. To je úplne zbytočné. A ak majú súbory len čítať, vedia to robiť všetky naraz, takže nie je problém.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Napísal autor témy Ivan11114: 23.03.2013 16:33 | |
|
pri komunikacii na loopback adresach data neprechadzaju celym protokolovym zasobnikom. Ok no este si to necham prejst hlavou ... Ale vdaka za rady Ak ta napadne aj daco ine kludne napis.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|