NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s podporou uplatnění od 0 Kč. Více informací.
Avatar
Jenkings
Tvůrce
Avatar
Jenkings:17.2.2016 11:35

Zdravím.

Jelikož už jsem v C# delší dobu nedělal, chtěl bych poprosit aby mně někdo trochu nasměroval případně pomohl s řešením jednoho problému.

Jde o to, že potřebuji generovat jistý výstup na zvukovou kartu. Vynechejme zatím důvod, kvůli čemu to potřebuji řešit právě touto cestou, ale výstupem by měl být v podstatě binární kód, který následně ovládá periferii napojenou na zvukový výstup.

Vše ohledně HW mám vyzkoušené pomocí signálu který jsem si namoduloval v audacity a vše funguje podle mých představ. Teď ovšem potřebuji napsat program/třídu, která se mi bude starat o vysílání libovolné sekvence. Původně jsem zamýšlel, že budu mít někde uložené dva velice krátké .waw soubory, ve kterých bude zaznamenaný vzorek pro vyslání jedničky a nuly. Pak jsem si ale uvědomil že při přepínání mezi nimi by mohlo docházet ke zpoždění a proto bych byl radši,kdyby tyto zvuky bylo možné přímo generovat a tím aby i navazovaly. Bohužel nemám nejmenší tušení jak na to.

V příloze je ukázka jak signál vypadá.
první (oddálený) ukazuje celý výstupní signál, druhý obrázek pak detailně zobrazuje vyslání signálu "0101010".

V podstatě vstupem pro třídu by měl být list, obsahující jednotlivé bity k vyslání, a také doba trvání jednoho pulzu v milisekundách. Ta by měla ovlivnit délku trvání vysílání jednoho bitu, (ne však tak že by roztáhla dobu jednoho kmitu signálu,ale pouze by signál měl více kmitů na jeden bit)

Odpovědět
17.2.2016 11:35
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Jenkings
ostrozan:17.2.2016 13:08

A co kdyby sis nasamploval celý bajt?
Jinak na řešení jsem taky zvědavý.

 
Nahoru Odpovědět
17.2.2016 13:08
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na ostrozan
Jenkings:17.2.2016 14:29

No takhle, ono to nutně nemusí být ani bajt. Ta sekvence bitů nemá nijak pevně danou délku.
A hlavně jde o to že pak bych mohl posílat jen ten konkrétní bajt. Já však potřebuji abych dokázal pomocí té třídy odvysílat jakoukoliv sekvenci bitů kterou jí pošlu v konstruktoru

Nahoru Odpovědět
17.2.2016 14:29
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Jenkings
Tvůrce
Avatar
Jenkings:17.2.2016 17:43

Smím se zeptat Tomáš Brabec za co jsem si vysloužil mínus na dotaz ?

Nahoru Odpovědět
17.2.2016 17:43
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Tomáš Brabec:17.2.2016 18:17

To je dlouhý příběh... :D Samozřejmě tam mínus být nemá.

Nahoru Odpovědět
17.2.2016 18:17
Lidé se dělí do 10 skupin. Jedni dvojkovou soustavu znají a druzí ne.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Tomáš Brabec
Jenkings:17.2.2016 18:22

dobře,díky :)

jinak ještě pro objasnění, jsem si vědom že tenhle přístup k odesílání dat není tak úplně ideální. Jedná se o jakési krajní řešení, kdy je potřeba tento SW nasadit na větší množství strojů, a je kladen důraz na minimální náklady. Takže mám i elegantnější řešení pomocí USB, které ovšem vyžaduje investici do řídícího modulu,který teprve vytváří výstupní signál. Ovšem výrobní cena je okolo 500 Kč, zatímco pomocí tohoto bych dokázal hardware napojený na zvukový výstup vyrobit za cca 40 korun

Nahoru Odpovědět
17.2.2016 18:22
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Patrik Valkovič:17.2.2016 19:21

Když jsem řešil zvuk v SDL, tak to šlo přes buffer. Mohl by sis teoreticky načíst malé wav soubory, ty nastrkat do Bufferu a tím by nedocházelo ke zpoždění při přepínání. Funguje to tak, že mu tam nastrkáš data, on je přehraje a když mu dojde buffer, tak si zavolá callback a nastrkáš mu tam další. Hudba zněla dobře, ale jestli je při tom nahrávání do bufferu nějaká odezva, to sluchem nezjistim. SDL mi mělo binding i do C#.

Nahoru Odpovědět
17.2.2016 19:21
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Jenkings
ostrozan:18.2.2016 8:31

Pokud můžu radit, tak máš - li sice dražší, ale lepší řešení a strojů není 100 - prosaď si radši to. Zvlášť budeš li to v budoucnu sám spravovat. Úspora pár stovek na jednom zřízení se ti může vymstít. (vlastní zkušenosti)

A co použít k propojení nějaký bus (CAN, 485)?

 
Nahoru Odpovědět
18.2.2016 8:31
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na ostrozan
Jenkings:19.2.2016 20:53

Bohužel si v tomhle nemůžu moc diktovat podmínky. Tady jde opravdu hlavně o co nejnižší cenu. A tyto sběrnice nemohu použít z důvodu nasazení na velice různých strojích, kdy si nemůžu být jistý, zda všechny obsahují to co potřebuji, zatímco zvukový výstup je určitě na všech.

Nahoru Odpovědět
19.2.2016 20:53
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Jenkings
ostrozan:20.2.2016 23:47

Ještě se zkus podívat na Labwiew, je to takové "obrázkové" programování lehce pochopitelné a má to už plno různých udělátek včetně různých generátorů. https://m.youtube.com/watch?…

 
Nahoru Odpovědět
20.2.2016 23:47
Avatar
ostrozan
Tvůrce
Avatar
ostrozan:21.2.2016 12:04

Jen pro zajímavost - na jakém zařízení běží .NET - já teda znám jen PC, případně IPC (SIMATIC) - a při tom nemá USB, nebo aspoň COM do kterého bys vrazil převodník na RS485 za 25 kč?
Když tak mi rozšiř obzory, pokud to není tajné.

 
Nahoru Odpovědět
21.2.2016 12:04
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na ostrozan
Jenkings:21.2.2016 14:38

No, tady jde zase o jinou věc. Do těchhle věcí jdou zase režijní signály z PC, tudíž tím nemůžu prohnat surový výstupní signál přímo pro koncové zařízení.

COM například mezi jednotlivé bajty vkládá tuším jednu nulu pro oddělení a časování.
USB má zase režijní protokoly kdy připojené zařízení se chová v podstatě podobně jako síťový prvek, a nejdřív se nahlásí čipu který obstarává USB sběrnici. Součástí toho je i ohlášení režimu přenosu apod. tudíž na surový výstupní signál taktéž nepoužitené

Nahoru Odpovědět
21.2.2016 14:38
Největší časovou náročnost má výpočet časové náročnosti..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.