abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:11 | Humor

    Příští týden bude mít premiéru film Wicked (Čarodějka). Společnost Mattel připravila k filmu sadu panenek Wicked. Na jejích obalech měl být webový odkaz na stránky filmu. Je tam ale odkaz na stránky pro dospělé. V adrese wickedmovie.com jim vypadlo slovo movie. Společnost Mattel se omlouvá (CNN).

    Ladislav Hagara | Komentářů: 3
    včera 23:55 | IT novinky

    U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již pátý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.

    Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 7.20. Nově s podporou architektury Loongson LoongArch.

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | Nová verze

    PHPStan (PHP Static Analysis Tool), nástroj pro statickou analýzu a hledání chyb v PHP kódu, byl vydán ve verzi 2.0. Po třech letech od vydání verze 1.0. Podrobný přehled novinek v poznámkách k vydání na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Nová verze

    Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.10.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest (Wikipedie) před měsícem přejmenovaný na Luanti.

    Ladislav Hagara | Komentářů: 0
    včera 09:11 | Nová verze

    Vyšla nová verze open source ticketovacího nástroje Redmine 6.0.0. Tato verze přináší 146 vylepšení a oprav. Došlo k vylepšení UI, upgrade na Rails 7.2 a Ruby 3.3, byla provedena integrace asset pipelines s Propshaft a mnoho dalšího, viz kompletní changelog.

    Max | Komentářů: 0
    včera 01:11 | Komunita

    Firefox slaví 20 let (YouTube). Verze 1.0 byla vydána 9. listopadu 2004.

    Ladislav Hagara | Komentářů: 10
    10.11. 22:11 | Humor

    Z proprietárního světa: Přijdete ráno do práce a zjistíte, že všechny Windows Servery byly neplánovaně automaticky upgradovány z verze 2022 na verzi 2025.

    Ladislav Hagara | Komentářů: 26
    9.11. 23:44 | Nová verze

    Byl vydán Debian 12.8, tj. osmá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    9.11. 12:44 | Nová verze

    Standard Matter (Wikipedie, GitHub), původně Project Connected Home over IP (CHIP), pro propojení IoT a domácí automatizaci byl vydán ve verzi 1.4.

    Ladislav Hagara | Komentářů: 3
    Rozcestník

    Čtení dat z RS-232 / zvukové karty

    27.1.2012 17:30 | Přečteno: 2094×

    Bude to znít podivně, ale mám několik nápadů na externí zařízení připojitelná k PC pro vyhodnocování dat. Problémem je, že netuším jak číst data.

    Nejdříve popíšu můj názor na věc:

     

    - Paralelní port - Velmi oblíbený port pro tisk či ovládání CNC fréz (i naše záložní školní která je právě v rekonstrukci ho používá), bohužel v dnešní době díky omezenosti výrobců desek již vyhynulý.

    - Sériový port - Dříve používaný pro připojení modemů, ale doteď je hojně používán pro programování automatů PLC, existují funkční převodníky z USB bez větších latencí.

    - Gameport - Dávno vyhynulý a přesto neskutečně zajímavý (jestli se nepletu, tak dokázal zpracovávat i analogové vstupy - třeba aktuální polohu frézy).

     

    Bohužel žádný z těchto portů na dnešních strojích již nenajdete, sériový port se (na stolních strojích) drží tesáky drápy, ale mám pocit, že věčně tu nevydrží.

    Mým hlavním cílem u mých projektů je zajistit, aby funkce nebyla omezená "technologicky" v takovém smyslu, že moje zařízení půjde připojit JEN na množinu N počítačů. Ovládací software může přepsat a rozšířit kdokoli, ale dodatečně připájet konektory nedokáže na desku bez cest ani Chuch Norris.

    Při poslouchání muziky mi po chvíli došlo, že hudbu nezačneme snad nikdy nenávidět....a vzpomněl jsem si na kdysi populární ZX Spectrum. Zvuková karta tu byla, je a ještě dlouho bude.

     

    Nějakou dobu jsem hledal sinusový generátor pro GNU/Linux, ale nic co by pořádně fungovalo jsem (ano, píše se rok 2012!) nenašel. Speaker-test obsažený v ALSA dokáže sice generovat sinus, ale ať nastavím hodnoty jakkoli, nikdy netrvá takovou dobu, kterou si nastavím, vždy jen něco pod dvě vteřiny. Nakonec jsem si v Audacity vytvořil vzorky sinusových signálů o různých frekvencích. Frekvencí je celkem 11, ovšem výstup je sedmibitový, pro mě dostačující (4 vzorky spouštějí najednou dva sousední výstupy). Při vzorkování 96K mají soubory velikost v jednotkách KB a proto se není čeho obávat.

    Externí zařízení připojené k PC by mělo pomocí frekvenčních filtrů a komparátorů spínat jeden (dva) ze svých výstupů.

     

     

     

    Tímto se dostávám k jádru pudla.

     

    Snad každý opravdu přesný a funkční přístroj vyžaduje zpětnou vazbu. Co to je? To je něco, bez čeho se žít dá, ale život se hodně znesnadňuje. V mém případě by externí zařízení k PC stálo možná více jak dvojnásobek svojí ceny při NEpoužití zpětné vazby.

     

    Po první kapitole o portech je asi jasné, kterým "portem" chci zrealizovat zpětnou vazbu, teda dostávat data do Debianu.

    Mikrofoní a Line vstupy obsahuje snad každá zvuková karta. V mém případě potřebuji jen počítat impulzy. Nešla by k tomu využít právě zvuková karta? Nemá někdo tip na program, který dokáže číst úroveň signálu na vstupu zvukové karty a vypisovat třeba tečku při překročení nastavené hodnoty? Tímto by se zajistila zpětná vazba u mého prvního projektu, který je na toto docela choulostivý. Původní plány byly kompletně bez zpětné vazby a i taková zařízení jsou funkční. Ovšem v mém případě bych v zájmu úspor zpětnou vazbu ocenil, neboť narozdíl od školní CNC frézy řízené přes paralelní port je leccos jinak.

     

    Dalším vstupem (vhodným pro jiný projekt) je sériový port, připojený případně přes USB převodník. Chápu že na sériový port musím posílat data určitou rychlostí, číst je bych měl taky dokázat, ovšem jak je oddělit? Když mám sériový port nastavený jako osmibitový bez parity a budu chtít 2x po sobě poslat 8 bitů, jak to mám udělat? Poslat prvních 8 bitů, počkat dalších (minimálně) 8 bitů a poté posílat další? A může sériový port na jednom ze svých pinů poslat impulz typu "Tlač sem další data, jsem ready"?

    Toť pro mě nepřekonatelný problém. Je to tak nebo není?

    Pokud mi někdo vysvětlí jak je to vlastně s tím sériovým portem a jestli jdou počítat impulzy přes zvukovou kartu, budu tomu tvorovi velmi zavázán

     

     

    Leckteré pasáže mohou vypadat jak vytržené z kontextu, od pondělí jsem pořádně nespal (je pátek) a právě se to chystám dohnat. Předem díky všem :-)

     

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    27.1.2012 18:07 psonek | skóre: 20 | blog: psonek
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    No moc jsem to necetl, ale proc nepouzit arduino? Je to za par stovek a ma to hromadu vstupu/vystupu (i analogovych) a da se pripojit pres USB k pocitacu. Programuje se v Cecku a komunikovat se da pres to USB (tvari se jako seriova linka). Ja tim ovladam frezu z merkuru a funguje perfektne:

    video tady
    Dreit avatar 27.1.2012 20:36 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Andruino beru taky jako možnost, ale hledám nejlevnější alternativu a vlastní cestu (neprobádanou + chci se naučit jak to funguje).

    Navíc co se týče "programování", tak jen Bash, s Cčkem neumim a nikdy jsem nepochopil jak funguje (ano, jsem barbar).

    Nope
    Jendа avatar 27.1.2012 21:51 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Protože přes USB nedosáhneš přesného timingu. Takže budeš muset mít v tom Arduinu netriviální processing, jakmile budeš chtít navádět nějakou časově náročnější aplikaci (třeba brmlabí lasercutter nebo reprap). Přidej k tomu, že ta ATMega není nejrychlejší (pythagorova věta je často na hranici možností, sinus už real-time nemáš šanci zvládat) a tak budeš muset data masivně předpočítávat na počítači a cpát je tam nějakým netriviálním protokolem… bléé.
    27.1.2012 22:08 Jirka Keresteš | skóre: 12
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Sinus se da i na takovym prditku pocitat "realtime", pokud to nepotrebujes nejak presne (na to se atmega stejne nehodi). Staci si po resetu predpocitat tabulku pro interval [0;pi/2], neznamy hodnoty pak dopoctes nejakou interpolaci daleko rychleji nez taylorem. ;-)
    A physics book seems to be a mathematician's worst nightmare.
    Jakub Lucký avatar 27.1.2012 18:22 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    S HW poradit neumím, ale generovat sinusoidu určitě šlo v soxu...

    If you understand, things are just as they are; if you do not understand, things are just as they are.
    gtz avatar 27.1.2012 18:23 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    přece existoval Osciloskop ze zvukové karty :-) a tam o sinusiodu šlo.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    Dreit avatar 27.1.2012 20:38 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    xoscope

    Nope
    27.1.2012 20:04 Kvakor
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Jde to Soxem (viz Using Sox to Synthesize Sound), jde generovat sinusovka, obdélník, pila, trojúhelník, pulzy a různé druhy šumů.

    A zvukové karty s FM syntézou (např.. s OPL2/3) to umí i hardwarově (ale cpát to do vstupu umí, poku vím, jen SB16), nebo se to dá udělat signálovým procesorem na kartě (např.Emu10K/20K). Na to první bych možná ještě někde vyhrabal svůj dosový program pro SB16.
    Dreit avatar 27.1.2012 20:39 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Díky moc, to vypadá přesně jako to, co jsem celou dobu hledal. Ještě něco co by dokázalo číst signál na vstupu a počítat impulzy a bylo by to perfektní :-)

    Nope
    gtz avatar 27.1.2012 18:22 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    jen bych doporučil se vyhnout převodníkům USB-RS485, které používají pouze half-duplex. My pácháme přístroje pro stravovací a docházkové systémy, které jsou řízeny Atmely/PIC a komunikujeme s PC přes RS232 nebo RS485. A najít někdy ten správný převodník je potíž. PCI-expres RS232 jsou totálně o ničem na Linuxu pořádně nefungují.

    a snad víš, že RS23 je komunikace dvou zařízení, tzn. že jednotlivé bity přenášených dat jsou vysílány postupně za sebou (v sérii) po jednom páru vodičů v každém směru.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    27.1.2012 18:39 chachar87 | skóre: 4 | blog: chacharovo
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    na komunikaci pouzivame vetsinou rs485, ale kde neni jine moznosti nez 232, tak pouzivame bez problemu tyhle
    Kdyz nejde o zivot, tak jde o hovno...
    gtz avatar 27.1.2012 19:34 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    od Papoucha převodníky znám jsou velice slušné. Jen rozměry nám tehdy nevyhovovaly ... bylo potřeba něco menšího. Dá se to bez problémů udělat doma (náklady cca 500,-), ale je to pouze half-duplex.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    28.1.2012 08:54 Jiri
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Papouch je má hodně předražené - obzvlášť ten základní model rs232->rs485. Vyzkoušeli jsme z dealextreme a funguje úplně stejně už dlouho, ale cena je mnohem nižší :) http://www.dealextreme.com/p/rs232-to-rs485-converter-6040
    gtz avatar 28.1.2012 10:46 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    RS232-RS485 je v pohodě. Ale již USB-RS485 není v pohodě, levné převodníky používají pouze half-duplex - tedy 3 dráty ven a některé aplikace s tím mají problémy. Většina zapojení pro USB-485 je právě pro half duplex.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    27.1.2012 18:45 dad
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    ..PCI-expres RS232 jsou totálně o ničem na Linuxu pořádně nefungují. ...

    my mame v nasazeni MOXA produkty a o problemech nevim. Co pouzivate?
    gtz avatar 27.1.2012 19:02 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Netuším co šéf někde sehnal..... Byl tam problém s komunikací a tak se tam dával převodník USB-RS232. My na komunikaci terminálů používáme náš soft, který komunikuje s terminály a tam tehdy byly nějaké problémy s odesíláním dat z PC do terminálu. Někdy se to odeslalo někdy zase ne. No dnes jsme byli na nějakém servisu, kdy měl zákazník náš převodník v WIN7 a byl velký problém to celé uchodit. Divné bylo, že když tam jel nějaký jejich kamerový systém tak se data nepodařilo poslat (by data opakovaně posíláme).
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    27.1.2012 18:36 dad
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    seriovy port signalizuje hardwarove pres piny RTS/CTS nebo DTR/DSR ze je pripraven prevzit dalsi data. My jsme drive pouzivali vlastne vyhradne RTS/CTS (to jsou piny 4/5 na 25 kolikove zastrcce) - myslim kvuli tomu, ze DTR nekteri vyrobci zneuzivali jinak.

    Ale dneska bych take vychazel z toho, ze seriovy port bude brzy out a vsechno pobezi pres usb.
    Dreit avatar 27.1.2012 20:43 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Právě 25-kolíková zástrčka mě docela děsí, protože teď je všude jen ta 9-kolíková :-(

    Tak ale na USB můžu připojit rovnou andruino, radši bych něco primitivního, co umí klidně i jen posílat data jedním směrem, ale zato to skoro nic nestojí

    Nope
    29.1.2012 17:16 pjoter
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Jo, to si tady povime za dalsich 10 let, zda je seriovy port out nebo ne :-) Tyto konstatovani me bavi, dalsi ze stejneho soudku je treba tento "NAND u embedded zarizeni plne nahradi SD karty, NAND uz bude brzy out".
    27.1.2012 19:25 Tom
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Momentálně nevím jak s tím vstupem přes audio ( jen nezapomeňte, že jsou tam kondenzátory a projdou jen impulzy - žádné delší úrovně v 0 nebo 1 ) Ale pokud jde o výstup, existují knihovny pro seriový výstupní port na audio výstupu. A ten je stereo, tak můžete mít linky dvě. Našel jsem tehdy odkaz přes AndroidMarket, když jsem potřeboval dostat data z tabletu do Arduina.
    Dreit avatar 27.1.2012 20:45 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Nezapomínám, právě mi jde jen o ty impulzy. Teda, takže přes zvukovku už i posílat sériově data? No, ne že by mě to nenapadlo, ale že na to opravdu existuje i nějaká knihovna.....wow :-)

    Nope
    xkucf03 avatar 28.1.2012 19:17 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Tak ono kdysi se používaly modemy, které nebyly připojené drátem, ale položilo se na ně sluchátko telefonu a data šla přes mikrofony a reproduktory…
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    kotyz avatar 28.1.2012 20:01 kotyz | skóre: 25 | blog: kotyzblog | Plzeň
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    To sem viděl akorát ve filmech a nechtělo se mi moct věřit že to vážně kdysi používali ...
    Hrdý člen KERNEL ULTRAS. | Furry/Brony/Otaku | Nemám čas ztrácet čas. | In 'pacman -Syu' we trust!
    Bystroushaak avatar 28.1.2012 20:31 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Pokud vím, radioamatéři podobné módy pro komunikaci používají dodnes. STANAG který používá NATO je třeba docela hustý.
    xkucf03 avatar 28.1.2012 20:54 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Takhle budeme komunikovat, až nám vypnou Internet…
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Bystroushaak avatar 28.1.2012 21:20 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Jak kdo, na to je zapotřebí mít licenci imho :P
    Dreit avatar 29.1.2012 00:14 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Jendа avatar 27.1.2012 21:53 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    jen nezapomeňte, že jsou tam kondenzátory a projdou jen impulzy - žádné delší úrovně v 0 nebo 1
    Menšestr nebo podobná modulace.

    Tohle nevím v jakém je stavu.
    28.1.2012 00:10 Kvakor
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Může se to modulovat: amplitudovou modulací (tj. měnit úrovně, jednoduché, ne moc spolehlivé), frekvenční modulací (přepínat frekvenci, celkem spolehlivé, ale složitější detekce) případně ješte dalšími, exotičtějšími druhy modulace (fázová, kvadraturní). A protože se může použít stereovstup, tak by šlo použít i různé rozdílové přenosy azpracovávat jen rozdíl (velmi jednoduché a spolehlivé).

    27.1.2012 20:21 Kvakor
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Paralelní i sériové porty jdou koupit zvlášť v cená v řádu stovek korun (viz např. tady), včetně PCIe verze. Čipy většinou v Linuxu podporu mají, navíc pro většinu pioužití stači stejně mít jen adresu bázového portu z výpisu PCI prostředků. Třeba dva paralelní porty na PCI řadiči, co mám v počitači, vypadají v lspci takto:
    00:06.0 Communication controller: NetMos Technology PCI 9815 Multi-I/O Controller (rev 01)
    	Subsystem: LSI Logic / Symbios Logic 2P0S (2 port parallel adaptor)
    	Flags: medium devsel, IRQ 17
    	I/O ports at d800 [size=8]
    	I/O ports at d400 [size=8]
    	I/O ports at d000 [size=8]
    	I/O ports at c800 [size=8]
    	I/O ports at c400 [size=8]
    	I/O ports at c000 [size=16]
    	Kernel driver in use: parport_pc
    	Kernel modules: parport_pc
    
    Adresy, co potřebujeme, jsou ta první a ta třetí v pořadí, v případě pochybností je to neejedoduší to zkusit přímo na hardwaru, nebo nechat jádro natáhnout ovladač a kouknout se, co vypíše:
    parport1: PC-style at 0xd800 (0xd400), irq 17, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
    parport2: PC-style at 0xd000 (0xc800), irq 17, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
    
    Ty druhé jsou pro EPP/ECP a pro používaní paralelního portu jako GPIO nejsou potřeba.

    Pokud se nechcete trápit s USB obludkami, je tohle asi nejjednoduší řešení.
    Dreit avatar 27.1.2012 20:49 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Děkuji moc, vypadá to jako moc zajímavá možnost :-)

    Nope
    27.1.2012 21:08 Kvakor
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Ještě k tomu sériovému portu, záleží, jaký typ řízení toku umí druhá strana.

    Ta hardwarove nejjednoduší je pomocí softwaru posíláním speciálních řídících znaků XON/XOFF (0x11 a 0x13), kde XOFF znamená, zjednodušeně řečeno, "Teď nic neposílej, mám plno" a XON "Můžeš zas posílat". Tento protokol používají většinou pomalá zařízení, obzvlášť když komunikují v textovém protokolu. K připojení stačí jen tři vodiče, RX, TX a zem.

    Pak je několik variant řízení toku pomocí signálú na řízení modemu, většinou pomocí RTS+CTS (občas i DTR+DSR). Když je zařízení na druhém konci může přijímat, nastaví RTS (Ready To Send), které je připojené k vstupu CTS (Clear To Send) a naopak. Z pohledu aplikace se o to není třeba nijak, stačí to jen zapnout a ovladač udělá zbytek.

    Na připojení je třeba pět vodičů, i když teoreticky jde použít k řízení i další signály*. Hlavní výhoda je možnost použít vyšší rychlosti (než, řekněme, 9 600 baudů) a bezproblémové přenášení binárních dat. A často používaný převodník úrovní TTL<->RS232 MAX232 má právě čtyři vstupy/výstupy, takže na TX+RX+RTS+CTS to přesně stačí.

    Nevýhoda je, že různá zařízení to řeší různým způsobem, i když ve většině případu by mělo stačit jen proházet dráty. Tedy alespoň teoreticky ...

    *Například jsem viděl popis GPS přijímače, kde jeden signál indikoval 2D/3D fix (tj. získání polohy) a druhý posílal sekundové pulzy.
    Jendа avatar 27.1.2012 21:48 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    To je neuvěřitelné, jaké obezličky se vymyslí kvůli tomu, že výrobci počítačů nejsou schopní vyvést GPIO!

    Signál se dá generovat programem siggen/sweepgen.
    28.1.2012 01:40 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Současné kompy maj GPIO v čipu BIOSu...
    Jendа avatar 28.1.2012 01:46 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Jasně, ale to očividně není vyvedené tak, jak bychom si představovali…
    28.1.2012 02:07 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Omotanej drátek? :-D

    Ještě by třeba šlo využít i2c sběrnici, co bejvá v kompu.
    28.1.2012 14:59 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    I2C (pod jmenem DDC) je vyvedena v kazdem VGA a DVI portu, i kdyz v podstate jde o dva GPIO piny na kterych se I2C dela softwarove.
    29.1.2012 17:20 pjoter
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    No to asi zalezi jak a kde, kazdopadne ja bych si dovolil spise trvdit opak.
    28.1.2012 17:32 Jirka Keresteš | skóre: 12
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Pokud mas USB, tak muzes mit GPIO pinu (skoro) kolik potrebujes. Hint: FT2232 + asynchronni bitbang rezim ;-)
    A physics book seems to be a mathematician's worst nightmare.
    28.1.2012 03:44 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Ahoj,

    protoze jsem si kdysi nejake generovani sinusovky v C napsal, tak jsem ten programek nekde vyhrabal a trosku upravil (prokrastinace :-)).

    Umi to generovat libovolne dlouhy sinus o libovolne frekvenci a amplitude na 8 bitech (sinusovka je symetricka kolem hodnoty 128 (teda az na amplitudu 128, tu v kladne casti skaluju na 127, at se to vleze do 255), vyssi amplitudy orezavam) pri vzorkovaci frekvenci 48000 Hz (ta by mohla jit zmenit) co hraje libovolny cas (i nekonecne dlouhy, i velmi kratke).

    Jako zarizeni pro komunikaci se zvukovkou to otvira /dev/dsp, tedy to nepouziva alsu a mozna to nepojede uplne vsude (ruzna pulseaudia mozna budou problem). Kdyz to zapnes, nemej pustenou zadnou jinou aplikaci co neco prehrava, pripadne to zkus pustit takhle: aoss ./program. Jinak v nejhorsim bych to asi umel prepsat i na alsu, ale kod by byl delsi :/.

    Je to spise jako priklad, nemel by byt problem si to nejak upravit, jak budes potrebovat.

    Co se pak tyce cteni, taky by to slo samozrejme vyresit ;), cetl bys navzorkovany mikrofonni vstup a s tim si uz muzes delat co chces (treba nejake zpetne fourierovy transformace ze :D) - ale s mikrofonem sem si nikdy nehral, by se muselo zas vygooglit nejake howto :).

    Tady je zdrojak:
    /* Generovani sinusovky */
    /* Autor: Vaclav Svirga */
    /* (tedy az na nastaveni zvukovky, to uz nevim z jakeho tutorialu sem vykrad) */
    /*
     DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                        Version 2, December 2004
    
     Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
    
     Everyone is permitted to copy and distribute verbatim or modified
     copies of this license document, and changing it is allowed as long
     as the name is changed.
    
                DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
       TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    
      0. You just DO WHAT THE FUCK YOU WANT TO. 
    */
    
    #include <unistd.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/ioctl.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <linux/soundcard.h>
    #include <math.h>
    
    //Uzivatelske konstanty
    #define D_AMP 128  //defaultni amplituda (0 - 128, vyssi amplitudy se orezou)
    #define D_FREQ 440 //defaultni frekvence (Hz)
    #define D_TIME -1  //defaultni delka hrani (v sekundach)
                       //klidne to muze byt desetinne cislo, ale nejmensi casovy usek je
                       //delka jedne periody sinu * (N + 10), kde N je pocet period
                       //aby se to presne vlezlo do poctu vzorku (aby sinusovka navazovala)
                       //Pro NEKONECNO jde zadat -1
    
    //Nejake interni konstanty, nemenit az na vzorkovaci frekvenci
    #define RATE 48000   // the sampling rate
    #define SIZE 8      // sample size: 8 or 16 bits - jen pro nastaveni zvukovky */
    #define CHANNELS 1  // 1 = mono 2 = stereo - jen pro nastaveni zvukovky
    #define LENGTH 20 //max delka bufferu v sekundach
    
    unsigned char buf[LENGTH*RATE*SIZE*CHANNELS/8]; //jednosekundovy buffer
    
    //Pomocna funkce pro vytvoreni sinu s patricnou amplitudou ve stupnich
    //x je uhel, a je |amplituda|, nula sinusovky je ve 128
    //Pri amplitude 128 se pro kladnou cast dela amplituda 127, aby se vysledek vesel na 8 bitu
    //    tedy je sinus nesymetricky
    //Pri vyssich amplitudach se sinus orezava na 8 bitu
    int sinus(int x, int a)
    {
      if (a==0) return 0;
      x %= 360;
      int ret = sin((M_PI * 2.0 * x) / 360.0) * ((x<= 180 && a == 128) ? 127 : a) + 128;
      if(ret > 255) ret = 255;
      if(ret < 0) ret = 0;
      return ret;
    }
    
    int main(int argc, char *argv[])
    {
      //Nejaka magie pro otevreni zvukovky
      int fd;  /* sound device file descriptor */
      int arg;  /* argument for ioctl calls */
      int status;   /* return status of system calls */
      /* open sound device */
      fd = open("/dev/dsp", O_RDWR);
      if (fd < 0) {
        perror("open of /dev/dsp failed");
        exit(1);
      }
      /* set sampling parameters */
      arg = SIZE;     /* sample size */
      status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);
      if (status == -1)
        perror("SOUND_PCM_WRITE_BITS ioctl failed");
      if (arg != SIZE)
        perror("unable to set sample size");
      arg = CHANNELS;  /* mono or stereo */
      status = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &arg);
      if (status == -1)
        perror("SOUND_PCM_WRITE_CHANNELS ioctl failed");
      if (arg != CHANNELS)
        perror("unable to set number of channels");
      arg = RATE;     /* sampling rate */
      status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);
      if (status == -1)
        perror("SOUND_PCM_WRITE_WRITE ioctl failed");
    
      //nacteni parametru
      int f = D_FREQ, amp = D_AMP, i;
      float time = D_TIME;
      if (argc > 1) f = atoi(argv[1]);
      if (argc > 2) amp = atoi(argv[2]);
      if (argc > 3) time = atof(argv[3]);
      printf("Hrani sinusovky na /dev/dsp\n"
             "Pokud vam to nehraje, nebo chcete softwarovy mixer, zkuste to pustit s aoss ./program\n\n"
             "Frekvence je:    %6i Hz \t(mozne zadat jako 1. arg)\n"
             "Amplituda je:    %6i    \t(mozne zadat jako 2. arg, idealne 0 - 128, vyssi amp se orezou, 128 je 127 pro kladnou cast)\n"
             "Delka hrani je:  %3.3f s\t(mozne zadat jako 3. arg (i des. cislo), -1 je nekonecno)\n", f, amp, time);
      if(f <= 0 || amp < 0) exit(1);
      
      //Spocitame kolik amplitud sinusovky se nam PRESNE vleze do vzorkovaci frekvence + 10
      //Je to nutne proto, aby sinusovky hezky navazovaly na sebe a buffer nebyl prilis kratky
      //Pokud by se to nesplnilo, nemuselo by to hrat pekne ;]
      int count_amp = 10;
      while ((RATE * count_amp) % (f) != 0) count_amp++;
      
      //Spocitame delku vsech amplitud ve vzorcich
      int size_amps = (RATE * count_amp) / (f);
      int s;
      
      //vygenerujeme buffer se vzorky sinu
      for (i = 0; i < size_amps + 1; i++)
      {
        s = sinus((360.0 * count_amp * i) / size_amps, amp);
        buf[i] = s > 255 ? 255 : s;
      }
     
      //zahrajeme sinusovku :)
      float remain = (RATE * time) / size_amps - (int) ((RATE * time) / size_amps);
      //budeme prehravat buffer tak dlouho, aby jsme hrali pozadovany cas
      for(i = 0; time < 0 ? 1 : i < (int) ((RATE * time) / size_amps); i++)
      {
        status = write(fd, buf, size_amps);
      }
      //A nakonec prehrajeme zbytek do pozadovaneho casu, nalezite osekly
      status = write(fd, buf, size_amps * remain);
    }
    
    Přeložíš to takhle: gcc -lm -o program program.c a pustis treba takhle:

    ./program

    (bude hrat porad komorni a pri amplitude 128)

    nebo

    ./program 200 10 0.5

    (pul sekundy 200 Hz pri amplitude 10)

    nebo

    ./program 200 10 -1

    (nekonecne dlouho 200 Hz pri amplitude 10).

    Zbytek informaci je v komentarich a napovede co to vypise pri spusteni...
    Baník pyčo!
    28.1.2012 03:50 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Příloha:
    Sakra, radek 118 je tam zbytecne, zbylo z predchoziho prepisovani, cely ten cyklus by mel byt
      //vygenerujeme buffer se vzorky sinu
      for (i = 0; i < size_amps; i++)
      {
        buf[i] = sinus((360.0 * count_amp * i) / size_amps, amp);
      }
    Ale funguje to stejne :-).

    No pro vetsi pohodli prikladam zdrojak do prilohy.
    Baník pyčo!
    28.1.2012 03:52 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    A jeste tam nezaviram soubor :'-(, nakonec si muzes pridat fclose(fd);, ale to taky nema na nic vliv ;)... Os zavre, Os je hodny :-).
    Baník pyčo!
    28.1.2012 04:01 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Hmmm a posledni malickost co tam vidim, komentar u konstanty D_TIME (default time), ze cas muze byt nejmene *neco* keca, cas muze byt libovolny, to platilo predtim nez sem to vylepsil a poslal sem :-). Neco na tom, ze komentare zastaravaji, bude :-D. Porc clovek vzdycky na ty chyby prijde az to "odevzda"? :P
    Baník pyčo!
    28.1.2012 04:04 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    A kdyby to jeste nekdo moc zkoumal, mam tam v komentari frazi "kolik amplitud se vleze do..." a melo to byt "kolik period se vleze do"... chjo :/, to je tim ze jsou 4 rano ;]... uz ten soubor zaviram, nebo z toho zesedivim, dulezite je, ze to dela co ma (aspon doufam) :).
    Baník pyčo!
    Dreit avatar 28.1.2012 15:18 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Teda, díky moc za vlákno příspěvků, určitě se to bude hodit :-)  I když spíš koukám po sox, i tak - bude se mi to hodit minimálně v případě, kdybych se učil programovat v C ;-)

    Nope
    28.1.2012 16:36 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Není zač :-),

    ono z blogu jsem pochopil že ten počítač má ten tvůj stroj nějak řídit a to řízení by šlo v C napsat celé, tedy že by to ten C program krom generování toho pískotu četl třeba ten mikrofon a podle přijmaných dat by něco dělal :). Akorát by se to muselo napsat vícevláknově. Zaujalo mě to, protože audio vstup / výstup je celkem hezké analogové rozhraní dostupné na každém pc do nějakých, dejme tomu, 10 kHz a využití pro takové účely je dost zajímavý nápad :).
    Baník pyčo!
    Dreit avatar 28.1.2012 18:20 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Pochopeno správně :-)  Snažím se použít naprosto nejjednodušší principy, jestli se k tomu jednou dokopu, tak to pojede jednovláknově a pokudmožno chci aby všechno šlo zrealizovat v Bashi. A proč to dělám? Protože můžu :-)  A protože neumim s C :-D

    Děkuji, obecně analog bych pořád cpal kamkoli to jde, asi je to můj osud :-D

    Nope
    Bystroushaak avatar 28.1.2012 16:53 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Hm. Kdysi jsem měl v plánu udělat systém pro duplexní přenos dat zvukem, protože mi taky došlo že zvukovka je to jediné, co dnes mají všechny počítače. Nakonec to padlo na kombinaci lenosti a nepochopení FFT (ne že bych to neuměl použít, ale matematicky jsem to moc nepobral).

    Pár linků k tématu:
    Dreit avatar 28.1.2012 18:23 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Děkuju moc za hromadu linků, rychle jsem na to kouknul a zaujalo mě to :-)  Hlavně programování Andruina přes zvukovku :-D   Jestli někdy programovat mikročipy, tak chci jít rozhodně do AVR ;-)

    Nope
    28.1.2012 21:51 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Všichni zapomínaj na Bellarda :-(.
    Bystroushaak avatar 29.1.2012 02:46 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Hah, o tom jsem ani nevěděl, přesto že Bellard je jeden z mých oblíbenců :D S tím jeho javascriptovým emulátorem x86 jsem si docela vyhrál, udělal jsem pro něj implementaci textové life a packer co zabalí data sám do sebe (.sh soubor), takže je můžeš různě přenášet pomocí toho clipboardu tam :)
    Grunt avatar 28.1.2012 23:11 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Přílohy:
    Absolutně nesouhlasím. Od komunikace se zařízeními tu máme jiné výstupy. Že se z PC stala víc spíš kolíkovačka pro pár spotřebních krámů místo obecného kontroleru, za to už nemůžu. Nepoužívej x86. Na takové věci je to GPIO a pár jiných sběrnic. Kupodivu i blbé Spektrum jakožto ikona spotřebního zboží z oblasti mělo obecný vstupně/výstupní interfejs na bastlení a pro komunikaci s okolím. Zvuková karta samozřejmě není nic jiného než DAC/ADC jako každý jiný, ale v tomhle ohledu je trošku specifický. Základ je Resistor ladder nebo 1-bitová oversamplovaná Delta-sigma, jenže pak následuje kaskáda specifických filtrů (zvlášť u toho 1-bitu je to docela drsné) a celkově je to ke komunikaci docela komplexní zařízení. Nehledě na to, že spousta zvukovek má nějaké vyrovnávací buffery a na nějaký real-time se hraje jen těžko. Komunikaci skrze zvukové porty už jsem si samozřejmě v minulosti zkoušel, je to nosná platforma jako každá jiná, ale jinak nic moc. Je tu spousta jiných zajímavých alternativ. Ani co do parametrů to nevypadá se zvukem moc zajímavě. V minulosti se to používalo (viz některých z mých zápisů v minulosti) právě skrze zmiňované modulace, ale jinak je právě zvukovod víc náchylný ke zkreslování a chytání různých šumů, takže by si ještě ke všemu musel řešit i nějakou korekci chyb, započetí přenosu (na pulzní ovládání krokáče prosím zapomeň rovnou), atd. Celkově se to stává nezajímavým. Jinak já si ze zvukovky udělal aspoň spektrální analyzátor (viz přílohy — konkrétně měřím vyfiltrovaný tvar výstupního střídavého proudu z UPSky který ho střídá pomocí PWM), ale doporučuju si ho radši koupit (já si to můžu dovolit, já jsem chudý :-)) C se nauč. Celé je to jen o tom co budeš rvát funkci sinus. Zatím jsem byl ještě líný se naučit pracovat s knihovnami ALSy a řeším to skrze buffer, write(1, buffer, VELIKOST_BUFFERU) a pípu do aplay/arecord, ale i tak je to na pár řádků.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    29.1.2012 00:39 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    IMG099.jpg
    Žádnej průběh nevidím, ale máte hezkej vchod do baráku ;-). Jinak pozor, mám za to, že jsem si spekrálním analyzérem ze zvukovky odpálil zvukovku.
    Grunt avatar 29.1.2012 13:01 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Žádnej průběh nevidím, ale máte hezkej vchod do baráku
    No jo. Debilní lesklé obrazovky. To nahoře je waveform, ten Gauss je okno a to pod tím je spektrogram. Čím víc vpravo, tím vyšší frekvence a osa směrem dolů je čas. Původně to byly skoro schodky, proto tolik čar za sebou i ve vyšších frekvencích (jsou to harmonické).
    Jinak pozor, mám za to, že jsem si spekrálním analyzérem ze zvukovky odpálil zvukovku.
    Musíš kontrolovat kolik ti tam leze energie. Dobré jsou takové ty trafa co se dají šroubovákem přizpůsobit.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    29.1.2012 13:24 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    To nahoře je waveform, ten Gauss je okno a to pod tím je spektrogram. Čím víc vpravo, tím vyšší frekvence a osa směrem dolů je čas. Původně to byly skoro schodky, proto tolik čar za sebou i ve vyšších frekvencích (jsou to harmonické).
    Stačí napsat Baudline to mluví samo za sebe :-D. Dobrej soft.

    No já jsem jen sondoval přijímač FSK 868MHz s napětím 5V max. Ale je fakt, že ta zvukovka už byla načatá.
    Grunt avatar 29.1.2012 13:30 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    No já jsem jen sondoval přijímač FSK 868MHz s napětím 5V max
    Na to už bude potřeba nějaká elektronika, že? Já to zkoušel jen na jednoduchý R-C filtr.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    29.1.2012 13:42 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Ani ne, to FSK je na tom modulu v odkrytých signálech v CMOS logice.
    29.1.2012 19:04 w4rr10r
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    Moje sotva rok staré PC má LPT, GamePort a nevyvedený COM. Někde je chyba.
    Dreit avatar 29.1.2012 20:14 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty

    Mám cca 2 roky, má COM, LPT přes bracket (za stovku) a GamePort leda kdybych se postavil na hlavu, stáhnul všechnu dokumentaci k desce, připájel konektor a napsal si ovladač.

    Nope
    30.1.2012 16:15 w4rr10r
    Rozbalit Rozbalit vše Re: Čtení dat z RS-232 / zvukové karty
    GamePort byl AFAIK vždycky na zvukovce. Zvukovku s GamePortem do PCI dneska pořídíš za pár stovek.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.