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í
×
    včera 16:44 | Nová verze

    Byl vydán Mozilla Firefox 145.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Ukončena byla podpora 32bitového Firefoxu pro Linux. Přidána byla podpora Matrosky. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 145 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Lidé.cz (Wikipedie) jsou zpět jako sociální síť s "ambicí stát se místem pro kultivované debaty a bezpečným online prostředím".

    Ladislav Hagara | Komentářů: 38
    včera 10:33 | Nová verze

    Byla vydána nová verze 4.4 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | IT novinky

    ASUS má v nabídce komplexní řešení pro vývoj a nasazení AI: kompaktní stolní AI superpočítač ASUS Ascent GX10 poháněný superčipem NVIDIA GB10 Grace Blackwell a platformou NVIDIA DGX Spark. S operačním systémem NVIDIA DGX založeném na Ubuntu.

    Ladislav Hagara | Komentářů: 3
    včera 03:11 | Nová verze

    Desktopové prostredie Trinity Desktop vyšlo vo verzii R14.1.5. Je tu opravená chyba v tqt komponente spôsobujúca 100% vyťaženie cpu, dlaždice pre viac monitorov a nemenej dôležité su dizajnové zmeny v podobe ikon, pozadí atď. Pridaná bola podpora distribúcií Debian Trixie, Ubuntu Questing, RHEL 10 a OpenSUSE Leap 16.

    lukve | Komentářů: 8
    10.11. 22:11 | Nová verze

    Grafická aplikace Easy Effects (Flathub), původně PulseEffects, umožňující snadno povolovat a zakazovat různé audio efekty v aplikacích používajících multimediální server PipeWire, byla vydána ve verzi 8.0.0. Místo GTK 4 je nově postavená nad Qt, QML a Kirigami.

    Ladislav Hagara | Komentářů: 0
    10.11. 12:22 | Komunita

    Na YouTube lze zhlédnout Godot Engine – 2025 Showreel s ukázkami toho nejlepšího letos vytvořeného v multiplatformním open source herním enginu Godot.

    Ladislav Hagara | Komentářů: 0
    10.11. 10:00 | Humor

    Blíží se konec roku a tím i všemožná vyhlášení slov roku 2025. Dle Collins English Dictionary je slovem roku vibe coding, dle Dictionary.com je to 6-7, …

    Ladislav Hagara | Komentářů: 6
    10.11. 09:55 | IT novinky

    Cloudflare Radar: podíl Linuxu na desktopu dosáhl v listopadu 6,2 %.

    Ladislav Hagara | Komentářů: 4
    9.11. 19:22 | Pozvánky

    Chcete vědět, co se odehrálo ve světě techniky za poslední měsíc? Nebo si popovídat o tom, co zrovna bastlíte? Pak doražte na listopadovou Virtuální Bastlírnu s mikrofonem a kamerou, nalijte si něco k pití a ponořte se s strahovskými bastlíři do diskuze u virtuálního piva o technice i všem možném okolo. Mezi nejvýznamnější novinky patří Průšovo oznámení Core One L, zavedení RFID na filamentech, tisk silikonu nebo nový slicer. Dozvíte se ale i

    … více »
    bkralik | Komentářů: 6
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (47%)
     (18%)
     (17%)
     (22%)
     (15%)
     (22%)
     (15%)
     (16%)
    Celkem 343 hlasů
     Komentářů: 15, poslední 2.11. 08:25
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    14.9.2016 10:52 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: Jak nejlépe spouštět a ukočit externí programy z C
    Tak jsem to trochu učesal..... ir ovládání jsem nechal na irexec který spustím jako démona kde v konfiguraci mám:
    begin
       remote = *
       button = KEY_VOLUMEUP
       prog   = irexec
       config = amixer set PCM 300+ unmute
       repeat = 1
    end
    begin
       remote = *
       button = KEY_VOLUMEDOWN
       prog   = irexec
       config = amixer set PCM 300- unmute
       repeat = 1
    end
    begin
       remote = *
       button = KEY_MUTE
       prog   = irexec
       config = amixer set PCM mute
       repeat = 0
    end
    
    begin
      remote = *
      button = KEY_PLAY
      prog = irexec 
      config = echo "ok" > /tmp/radio.txt
    end
    
    begin
      remote = *
      button = KEY_LEFT
      prog = irexec
      config = echo "vlevo" > /tmp/radio.txt
    end
    
    begin
      remote = *
      button = KEY_RIGHT
      prog = irexec
      config = echo "vpravo" > /tmp/radio.txt
    end
    
    begin
      remote = *
      button = KEY_POWER
      prog = irexec
      config = echo "vypnout" > /tmp/radio.txt
    end
    
    A vlastní program:
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <string.h>
    #include <errno.h>
    #include <time.h>
    #include "pifacecad.h"
    
    #define VERZE		"0"
    #define PODVERZE	"4"
    #define MAX_RETEZEC	255
    #define MAX_RETEZEC_S   " %255s"
    #define CEKANI		5
    #define KONFIGURACE	"/etc/radio/config.txt"
    #define STANICE		"/etc/radio/stanice.txt"
    #define TLACITKO_1	0
    #define TLACITKO_2	1
    #define TLACITKO_3	2
    #define TLACITKO_4	3
    #define TLACITKO_MENU	4
    #define JOISTICK_LEFT	6
    #define JOISTICK_RIGHT	7
    #define JOISTICK_OK	5
    #define PREHRAVAC_PRIKAZY ovladani_prehravace
    #define PREHRAVAC	"mplayer -slave --really-quiet "
    
    #define ZAKMIT_MS	50
    #define SLEEP_TLACITKA	300
    
    // nazvy uzivatelskych znaků lcd
    # define ZNAK_PLAY 0
    # define ZNAK_PAUSE 1
    # define ZNAK_INFO 2
    # define ZNAK_MUSIC 3
    
    
    char stanice_stream[MAX_RETEZEC];
    char stanice_popis[MAX_RETEZEC];
    int p_play=1;
    FILE *PREHRAVAC_PRIKAZY;
    
    void sleep_ms(int milliseconds) 
    {
        struct timespec ts;
        ts.tv_sec = milliseconds / 1000;
        ts.tv_nsec = (milliseconds % 1000) * 1000000;
        nanosleep(&ts, NULL);
    }
    
    void play(char *adresa, char *text)
    {
    fprintf(PREHRAVAC_PRIKAZY, "loadfile %s\n", adresa);
    fflush(PREHRAVAC_PRIKAZY);
    pifacecad_lcd_clear();
    if(p_play==1) 
    {
      pifacecad_lcd_write_custom_bitmap(ZNAK_PLAY);
      pifacecad_lcd_write(" Play ");
      pifacecad_lcd_write_custom_bitmap(ZNAK_MUSIC);
      pifacecad_lcd_write("\n");
    }
    else 
    {
     pifacecad_lcd_write_custom_bitmap(ZNAK_PAUSE);
     pifacecad_lcd_write(" Pause \n");
    }
    pifacecad_lcd_write_custom_bitmap(ZNAK_INFO);
    pifacecad_lcd_write(" ");
    pifacecad_lcd_write(text);
    }
    
    
    void pauza(void)
    {
    if (p_play==1)
     {
      fprintf(PREHRAVAC_PRIKAZY, "pause\n");
      fflush(PREHRAVAC_PRIKAZY);
      pifacecad_lcd_home();
      pifacecad_lcd_write_custom_bitmap(ZNAK_PAUSE);
      pifacecad_lcd_write(" Pause \n");
      p_play=0;
     }
    else 
     {
      fprintf(PREHRAVAC_PRIKAZY, "pause\n");
      fflush(PREHRAVAC_PRIKAZY);
      pifacecad_lcd_home();
      pifacecad_lcd_write_custom_bitmap(ZNAK_PLAY);
      pifacecad_lcd_write(" Play ");
      pifacecad_lcd_write_custom_bitmap(ZNAK_MUSIC);
      pifacecad_lcd_write("\n");
      p_play=1;
     }
    
    }
    
    
    void error_lcd(char *error_text)
    {
    pifacecad_lcd_clear();
    pifacecad_lcd_write("ERROR: ");
    pifacecad_lcd_write(error_text);
    sleep(CEKANI);
    pifacecad_lcd_clear();
    }
    
    
    void nacti_stanici(int stanice)
    {
    FILE *stanice_soubor;
    int i;
    
    if ((stanice_soubor = fopen(STANICE,"rt")) == NULL) {
        error_lcd("Nelze otevrit soubor se stanicemi!");
        pifacecad_close();
        exit(1);
    }
    
    for (i=0; i<=stanice; i++)
    {
    stanice_popis[MAX_RETEZEC - 1]='\0';
    stanice_stream[MAX_RETEZEC - 1]='\0';
    
    fgets(stanice_popis, MAX_RETEZEC - 1, stanice_soubor);
    fgets(stanice_stream, MAX_RETEZEC - 1, stanice_soubor);
    }
    
    if (feof(stanice_soubor))
     {
       stanice_popis[0]='\n';
       stanice_stream[0]='\n';
     }
    
    fclose(stanice_soubor);
    }
    
    int main ()
    {
    
    int stanice;
    int i;
    int c;
    int tlacitko;
    FILE *soubor;
    char buffer[MAX_RETEZEC];
    
    // uživatelské znaky do LCD
    uint8_t play_symbol[] = {0x10, 0x18, 0x1c, 0x1e, 0x1c, 0x18, 0x10, 0x0};
    uint8_t pause_symbol[] = {0x0, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x0, 0x0};
    uint8_t info_symbol[] = {0x6, 0x6, 0x0, 0x1e, 0xe, 0xe, 0xe, 0x1f};
    uint8_t music_symbol[] = {0x2, 0x3, 0x2, 0x2, 0xe, 0x1e, 0xc, 0x0};
    
    
    // inicializace LCD
    	pifacecad_open();
    	pifacecad_lcd_clear();
    	pifacecad_lcd_blink_off();
    	pifacecad_lcd_cursor_off();
    	pifacecad_lcd_left_to_right();
    	pifacecad_lcd_backlight_on();
    
    
    // nahrání uživatelských symbolů....
            pifacecad_lcd_store_custom_bitmap(ZNAK_PLAY, play_symbol);
            pifacecad_lcd_store_custom_bitmap(ZNAK_PAUSE, pause_symbol);
            pifacecad_lcd_store_custom_bitmap(ZNAK_INFO, info_symbol);
            pifacecad_lcd_store_custom_bitmap(ZNAK_MUSIC, music_symbol);
    
    // test znaků....
    /*
            pifacecad_lcd_write_custom_bitmap(ZNAK_PLAY);
            pifacecad_lcd_write_custom_bitmap(ZNAK_PAUSE);
            pifacecad_lcd_write_custom_bitmap(ZNAK_INFO);
            pifacecad_lcd_write_custom_bitmap(ZNAK_MUSIC);
            sleep(10);
    */
    
    
    // zobrazení programu
    //        pifacecad_lcd_write_custom_bitmap(ZNAK_MUSIC);
    	pifacecad_lcd_write(" Program radio");
    //        pifacecad_lcd_write_custom_bitmap(ZNAK_MUSIC);
    	pifacecad_lcd_write("\n v ");
    	pifacecad_lcd_write(VERZE);
    	pifacecad_lcd_write(".");
    	pifacecad_lcd_write(PODVERZE);
    	sleep(CEKANI);
    
    // vlastní menu - play
    
    nacti_stanici(0);
    strncpy(buffer, PREHRAVAC, MAX_RETEZEC - 1 );
    buffer[MAX_RETEZEC - 1]='\0';
    strncat(buffer, stanice_stream, MAX_RETEZEC - strlen(buffer) -1);
    
    if ((PREHRAVAC_PRIKAZY=popen(buffer, "w")) == NULL)
     {
      perror("popen");
      exit(1);
     }
    
    play(stanice_stream, stanice_popis);
    
    while (1) 
       {
         sleep_ms(SLEEP_TLACITKA);
         tlacitko=0;
         if ((soubor = fopen("/tmp/radio.txt","rt")) != NULL)
           { 
             fscanf(soubor, MAX_RETEZEC_S, buffer);
             fclose(soubor);
             unlink("/tmp/radio.txt");
             if(strcmp(buffer, "vlevo")==0) tlacitko=JOISTICK_LEFT;
    	 if(strcmp(buffer, "vpravo")==0) tlacitko=JOISTICK_RIGHT;
             if(strcmp(buffer, "ok")==0) tlacitko=JOISTICK_OK;
             if(strcmp(buffer, "vypnout")==0) tlacitko=TLACITKO_MENU;
    
    //printf("tlacitko je %i \n", tlacitko);
           
    }
    
    // zatím se to zde vypne (ukončí nekonečná smyčka) - později bude přidáno menu.....
         if (pifacecad_read_switch(TLACITKO_MENU)==0 || tlacitko==TLACITKO_MENU) break;
    
    // hlavní ovládání přehrávání
         if (pifacecad_read_switch(JOISTICK_OK)==0 || tlacitko==JOISTICK_OK)
    	 {
              pauza();
              while (pifacecad_read_switch(JOISTICK_OK)==0) sleep_ms(ZAKMIT_MS);
    	 }
    
         if (pifacecad_read_switch(JOISTICK_LEFT)==0 || tlacitko==JOISTICK_LEFT)
             {
    	 stanice--;
             if (stanice < 0) stanice=0;
             nacti_stanici(stanice);
             play(stanice_stream, stanice_popis);
             while (pifacecad_read_switch(JOISTICK_LEFT)==0) sleep_ms(ZAKMIT_MS);
             }
    
         if (pifacecad_read_switch(JOISTICK_RIGHT)==0 || tlacitko==JOISTICK_RIGHT)
             {
             stanice++;
             nacti_stanici(stanice);
             if (stanice_stream[0]=='\n')
               {
                 stanice--;
                 nacti_stanici(stanice);
               }
             play(stanice_stream, stanice_popis);
             while (pifacecad_read_switch(JOISTICK_RIGHT)==0) sleep_ms(ZAKMIT_MS);
             }
          }
    
    // konec programu uklid
    	pifacecad_lcd_clear();
    	pifacecad_lcd_write("Ukoncuji program");
    // ukončení prehrávače
            fprintf(PREHRAVAC_PRIKAZY, "stop\n");
            fflush(PREHRAVAC_PRIKAZY);
            pclose(PREHRAVAC_PRIKAZY);
    
    	sleep(CEKANI);
    	pifacecad_lcd_backlight_off();
            pifacecad_lcd_clear();
    	pifacecad_close();
    return 0;
    }
    
    
    a v souboru /etc/radio/stanice.txt jsou popsané stanice vždy na dvou řádcích

    popis
    stream
    popis
    stream
    .....

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.