abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 17:22 | Komunita

Martin Flöser představil na svém blogu projekt XFree KWin. Cílem projektu je rozběhnout správce oken KWin na Waylandu bez XWaylandu [reddit].

Ladislav Hagara | Komentářů: 1
dnes 16:55 | Komunita

Do pátku 29. září probíhá v Praze v hotelu Hilton konference SUSECON 2017 pořádaná společností SUSE. Dění na konferenci lze sledovat na Twitteru. Nils Brauckmann, CEO společnosti SUSE, vítá účastníky konference na YouTube.

Ladislav Hagara | Komentářů: 0
dnes 07:00 | Komunita

Příspěvek na blogu společnosti Yubico informuje o začlenění podpory bezpečnostních klíčů FIDO U2F do Firefoxu Nightly. Dosud bylo možné dvoufázové ověření pomocí FIDO U2F ve Firefoxu zajistit pouze pomocí doplňku.

Ladislav Hagara | Komentářů: 3
dnes 06:00 | Humor

Adobe PSIRT (Adobe Product Security Incident Response Team) neúmyslně zveřejnil (archive) na svém blogu svůj soukromý OpenPGP klíč. Klíč byl revokován a vygenerován nový. Nelze nezmínit xkcd 1553 - Veřejný klíč.

Ladislav Hagara | Komentářů: 1
včera 20:00 | Nová verze

Byla vydána (cgit) verze 0.99 svobodného nelineárního video editoru Pitivi. Jedná se o release candidate verze 1.0. Přehled úkolů, které je nutno ještě dodělat, na Phabricatoru. Pitivi je k dispozici také ve formátu Flatpak.

Ladislav Hagara | Komentářů: 0
včera 17:11 | Komunita

Microsoft s Canonicalem představili linuxové jádro Ubuntu optimalizováno pro cloudové služby Microsoft Azure (linux-azure). Jako výchozí je toto menší a výkonnější jádro použito již v Ubuntu Cloud Images for Ubuntu 16.04 LTS. Canonical zatím nenabízí patchování tohoto jádra za běhu systému (Canonical Livepatch Service).

Ladislav Hagara | Komentářů: 1
včera 14:55 | Komunita

Facebook oznámil, že přelicencuje open source projekty React, Jest, Flow a Immutable.js ze své vlastní kontroverzní licence BSD+Patents na licenci MIT. Stane se tak tento týden s vydáním Reactu 16. Jedním z důvodů přelicencování bylo oznámení nadace Apache, že software pod Facebook BSD+Patents licencí nesmí být součástí produktů pod touto nadací [Hacker News].

Ladislav Hagara | Komentářů: 0
23.9. 21:44 | Nová verze

Po půl roce od vydání verze 9.0 byla vydána verze 10.0 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 0
22.9. 18:11 | Nová verze

Společnost Oracle oficiálně oznámila vydání Java SE 9 (JDK 9), Java Platform Enterprise Edition 8 (Java EE 8) a Java EE 8 Software Development Kit (SDK). Java SE 9 přináší více než 150 nových vlastností.

Ladislav Hagara | Komentářů: 0
22.9. 12:11 | Komunita

Na Humble Bundle lze získat hororovou počítačovou hru Outlast (Wikipedie) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 2
Těžíte nějakou kryptoměnu?
 (5%)
 (3%)
 (17%)
 (75%)
