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 12:00 | Nová verze

Po cca 3 týdnech od vydání Linux Mintu 18.3 s kódovým jménem Sylvia a prostředími MATE a Cinnamon byla oznámena také vydání s prostředími KDE a Xfce. Podrobnosti v poznámkách k vydání (KDE, Xfce) a v přehledech novinek s náhledy (KDE, Xfce). Linux Mint 18.3 je podporován do roku 2021.

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

Byla vydána verze 17.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace, které nebyly dosud portovány na KDE Frameworks 5, byly z KDE Aplikací odstraněny.

Ladislav Hagara | Komentářů: 29
včera 03:00 | Komunita

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

Ladislav Hagara | Komentářů: 0
včera 02:00 | Zajímavý software

Christian Kellner představil na svém blogu projekt Bolt řešící bezpečnost rozhraní Thunderbolt 3 na Linuxu. Pomocí příkazu boltctl nebo rozšíření GNOME Shellu lze komunikovat s démonem boltd a například zakázat neznámá zařízení a předejít tak útokům typu Thunderstrike nebo DMA.

Ladislav Hagara | Komentářů: 7
včera 01:00 | Nová verze

Po půl roce vývoje od vydání verze 11.0 byla vydána verze 11.1 svobodného softwaru pro vytváření datových úložišť na síti FreeNAS (Wikipedie). Nejnovější FreeNAS je postaven na FreeBSD 11.1. Přehled novinek v příspěvku na blogu. Zdůraznit lze zvýšení výkonu OpenZFS, počáteční podporu Dockeru nebo synchronizaci s cloudovými službami Amazon S3 (Simple Storage Services), Backblaze B2 Cloud, Google Cloud a Microsoft Azure

Ladislav Hagara | Komentářů: 0
14.12. 23:55 | Nová verze

Po dvou měsících vývoje od vydání verze 235 oznámil Lennart Poettering vydání verze 236 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 7
14.12. 20:00 | Nová verze Ladislav Hagara | Komentářů: 0
14.12. 19:33 | Pozvánky

Pražská Fedora 27 Release Party, oslava nedávného vydání Fedory 27, se uskuteční 19. prosince od 19:00 v prostorách společnosti Etnetera (Jankovcova 1037/49). Na programu budou přednášky o novinkách, diskuse, neřízený networking atd.

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

Byla vydána verze 2.11.0 QEMU (Wikipedie). Přispělo 165 vývojářů. Provedeno bylo více než 2 000 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 0
14.12. 17:44 | Komunita

Canonical oznámil dostupnost kryptografických balíčků s certifikací FIPS 140-2 úrovně 1 pro Ubuntu 16.04 LTS pro předplatitele podpory Ubuntu Advantage Advanced. Certifikace FIPS (Federal Information Processing Standards) jsou vyžadovány (nejenom) vládními institucemi USA.

Ladislav Hagara | Komentářů: 3
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (1%)
 (1%)
 (1%)
 (76%)
 (14%)
Celkem 999 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    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: 787×
    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.