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 18:11 | Nová verze

    Byla vydána nová verze 5.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Nová verze

    Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.

    Ladislav Hagara | Komentářů: 6
    dnes 04:33 | Zajímavý projekt

    Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,

    … více »
    NUKE GAZA! 🎆 | Komentářů: 34
    včera 14:22 | IT novinky

    Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.

    Ladislav Hagara | Komentářů: 11
    včera 04:22 | Nová verze

    SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 7
    včera 03:11 | Zajímavý projekt

    Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační

    … více »
    NUKE GAZA! 🎆 | Komentářů: 9
    15.3. 15:33 | Humor

    PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují

    … více »
    NUKE GAZA! 🎆 | Komentářů: 3
    15.3. 14:33 | Nová verze Ladislav Hagara | Komentářů: 4
    15.3. 12:33 | Zajímavý projekt

    FRANK OS je open-source operační systém pro mikrokontrolér RP2350 (s FRANK M2 board) postavený na FreeRTOS, který přetváří tento levný čip na plně funkční počítač s desktopovým uživatelským rozhraním ve stylu Windows 95 se správcem oken, terminálem, prohlížečem souborů a knihovnou aplikací, ovládaný PS/2 myší a klávesnicí, s DVI video výstupem. Otázkou zůstává, zda by 520 KB SRAM stačilo každému 😅.

    NUKE GAZA! 🎆 | Komentářů: 5
    14.3. 22:55 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa by měla dostat zhruba deset miliard dolarů (asi 214 miliard Kč) za zprostředkování dohody o převzetí kontroly nad aktivitami sociální sítě TikTok ve Spojených státech.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1098 hlasů
     Komentářů: 27, poslední dnes 19:26
    Rozcestník

    Dotaz: Jak na dva terminaly, aby si navzajem posilaly data a i je vypisovaly

    21.4.2005 17:00 VytliNoha | skóre: 1
    Jak na dva terminaly, aby si navzajem posilaly data a i je vypisovaly
    Přečteno: 332×

    Zdravim mohl byste mi nekdo poradit jak se da resit programek v cecku abych si pri spusteni navolil v prikazove radce jaky pseudo terminal se bude pouzivat ( ptsX ). Program se pak propoji na dalsi pseudo terminal a navzajem si posilaji data.

    Presne zadani zde:

    ........................................

    Napište program, teletype. Tento program otevře sériový port a vyšle na něj každý z klávesnice zapsaný znak a vypíše každý jednotlivý znak ze sériové linky přijatý. Pomocí sériového kabelu propojte COM1 a COM2 a spusťte 2 instance programu teletype. Který COM se bude používat specifikujte z příkazové řádky při spouštění programu.

    ________________

    Vim jak udelat abych se propojil na terminal a cetl z nej znaky ale nevim jak udelat aby jsme mohl navzajem mezi terminali prijimat i odesilat. Snad pomoci fce select? Prosim poradte, ( nechci to naprogramovat, jen nakopnout), zatim je to pro me spanelska vesnice. Dekuji

    Odpovědi

    wake avatar 21.4.2005 17:37 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    jeden thread v nekonecne smycce cte konsoli a posila to na pts, druhy thread v nekonecne smycce cte pts a posila to na konsoli. jeste musite vyresit interferenci konsole a vystupu (echo on/off), ale to uz necham na vas...

    btw. pozdravujte sveho ucitele programovani ;-)
    Tento příspěvek má hlavičku i patičku!
    21.4.2005 17:49 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    A nebude to mezi sebou delat bordel? Vsak v konzoli budu psat text ktery to bude posilat na druhy terminal a pritom ta moje konzole bude i ten text vypisovat. Kurna leda to omezit ze vse pujde na stridacku, 1. posle prijme a muze odeslat druhy zatim ceka. To by slo osetrit semaforem nebo mutexem.

    Jdu spravnym smerem?
    21.4.2005 18:53 m0rph
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    he? staci normalni cekaci smycka smycka se selectem, ktera periodicky provadi (neblokujici) cteni stdinu a toho portu, pokud se na nich neco objevi, coz vam rekne ten select. jeste se musi pomoci setbuf vypnout bufferovani stdinu a stdoutu, aby se data zpracovavala a zobrazovala hned a ne az po odradkovani.

    kdo chce na takovou blbinu pouzivat thready, at se vrati do windows.
    21.4.2005 19:09 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    No pro zacatecnika velke sousto pochopit vas prispevek. Ale snad to prelouskam kazdopadne jsem rad za kazdou radu.
    wake avatar 21.4.2005 19:11 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    a proc _periodicky_ a proc _neblokujici_ ?
    Tento příspěvek má hlavičku i patičku!
    Josef Kufner avatar 21.4.2005 19:20 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Oboji je zbytecne.

    Kdysi jsem delal program, ktery propojil svuj stdin a stdout se sitovym soketem. Byl to jeden nekonecny cyklus se selectem. Vsechna cteni/zapisy byly blokujici a timeout selectu byl nekonecny. Program v klidu spinkal a kdyz prisla data, tak je sebral a prehodil kam patri. Pak jsem to pouzil na sitove hrani piskvorek ;)
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 19:23 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Nemohl bys mi konkretneji poradit jak na to, moc by mi to pomohlo.
    Josef Kufner avatar 21.4.2005 20:29 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Je to prakticky ucebnicove pouziti selectu. Dva vstupy - stdin a ten od druheho terminalu (treba socket) predane selectu a jinak nic.
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 21.4.2005 20:31 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    kdybys to chtel videt nekde pouzite, tak koukni treba na wmpiki
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 20:48 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Mohl bys ten tvuj ucebnicovy priklad napsat? Moc by mi pomohlo pochopit ten select. Dekuji!!
    21.4.2005 20:59 RWS
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    $ man 2 select

    dej tam navic 2 FD (stdin a ten serial) a nekonecnej cyklus a mas to
    EXAMPLE
           #include <stdio.h>
           #include <sys/time.h>
           #include <sys/types.h>
           #include <unistd.h>
    
           int
           main(void) {
               fd_set rfds;
               struct timeval tv;
               int retval;
    
               /* Watch stdin (fd 0) to see when it has input. */
               FD_ZERO(&rfds);
               FD_SET(0, &rfds);
               /* Wait up to five seconds. */
               tv.tv_sec = 5;
               tv.tv_usec = 0;
    
               retval = select(1, &rfds, NULL, NULL, &tv);
               /* Don't rely on the value of tv now! */
    
               if (retval == -1)
                perror("select()");
               else
               if (retval)
                   printf("Data is available now.\n");
                   /* FD_ISSET(0, &rfds) will be true. */
               else
                   printf("No data within five seconds.\n");
    
               return 0;
           }
    
    22.4.2005 08:09 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Tak jsem to udelal takto, pri spusteni predavam parametr nazev terminalu na ktery ma preposilat vstup z klavesnice a z toho terminalu i cist a vypisovat to na vystup, jenomze kdyz program spustim tak vypisuje data ktere pisi na termilu ktery jsem uvedl pri spusteni ale kdyz pisu v tomto terminalu tak to zase nezbrazuje v terminalu kde jsem program spustil. V zadani mame ze mame spustit dve instance, ale to nejde protoze kdyz spustim program tak ten blokuje ten terminal z k tereho vypisuje text a uz nemuzu spusti dalsi instanci programu. Soucasni muj zdrojak, prosim poradte.
    #define BUF_LEN 200
    struct termios set_attributes;
              
    int main(int argc, char *argv[]) {
    	char *ttyID;
    	char buffer[BUF_LEN];
    	int result;	
        fd_set terminal, klavesnice;
        struct timeval timeout; /* Struktura s časovým limitem */
    	size_t len;
    
    
    	ttyID = argv[1]; /* Nacteme ttyID pseudo terminalu */
    	int tty = open(ttyID, O_RDWR);
    	
    	// nastav nove parametry terminalu
        tcgetattr(tty, &set_attributes);
        set_attributes.c_lflag &= ~ICANON; // necekej na cely radek (noncanonical)
        //set_attributes.c_lflag &= ~ECHO;   // nezobrazuj ctene znaky
        set_attributes.c_cc[VMIN] = 1;                                        
        set_attributes.c_cc[VTIME] = 0;
        tcsetattr(tty, TCSAFLUSH, &set_attributes);
    	
    	while(1){
    		FD_ZERO(&terminal); /* Odstranime nahodna data z mnoziny */
    		FD_ZERO(&klavesnice); /* Odstranime nahodna data z mnoziny */
    		FD_SET(fileno(stdin), &klavesnice); /* Naplnime mnozinu stdin */
    		FD_SET(tty, &terminal); /* Naplnime mnozinu ttyckem */
    		// Nadefinovany casovy interval 4 sekundy a 5 milis..
    		timeout.tv_sec = 4;
    		timeout.tv_usec = 50000;
    		
    		// Zavolám select (V Linuxu musím mít nastavenou proměnnou FD_SETSIZE) --- tezko rict co je na tom pravdy
    		result = select(FD_SETSIZE, &klavesnice, &terminal, NULL, &timeout);
    		switch(result){
    			case -1:
    				perror("select"); /* Nastala chyba */
    				exit(1);
    			case 0:
    				printf("timeout \n"); /* Vypršel časový limit */
    				break;
    			default:
    					  /* Obsluha soketu. Zde je možné vytvořit nové vlákno nebo proces,
    						který obslouží událost na soketu. Server pak je vícevláknový.
    						*/
    					if (FD_ISSET(fileno(stdin), &klavesnice)) {
    						/* Data available on stdin */
    						char a;
    						read(fileno(stdin), &a, sizeof(a));
    						write(tty, &a, sizeof(a)); 
    					}			
    					if (FD_ISSET(tty, &terminal)) {
    						char c;
    						read(tty, &c, sizeof(c));/*:!*/
    						if(c == '\004') { // `C-d'
    							// program skonci az prijme Ctrl-D
    							break;
    						}
    						else {
    							putchar(c);
    							// vyprazdni vystupni buffer
    							// a zpusob tak zobrazeni znaku
    							// i v nekanonickem modu terminalu
    							fflush(stdout); 
    						}
    					}
    				break;
    		}
    		
    	}
    }
    
    wake avatar 23.4.2005 21:20 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    snad:
    .
    .
    .
    switch(select(1, &rfds, NULL, NULL, &tv))
    {
    case -1:
        perror("select()");
        return -1;
        /* no break */
    case 0:
        printf("No data in 5 sec.\n");
        break;
    default:
        printf("DAATAAA!!!.\n");
        /* FD_ISSET(0, &rfds) will be true. */
        break;
    }
    return 0;
    .
    .
    .
    
    ;-)
    Tento příspěvek má hlavičku i patičku!
    21.4.2005 20:00 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Zatim k cemu jsem se dohrabal, program se spousti s parametrem z ktereho portu ma data tisknout na terminal
    
    hlavicky
    
    
    
    void *readFromTERMINAL( void *ptr )
    {
            char *terminal;
            terminal = (char *) ptr;
    		
    		int tty = open(terminal, O_RDONLY);/*:!*/
    		if(tty < 0) {
            	perror("ERROR open device /dev/ttyS1");
            	exit(EXIT_FAILURE);
        	}
    		
        	while(1) {
            	char c;
           	 	read(tty, &c, sizeof(c));
            	if(c == '\004') { // `C-d'
                	// program skonci az prijme Ctrl-D
                	close(tty);
    				break;
            	}
            	else {
                	putchar(c);
                	// vyprazdni vystupni buffer
                	// a zpusob tak zobrazeni znaku
                	// i v nekanonickem modu terminalu
                	fflush(stdout); 
            	}
        	}
        	close(tty);	
    		
    }
    
    
    int main(int argc, char *argv[])
    {
    	pthread_t thread1, thread2;
    	char *parametr;
    	parametr = argv[1];   
    	
    
        // vlakno cte z daneho portu a vypisuje na terminal
    	pthread_create( &thread1, NULL, readFromTERMINAL, parametr); 
        
        
    	pthread_join(thread1, NULL);
    	printf("\nKonec\n");
        return EXIT_SUCCESS;
    }
    
    Josef Kufner avatar 21.4.2005 20:30 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    pouzivat na tohle vlakna je zvrhlost
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 17:40 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Nějak jsem to nepochopil, ale ty com porty si normálně otevřu jako soubory akorát že mu zadám zařízení /dev/ttySx tak podobně i s těmy terminály by to mělo jít ne ? (/dev/pts/x )
    Josef Kufner avatar 21.4.2005 19:21 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    terminal uz mas otevreny pri spusteni - stdin, stdout (a stderr).
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 20:02 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    To ano ale to je ten můj aktuální ale když to chci poslat na jiný terminál ?
    Josef Kufner avatar 21.4.2005 20:21 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    screen to dela tak, ze si vytvori unixovy socket a k nemu se pak pripoji dalsi screen
    Hello world ! Segmentation fault (core dumped)
    wake avatar 22.4.2005 08:27 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    presmerujes sipeckama pri volani ;)
    Tento příspěvek má hlavičku i patičku!
    22.4.2005 08:34 Pitrsonek
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Mohl bys mi to ukazat nevim presne jak to myslis, v linuxu delam asi tak mesi a v cecku taky to jen proto ze musim .-) Jinak ten kod je napsany dobre, testoval si to? kdyztak moje ICQ: 114940710
    wake avatar 22.4.2005 10:23 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    moje_skvela_utilita </dev/bagr/jahoda/konzole >/dev/bagr/jahoda/konzole
    Tento příspěvek má hlavičku i patičku!
    21.4.2005 22:34 SAM: | skóre: 23 | blog: marsark_linux
    Rozbalit Rozbalit vše Re: Jak na dva terminaly, aby si navzajem posilaly data a i je vypisov
    Hm, koukám to je zajímavý přístup k vypracování úlohy do školy. Jsem zvědav, jak ji budete odevzdávat svému cvičícímu :-)
    21.4.2005 23:03 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminaly, aby si navzajem posilaly data a i je vypisov
    Co se ti ( vam ) nezda na tom pristupu?

    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.