Celkem 571 hlasů
 Komentářů: 23, poslední včera 18:12
    Rozcestník

    Dotaz: C++, obsluha serioveho portu, daemon

    6.6. 19:23 Hrabosh | skóre: 26 | blog: HBlog | Brno
    C++, obsluha serioveho portu, daemon
    Přečteno: 758×
    Zdravím,

    potřeboval bych napsat program, kterej bude spuštenej čekat a poslouchat na seriovem portu. Když přijdou data (ASCII text), rozparsuje, zpracuje a pošle command(taky ASCII text) na ten samý seriový port.

    Můžete mě trochu nasměrovat s tou obsluhou toho portu? Jak udělat, aby ten program poslouchal na seriovém portu a nedošlo k timeoutu? Budu před vysíláním muset ten seriovy port zavřít pro čtení a otevřít pro zápis, nebo to tak nefunguje...?

    Díky, Z.
    To jsem psal já ... to není bordel, to je modulární!

    Řešení dotazu:


    Odpovědi

    6.6. 19:41 NN
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    Nestacilo by to v Pythonu? Pouzivam a bez problemu..
    7.6. 08:33 Hrabosh | skóre: 26 | blog: HBlog | Brno
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    To vypadá dobře. Já sjem chtel C++, páč ho budu potřebovat kvuli práci, tak bych se pocvičil. Ty v tom děláš přesně co?
    To jsem psal já ... to není bordel, to je modulární!
    7.6. 12:32 NN
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    Ja v tom ve smycce taham data z AVR/MAX232, ktera regexpem parsuju a posilam dal..
    vlastikroot avatar 7.6. 18:45 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    Ja pouzivam QtSerialPort. Podporuje plne asynchronni komunikaci, takze kdyz mi prijdou nejaky bajty, spusti se funkce a zpracuje je. Vetsinou je zpracovavam byte po bytu, ale v pripade ASCII textu se da pouzit s vyhodou newline jako oddelovac zprav. Synchronni (blocking) IO uz je minulost, tim bych se moc nezabyval.
    Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 80.188.182.6
    7.6. 21:01 R
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    Port otvoris normalne cez open (O_RDWR | O_NOCTTY) - na citanie aj zapis. Nastavis parametre (tcgetattr, tcsetattr). Citas/zapisujes cez read/write.
    Řešení 1× (Hrabosh (tazatel))
    21.6. 17:18 frr | skóre: 33
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon

    Měl bych jeden příkládek, jak jsem to páchával já. Omlouvám se za nevysokou štábní kulturu, je to jenom pár rychlých hacků. Je tam pár funkcí pro nastavení baudu, formátu znaku apod. prostě inicializaci sériového portu skrz termios. A C++ je tam jenom pro primitivní opouzdření - vlastně se jedná o skoro čisté Céčko.

    Pokud se správně pamatuju, stačilo otevřít device pro čtení i zápis (podrobné flagy viz zdroják), pokonfigurovat baud rate a trochu umravnit TTY halucinace aby se device choval jako tupé znakové zařízení, a pak šlo ten port obsluhovat dvěma různými vlákny, z nichž jedno většinu času spalo zablokované v read() a druhé občas poslalo nějaký write(). Obě vlákna sdílejí otevřený file descriptor.

    Troufl bych si nesouhlasit s názorem, že blokující synchronní I/O je out. Minimálně pokud se sériových portů týče. Rozvlákněním s důslednou aplikací primitivních principů producent/konzument a "pouze na jednom místě se smíš na neurčito zablokovat" se dají napsat docela zajímavé věci (nemluvím o výše odkázaném rychlém bastlu). Je na tom nějaká práce se vzájemnou synchronizací threadů a člověk se nesmí bát trochu "vykouknout ze škatulky" klasických POSIXových synchronizačních primitiv: já jsem si prošel učebnicové příklady a pak jsem si z nich skládal trochu složitější objekty pro "vzájemné vyloučení" a komunikaci více vláken podle potřeb konkrétní aplikace.
    Pravda je, že asynchronní IO s použitím callbacků vyřeší spoustu věcí asi napohled méně pracně - mně to přišlo trochu nepřehledné a v některých případech se mi moc nelíbilo, že pak aplikace dělá "příliš mnoho různých věcí v jednom vlákně", tzn. při nepečlivém programování hrozí situace, kdy se nějaký callback "nečekaně" zablokuje a zdržuje ostatní callbacky. Záleží na osobních preferencích, cílech, situaci, programátorské sebekázni...

    [:wq]
    21.6. 17:30 frr | skóre: 33
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    Pardon... znovu jsem si přečetl zadání a mám pocit, že ani nepotřebujete machrovat s vlákny, zámky a frontami. To Vaše zadání je prostý "odpovídač" request/response. Pokud správně rozumím, nepotřebujete zároveň přijímat a odesílat. Úloha "čekám na nějaká data, když přijdou tak se podrbu na hlavě a pak něco pošlu, goto na začátek" se dá pohodlně obsloužit jediným vláknem. Kein Stress. To že může být device otevřený s dovoleným zápisem i čtením je samozřejmost. Softwarové vrstvy i UART hardware mají každým směrem samostatný buffer. Inicializace termios viz můj odkaz výše. Tuším tcsetattr() a pár funkcí kolem. Čtení zápis normálně read()/write(). Read se samozřejmě na neurčito zablokuje, pokud nechodí žádná data, ale dá se signálem probudit, pokud si to povolíte. I timeout se dá zařídit. Nebo použijte nějaký ten async způsob práce, pokud Vám bude sympatičtější než blokující vlákna.
    [:wq]
    22.6. 08:42 frr | skóre: 33
    Rozbalit Rozbalit vše Re: C++, obsluha serioveho portu, daemon
    Což mi připomíná, že mám možná pro Vaše potřeby "hotovější" example. Jediné vlákno, ale má to démonizaci, má to již zmíněné rutiny pro konfiguraci sériového portu, dělá to cosi ve smyčce se sériovým portem. Posílá to string jednou za sekundu, pokud možno přesně na hraně celé sekundy (a že to není legrace, je ten kód kolem časování v hlavní smyčce dost nepřehledný a hustě komentovaný.) Vám stačí vykostit z hlavní smyčky programu ty blbosti kolem časovačů, jako hlavní blokující bod tam dát nějaký read() ze sériového portu a dopsat svých pár rutin na tu sériovou komunikaci.
    [:wq]

    Založit nové vláknoNahoru

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

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