<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eduard+Munteanu</id>
		<title>linux360 - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linux360.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eduard+Munteanu"/>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php/Special:Contributions/Eduard_Munteanu"/>
		<updated>2026-04-19T11:45:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3307</id>
		<title>SupraÃ®ncÄƒrcarea operatorilor Ã®n limbajul C-plus-plus</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Supra%C3%83%C2%AEnc%C3%84%C6%92rcarea_operatorilor_%C3%83%C2%AEn_limbajul_C-plus-plus&amp;diff=3307"/>
				<updated>2006-12-11T23:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: /* Exemplu */ Corrections to example (thanks to Ionuţ Luncanu)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Titlul oribil este rezultatul unei limitări in Wiki -- imediat ce se rezolvă, vom face şi titul mai uşor de privit''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introducere ==&lt;br /&gt;
Operatiile de baza sunt implementate in limbajul C++ cu ajutorul operatorilor. In limbajul C++ operatorii sunt, de fapt, functii. Operatorii oferiti de limbaj pot ''lucra'' decat asupra tipurilor de date predefinite. Pentru a folosi operatorii asupra tipurilor de date construite de noi, limbajul C++ ne ofera un mecanism care se numeste '''supraincarcarea operatorilor'''.&lt;br /&gt;
&lt;br /&gt;
De ce am avea nevoie de asa ceva? Dupa cum se stie se poate crea o functie a unei clase care sa faca exact ce ar face un operator si care sa o definim (de exemplu) '''suma'''. Atunci am apela acea metoda astfel:&lt;br /&gt;
&lt;br /&gt;
 Obiect ob1;&lt;br /&gt;
 Obiect ob2;&lt;br /&gt;
 Obiect ob3 = ob1.suma( ob2 );&lt;br /&gt;
&lt;br /&gt;
Cam greoi! Ar fi mai simplu daca am scrie aşa:&lt;br /&gt;
 Obiect ob3 = ob1 + ob2;&lt;br /&gt;
&lt;br /&gt;
Astfel s-a ajuns la nevoia de a supraincarcarea operatorii!&lt;br /&gt;
&lt;br /&gt;
== Teorie ==&lt;br /&gt;
&lt;br /&gt;
Supraincarcarea metodelor claselor in general si a operatorilor in particular sunt doua dintre cele mai importante mecanisme ale limbajului C++. Ele sunt un pas urias catre polimorfism (asta este alta bazaconie inventata de oamenii cu creiere luminate). Aceste ''oportunitati''  sunt cele care ofera flexibilitate aplicatiilor pe care le construim.&lt;br /&gt;
&lt;br /&gt;
Iata lista operatorilor din C++ care se pot supraincarca:&lt;br /&gt;
* new delete&lt;br /&gt;
* () []&lt;br /&gt;
* + - * / %&lt;br /&gt;
* ^ &amp;amp; | ~&lt;br /&gt;
* ! = &amp;lt; &amp;gt;&lt;br /&gt;
* += -= *= /= %=&lt;br /&gt;
* ^= &amp;amp;= |=&lt;br /&gt;
* &amp;lt;&amp;lt; &amp;gt;&amp;gt;&lt;br /&gt;
* &amp;gt;&amp;gt;= &amp;lt;&amp;lt;=&lt;br /&gt;
* == != &amp;lt;= &amp;gt;=&lt;br /&gt;
* &amp;amp;&amp;amp; ||&lt;br /&gt;
* ++ --&lt;br /&gt;
* ,&lt;br /&gt;
* -&amp;gt;*&lt;br /&gt;
* -&amp;gt;&lt;br /&gt;
unde operatorul '''()''' este apelul unei functii, iar operatorul '''[]''' este operatorul de indexare.&lt;br /&gt;
&lt;br /&gt;
Urmatorii operatori nu se pot supraincarca:&lt;br /&gt;
* . .* :: ?: sizeof&lt;br /&gt;
&lt;br /&gt;
Reguli care trebuie sa fie respectate in supraincarcarea operatorilor:&lt;br /&gt;
* operatorii =, (), [], si -&amp;gt; trebuie sa fie membrii nestatici ai clasei&lt;br /&gt;
* operatorul = nu poate fi mostenit&lt;br /&gt;
* operatorii pentru tipurile predefinite ale limbajului nu se pot supraincarca&lt;br /&gt;
* operatorii nu pot avea argumente implicite&lt;br /&gt;
&lt;br /&gt;
Operatorii pentru un anumit tip definit de utilizator (clasa) pot sa fie sau nu membru al clasei. In cazul in care se supraincarca un operator pentru o clasa, dar acel operator nu apartine clasei, trebuie sa fie declarat '''friend''' in clasa respectiva si sa aiba cel putin un argument de tipul clasei respective. Exceptie de la aceasta regula fac operatorii '''= () [] -&amp;gt;''' care nu pot fi supraincarcati folosind functii de tipul friend ale unei anumite clase.&lt;br /&gt;
&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
&lt;br /&gt;
Un exemplu: voi da ca exemple supraincarcarea operatorilor ++ pre si post indexat.&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;cpp/&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class MyPoint&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
    MyPoint(); // constructor implicit&lt;br /&gt;
    MyPoint( const double a, const double b ); // constructor de initializare&lt;br /&gt;
    MyPoint( const MyPoint &amp;amp;r ); // constructor de copiere&lt;br /&gt;
&lt;br /&gt;
    MyPoint operator+( const MyPoint point ); // suma a 2 vectori&lt;br /&gt;
    MyPoint operator-( const MyPoint point ); // diferenta a 2 vectori&lt;br /&gt;
    double operator*( const MyPoint point ); // produsul scalar a 2 vectori&lt;br /&gt;
    MyPoint operator*( const double dVal ); // multiplicare cu o constanta&lt;br /&gt;
    friend MyPoint operator*( const double dVal, const MyPoint point); // pentru a asigura comutativitatea operatiei precedente&lt;br /&gt;
&lt;br /&gt;
    MyPoint&amp;amp; operator=( const MyPoint point );&lt;br /&gt;
&lt;br /&gt;
    MyPoint operator++(); // ++ prefixat&lt;br /&gt;
    MyPoint operator++( int ); // ++ postfixat&lt;br /&gt;
&lt;br /&gt;
    friend ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt );&lt;br /&gt;
    friend istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt );&lt;br /&gt;
&lt;br /&gt;
    double getX();&lt;br /&gt;
    double getY();&lt;br /&gt;
&lt;br /&gt;
 private:&lt;br /&gt;
    double x;&lt;br /&gt;
    double y;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint()&lt;br /&gt;
 {&lt;br /&gt;
    x = 0;&lt;br /&gt;
    y = 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( const MyPoint &amp;amp;r )&lt;br /&gt;
 {&lt;br /&gt;
    x = r.x;&lt;br /&gt;
    y = r.y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint::MyPoint( double a, double b )&lt;br /&gt;
 {&lt;br /&gt;
    x = a;&lt;br /&gt;
    y = b;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator+( const MyPoint point )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    temp.x = x + point.x;&lt;br /&gt;
    temp.y = y + point.y;&lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator-( const MyPoint point )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint temp;&lt;br /&gt;
    temp.x = x - point.x;&lt;br /&gt;
    temp.y = y - point.y;&lt;br /&gt;
    return temp;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::operator*( const MyPoint point )&lt;br /&gt;
 {&lt;br /&gt;
    return x * point.y + y * point.x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator*( const double dVal )&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(x * dVal, y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint operator*( const double dVal, const MyPoint point )&lt;br /&gt;
 {&lt;br /&gt;
    return MyPoint(point.x * dVal, point.y * dVal);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint&amp;amp; MyPoint::operator=( MyPoint point )&lt;br /&gt;
 {&lt;br /&gt;
    x = point.x;&lt;br /&gt;
    y = point.y;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator++()&lt;br /&gt;
 {&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return *this;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 MyPoint MyPoint::operator++( int )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint r = *this;&lt;br /&gt;
    x++;&lt;br /&gt;
    y++;&lt;br /&gt;
    return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ostream&amp;amp; operator&amp;lt;&amp;lt;( ostream &amp;amp;stream, const MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;lt;&amp;lt; &amp;quot;( &amp;quot; &amp;lt;&amp;lt; pt.x &amp;lt;&amp;lt; &amp;quot;, &amp;quot; &amp;lt;&amp;lt; pt.y &amp;lt;&amp;lt; &amp;quot; )&amp;quot;;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 istream&amp;amp; operator&amp;gt;&amp;gt;( istream &amp;amp;stream, MyPoint &amp;amp;pt )&lt;br /&gt;
 {&lt;br /&gt;
    stream &amp;gt;&amp;gt; pt.x &amp;gt;&amp;gt; pt.y;&lt;br /&gt;
    return stream;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getX()&lt;br /&gt;
 {&lt;br /&gt;
    return x;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 double MyPoint::getY()&lt;br /&gt;
 {&lt;br /&gt;
    return y;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 int main( int argc, char *argv[] )&lt;br /&gt;
 {&lt;br /&gt;
    MyPoint pt( 5, 7 );&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt++ &amp;lt;&amp;lt; endl; // afiseaza la consola ( 5, 7 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 6, 8 )&lt;br /&gt;
    cout &amp;lt;&amp;lt; ++pt &amp;lt;&amp;lt; endl; // afiseaza la consola ( 7, 9 )&lt;br /&gt;
&lt;br /&gt;
    pt = MyPoint( 1, 3 );&lt;br /&gt;
    cout &amp;lt;&amp;lt; 2 * pt &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; pt * 2 &amp;lt;&amp;lt; endl; // afiseaza la consola ( 2, 6 ) (2, 6)&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Versiunea originală de [[User:Radubolovan|Radu Bolovan]] 12:04, 22 November 2005 (EET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Instalare_Gentoo_-_Sfaturi&amp;diff=3162</id>
		<title>Instalare Gentoo - Sfaturi</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Instalare_Gentoo_-_Sfaturi&amp;diff=3162"/>
				<updated>2006-11-26T12:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Filled in tips about partitioning and some info about ccache&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
Gentoo este fara discutie cea mai populara distributie bazata pe pachete sursa. &lt;br /&gt;
&lt;br /&gt;
Articolul de fata contine sfaturi pentru cei care fac cunostinta pentru prima data cu aceasta distributie. Articolul nu ofera detalii cu privire la procesul de instalare, ci doar sfaturi care sper ca va vor scuti de multe batai de cap.&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
Procesul de instalare este semnificativ mai dificil comparativ cu restul distibutiilor linux. Insa acest lucru se va schimba o data cu aparitia unei versiuni stabile a instalerului grafic care a intrat in acest an in componenta Gentoo.&lt;br /&gt;
&lt;br /&gt;
Desi puteti instala Gentoo si fara o conexiune la internet, nu o sa va puteti bucura de avantajele pe care le ofera distributia. Daca nu aveti o conexiune permanenta la internet va recomand sa alegeti alta distributie.&lt;br /&gt;
&lt;br /&gt;
Gentoo poate fi instalat in mai multe feluri, metodele oficiale fiind:&lt;br /&gt;
- folosirea unui cd de instalare minimal&lt;br /&gt;
- folosirea unui live cd (creat de echipa gentoo special pentru asta)&lt;br /&gt;
&lt;br /&gt;
Fiindca instalarea completa a sistemului de operare poate dura chiar mai bine de 24 de ore, in functie de masina pe care instalati si in functie de conexiunea la internet de care dispuneti, trebuie sa acordati putina atentie acestei etape.&lt;br /&gt;
&lt;br /&gt;
Eu va recomandat sa folositi cd-ul minimal de instalare doar atunci cand instalati un server. Cand doriti sa instalati un desktop, live cd-ul este pe de departe cea mai buna alegere, deoarece instalarea unui sistem desktop necesita foarte mult timp si in tot acest timp probabil vreti sa puteti folosi calculatorul si pentru altceva.&lt;br /&gt;
&lt;br /&gt;
Alt sfat este sa nu folositi live cd-ul creat de Gentoo, si asta din mai multe motive. In primul rand fiindca vine cu mult mai putine pachete comparativ cu alte live cd-uri, iar pachetele cu care vine sunt vechi sau foarte vechi. Instalerul grafic arata bine, insa este o achizitie noua pentru distributie si e plin de buguri, deci nu reprezinta un motiv pentru folosirea live cd-ului Gentoo.&lt;br /&gt;
&lt;br /&gt;
Asadar va recomand sa folositi un cd cu Knoppix. Pasii necesari instalarii sunt aceeasi ca si in cazul folosirii live cd-ului creat de echipa Gentoo, insa ofera avantajul ca puteti face mult mai multe lucruri in timpul instalarii. Cei care dispun de o masina cu performante medii pot naviga linistiti pe internet si chiar viziona filme in timpul compilarii.&lt;br /&gt;
&lt;br /&gt;
Datorita specificului acestei distributii, felul in care partitionati poate fi destul de important. De aceea, va recomand sa faceti o partitie speciala pentru /usr/portage, /var si eventual pentru /var/tmp/ccache (in cazul in care folositi ''ccache'', a se vedea mai jos). Partitiei pentru Portage ar trebui sa-i alocati in jur de 512MB, desi ceva mai mult nu strica. Pentru aceasta, ar trebui ales un sistem de fisiere potrivit pentru fisiere mici si foarte mici. Alegeri bune ar fi ext3 formatat cu optiunea &amp;quot;-T small&amp;quot; sau &amp;quot;-T news&amp;quot; (detalii in ''mke2fs(8)'') sau reiserfs. Partitia pentru /var trebuie dimensionata cu grija, pentru ca aici (/var/tmp/portage) se vor compila pachetele; asigurati un minim de 2GB pentru a evita problemele legate de spatiul liber disponibil.&lt;br /&gt;
&lt;br /&gt;
Dupa cum am mai spus, compilarea poate dura foarte mult, in functie de aplicatiile pe care le instalati si masina pe care instalati. Sa nu va faceti iluzii ca puteti sa lasati masina sa compileze si sa plecati linistiti la culcare, iar dimineata sa gasiti sistemul instalat. Asta fiindca in timpul instalarii pot aparea mici conflicte de pachete care necesita interventia dumneavoastra.&lt;br /&gt;
&lt;br /&gt;
Va recomand sa downloadati mai intai toate pachetele si apoi sa incepeti compilarea lor (&amp;quot;emerge -f&amp;quot; este comanda pentru a downloada pachetele, fara a le instala). Pachetele foarte mari precum Firefox si Open Office necesita un timp foarte mare pentru compilare (openoffice are nevoie de mai bine de 24 de ore). Pentru aceste pachete Gentoo pune la dispozitia utilizatorilor un set de pachete binare (firefox-bin, openoffice-bin) pe care va sfatuiesc sa le instalati.&lt;br /&gt;
&lt;br /&gt;
Portage poate sa downloadeze pachetele in paralel cu compilarea surselor, ceea ce scade semnificativ timpul necesar instalarii. Pentru a activa acest comportament, adaugati optiunea ''parallel-fetch'' in /etc/make.conf variabilei FEATURES.&lt;br /&gt;
&lt;br /&gt;
In cazul in care dispuneti de ceva mai mult spatiu liber, puteti instala si activa ''ccache''. In schimbul a 1-2GB, el poate &amp;quot;memora&amp;quot; o buna parte din procesul de compilare, reducand destul de mult timpul destinat recompilarii pachetelor (desi prima compilare are loc cu aceeasi viteza, neglijand overhead-ul). Instalarea se realizeaza cu &amp;quot;emerge ccache&amp;quot;, de preferat inaintea instalarii oricarui alt pachet. Introducerea cuvantului-cheie ''ccache'' in variabila FEATURES in /etc/make.conf nu este necesara, el fiind activat automat in versiunile actuale ale Portage. Folosind variabila CCACHE_SIZE din /etc/make.conf puteti alege maximul de spatiu care va fi folosit de ''ccache'' (daca nu este setata, maximul este de 2GB).&lt;br /&gt;
&lt;br /&gt;
O resursa foarte buna in cazul in care aveti intrebari sau probleme specifice Gentoo este forumul comunitatii utilizatorilor Gentoo din Romania.&lt;br /&gt;
&lt;br /&gt;
==Legaturi utile==&lt;br /&gt;
* [http://www.gentoo.org Site-ul oficial al distributiei Gentoo]&lt;br /&gt;
* [http://www.gentoo.ro Site-ul counitatii Gentoo din Romania]&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Instalare_Gentoo_-_Sfaturi&amp;diff=3159</id>
		<title>Instalare Gentoo - Sfaturi</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Instalare_Gentoo_-_Sfaturi&amp;diff=3159"/>
				<updated>2006-11-22T21:13:52Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Wrote about parallel-fetch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introducere==&lt;br /&gt;
Gentoo este fara discutie cea mai populara distributie bazata pe pachete sursa. &lt;br /&gt;
&lt;br /&gt;
Articolul de fata contine sfaturi pentru cei care fac cunostinta pentru prima data cu aceasta distributie. Articolul nu ofera detalii cu privire la procesul de instalare, ci doar sfaturi care sper ca va vor scuti de multe batai de cap.&lt;br /&gt;
&lt;br /&gt;
==Cuprins==&lt;br /&gt;
Procesul de instalare este semnificativ mai dificil comparativ cu restul distibutiilor linux. Insa acest lucru se va schimba o data cu aparitia unei versiuni stabile a instalerului grafic care a intrat in acest an in componenta Gentoo.&lt;br /&gt;
&lt;br /&gt;
Desi puteti instala Gentoo si fara o conexiune la internet, nu o sa va puteti bucura de avantajele pe care le ofera distributia. Daca nu aveti o conexiune permanenta la internet va recomand sa alegeti alta distributie.&lt;br /&gt;
&lt;br /&gt;
Gentoo poate fi instalat in mai multe feluri, metodele oficiale fiind:&lt;br /&gt;
- folosirea unui cd de instalare minimal&lt;br /&gt;
- folosirea unui live cd (creat de echipa gentoo special pentru asta)&lt;br /&gt;
&lt;br /&gt;
Fiindca instalarea completa a sistemului de operare poate dura chiar mai bine de 24 de ore, in functie de masina pe care instalati si in functie de conexiunea la internet de care dispuneti, trebuie sa acordati putina atentie acestei etape.&lt;br /&gt;
&lt;br /&gt;
Eu va recomandat sa folositi cd-ul minimal de instalare doar atunci cand instalati un server. Cand doriti sa instalati un desktop, live cd-ul este pe de departe cea mai buna alegere, deoarece instalarea unui sistem desktop necesita foarte mult timp si in tot acest timp probabil vreti sa puteti folosi calculatorul si pentru altceva.&lt;br /&gt;
&lt;br /&gt;
Alt sfat este sa nu folositi live cd-ul creat de Gentoo, si asta din mai multe motive. In primul rand fiindca vine cu mult mai putine pachete comparativ cu alte live cd-uri, iar pachetele cu care vine sunt vechi sau foarte vechi. Instalerul grafic arata bine, insa este o achizitie noua pentru distributie si e plin de buguri, deci nu reprezinta un motiv pentru folosirea live cd-ului Gentoo.&lt;br /&gt;
&lt;br /&gt;
Asadar va recomand sa folositi un cd cu Knoppix. Pasii necesari instalarii sunt aceeasi ca si in cazul folosirii live cd-ului creat de echipa Gentoo, insa ofera avantajul ca puteti face mult mai multe lucruri in timpul instalarii. Cei care dispun de o masina cu performante medii pot naviga linistiti pe internet si chiar viziona filme in timpul compilarii.&lt;br /&gt;
&lt;br /&gt;
Dupa cum am mai spus, compilarea poate dura foarte mult, in functie de aplicatiile pe care le instalati si masina pe care instalati. Sa nu va faceti iluzii ca puteti sa lasati masina sa compileze si sa plecati linistiti la culcare, iar dimineata sa gasiti sistemul instalat. Asta fiindca in timpul instalarii pot aparea mici conflicte de pachete care necesita interventia dumneavoastra.&lt;br /&gt;
&lt;br /&gt;
Va recomand sa downloadati mai intai toate pachetele si apoi sa incepeti compilarea lor (&amp;quot;emerge -f&amp;quot; este comanda pentru a downloada pachetele, fara a le instala). Pachetele foarte mari precum Firefox si Open Office necesita un timp foarte mare pentru compilare (openoffice are nevoie de mai bine de 24 de ore). Pentru aceste pachete Gentoo pune la dispozitia utilizatorilor un set de pachete binare (firefox-bin, openoffice-bin) pe care va sfatuiesc sa le instalati.&lt;br /&gt;
&lt;br /&gt;
Portage poate sa downloadeze pachetele in paralel cu compilarea surselor, ceea ce scade semnificativ timpul necesar instalarii. Pentru a activa acest comportament, adaugati optiunea ''parallel-fetch'' in /etc/make.conf variabilei FEATURES.&lt;br /&gt;
&lt;br /&gt;
O resursa foarte buna in cazul in care aveti intrebari sau probleme specifice Gentoo este forumul comunitatii utilizatorilor Gentoo din Romania.&lt;br /&gt;
&lt;br /&gt;
==Legaturi utile==&lt;br /&gt;
* [http://www.gentoo.org Site-ul oficial al distributiei Gentoo]&lt;br /&gt;
* [http://www.gentoo.ro Site-ul counitatii Gentoo din Romania]&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2767</id>
		<title>Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2767"/>
				<updated>2006-07-09T11:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Fixed control sequence nibble, FIXME removed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Acesta se vrea un mini ghid despre controlul unui motor pas cu pas unipolar cu ajutorul linux-ului si a portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Motoarele pas cu pas unipolare==&lt;br /&gt;
[[Image:5wire.jpg|left|thumb|100px|Schema unui motor cu 5 fire.]]&lt;br /&gt;
[[Image:6wire.jpg|left|thumb|100px|Schema unui motor cu 6 fire.]]&lt;br /&gt;
[[Image:Step.gif|left|thumb|200px|Modul de control al motoarelor pas cu pas.]]&lt;br /&gt;
&lt;br /&gt;
Motoarele la care voi face referinta sunt motoare de curent continuu care se alimenteaza la 12-25V si au proprietatea de a putea&lt;br /&gt;
controla fiecare pas facut de aceste motoare. Un pas are de obicei 1,8 grade, ceea ce inseamna ca o rotatie completa inseamna 200&lt;br /&gt;
de pasi.&lt;br /&gt;
Motoarele pas cu pas unipolare au de obicei 5 sau 6 fire, exista si cu 8 fire dar exista posibilitatea ca acestea sa fie si bipolare.&lt;br /&gt;
&lt;br /&gt;
Asa cum observam din cele doua scheme constructia este asemanatoare, singura diferenta fiind alimentarea. La motorul cu 5 fire numai un fir este de alimentare (firul marcat common) restul de control la cel  cu 6 fire sunt 2 fire de alimentare (firele marcate A si B). Daca la motorul cu 6 fire unim cele 2 fire de alimentare obtinem un motor pas cu pas cu 5. Concluzia daca invatam sa comandam unul din cele 2 il vom comanda si pe celalalt. &lt;br /&gt;
Pentru a afla care sunt firele noastre de alimentare vom masura rezistenta intre fire. Intre firul de alimentare si capete va fi o &lt;br /&gt;
rezistenta pe jumatate decat in cazul masurarii rezistentei intre 2 capete. La motorul cu 6 fire Orice combinatie A(+-)B(+-) nu va intoarce nici o rezistenta cele 2 fire nefiind legate.&lt;br /&gt;
Motoarele pas cu pas se controleaza aplicand o tensiune pe firele de control. Modul de control este prezentat in figura alaturata.&lt;br /&gt;
&lt;br /&gt;
Pentru schimbarea sensului de rotatie pur si simplu se trimit comenzile in sens invers.&lt;br /&gt;
&lt;br /&gt;
==Schema portului lpt==&lt;br /&gt;
[[Image:Lpt.jpg]]&lt;br /&gt;
Asa cum se vede si din imagine pinii 18-25 sunt pentru masa, iar cei folositi de noi pentru transmiterea datelor vor fi pinii 2-8&lt;br /&gt;
&lt;br /&gt;
==Cum facem montajul==&lt;br /&gt;
Deoarece motorul lucreaza cu tensiuni cu mult peste posibilitatile portului nostru lpt. O sa avem nevoie de o alimentare externa,&lt;br /&gt;
dar si de o protectie a portului nostru. Pentru aceasta o sa folosim cipul uln2003 sau uln2803a si o dioda zenner de 12V&lt;br /&gt;
&lt;br /&gt;
Schema este urmatoarea [[Image:Lptmot.jpg]]&lt;br /&gt;
&lt;br /&gt;
Trebuie sa mai adaugam o legatura intre unul din pinii de gnd(18-25) de la portul lpt cu masa si una de la pin-ul gnd al chip-ului cu masa. Si sa avem grija, ca firele motorului sa fie legate A+B+A-B- la pinii 2-5 ai portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Programul de test==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/ppdev.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char *filename;&lt;br /&gt;
int fd;&lt;br /&gt;
&lt;br /&gt;
void cleanup_and_exit() {&lt;br /&gt;
  printf(&amp;quot;Lasam portul paralel in pace...&amp;quot;);&lt;br /&gt;
  ioctl(fd, PPRELEASE);&lt;br /&gt;
  close(fd);&lt;br /&gt;
  printf(&amp;quot;Terminat.&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  unsigned char data;&lt;br /&gt;
  int data_dir;&lt;br /&gt;
  &lt;br /&gt;
  filename = &amp;quot;/dev/parport0&amp;quot;;&lt;br /&gt;
  fd = open(filename, O_RDWR);&lt;br /&gt;
  if (fd &amp;lt; 0) {&lt;br /&gt;
     printf(&amp;quot;Nu am putut accesa %s\n&amp;quot;, filename);&lt;br /&gt;
     return EINVAL;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Programul se opreste cu CTRL+C */&lt;br /&gt;
  signal(SIGINT, cleanup_and_exit);&lt;br /&gt;
&lt;br /&gt;
  ioctl(fd, PPEXCL);&lt;br /&gt;
  if (ioctl(fd, PPCLAIM)) {&lt;br /&gt;
     printf(&amp;quot;Nu pot obtine controlul portului paralel.&amp;quot;);&lt;br /&gt;
     close(fd);&lt;br /&gt;
     return EBUSY;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Vom scrie pe pinii Data 0 - 7, nu vom citi */&lt;br /&gt;
  data_dir = 0;&lt;br /&gt;
  ioctl(fd, PPDATADIR, &amp;amp;data_dir);&lt;br /&gt;
&lt;br /&gt;
#define LPT_WRITE(x) data = x; ioctl(fd, PPWDATA, &amp;amp;data)&lt;br /&gt;
  for (;;) {&lt;br /&gt;
     LPT_WRITE(9);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(3);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(6);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(12);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* N-ar trebui sa se ajunga aici */&lt;br /&gt;
  return ENOSYS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul utilizeaza [http://old.kernelnewbies.org/documents/kdoc/parportbook/parportguide.html acest API] si nu acceseaza direct portul paralel (via outb()) pentru a nu interfera negativ cu driverului din kernel.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2760</id>
		<title>Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2760"/>
				<updated>2006-07-08T12:07:38Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Added missing header include&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Acesta se vrea un mini ghid despre controlul unui motor pas cu pas unipolar cu ajutorul linux-ului si a portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Motoarele pas cu pas unipoloare==&lt;br /&gt;
Motoarele la care voi face referinta sunt motoare de curent continuu care se alimenteaza la 12-25V si au proprietatea de a putea&lt;br /&gt;
controla fiecare pas facut de aceste motoare. Un pas are de obicei 1,8 grade, ceea ce inseamna ca o rotatie completa inseamna 200&lt;br /&gt;
de pasi.&lt;br /&gt;
Motoarele pas cu pas unipolare au de obicei 5 sau 6 fire, exista si cu 8 fire dar exista posibilitatea ca acestea sa fie si bipolare.&lt;br /&gt;
&lt;br /&gt;
Schema unui motor cu 5 fire [[Image:5wire.jpg]] &lt;br /&gt;
Schema unui motor cu 6 fire [[Image:6wire.jpg]]&lt;br /&gt;
&lt;br /&gt;
Asa cum observam din cele doua scheme constructia este asemanatoare, singura diferenta fiind alimentarea. La motorul cu 5 fire numai un fir este de alimentare (firul marcat common) restul de control la cel  cu 6 fire sunt 2 fire de alimentare (firele marcate A si B). Daca la motorul cu 6 fire unim cele 2 fire de alimentare obtinem un motor pas cu pas cu 5. Concluzia daca invatam sa comandam unul din cele 2 il vom comanda si pe celalalt. &lt;br /&gt;
Pentru a afla care sunt firele noastre de alimentare vom masura rezistenta intre fire. Intre firul de alimentare si capete va fi o &lt;br /&gt;
rezistenta pe jumatate decat in cazul masurarii rezistentei intre 2 capete. La motorul cu 6 fire Orice combinatie A(+-)B(+-) nu va intoarce nici o rezistenta cele 2 fire nefiind legate.&lt;br /&gt;
Motoarele pas cu pas se controleaza aplicand o tensiune pe firele de control. Modul de control este prezentat in figura urmatoare:&lt;br /&gt;
&lt;br /&gt;
[[Image:Step.gif]]&lt;br /&gt;
&lt;br /&gt;
Pentru schimbarea sensului de rotatie pur si simplu se trimit comenzile in sens invers.&lt;br /&gt;
&lt;br /&gt;
==Schema portului lpt==&lt;br /&gt;
[[Image:Lpt.jpg]]&lt;br /&gt;
Asa cum se vede si din imagine pinii 18-25 sunt pentru masa, iar cei folositi de noi pentru transmiterea datelor vor fi pinii 2-8&lt;br /&gt;
&lt;br /&gt;
==Cum facem montajul==&lt;br /&gt;
Deoarece motorul lucreaza cu tensiuni cu mult peste posibilitatile portului nostru lpt. O sa avem nevoie de o alimentare externa,&lt;br /&gt;
dar si de o protectie a portului nostru. Pentru aceasta o sa folosim cipul uln2003 sau uln2803a si o dioda zenner de 12V&lt;br /&gt;
&lt;br /&gt;
Schema este urmatoarea [[Image:Lptmot.jpg]]&lt;br /&gt;
&lt;br /&gt;
Trebuie sa mai adaugam o legatura intre unul din pinii de gnd(18-25) de la portul lpt cu masa si una de la pin-ul gnd al chip-ului cu masa. Si sa avem grija, ca firele motorului sa fie legate A+B+A-B- la pinii 2-5 ai portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Programul de test==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/ppdev.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char *filename;&lt;br /&gt;
int fd;&lt;br /&gt;
&lt;br /&gt;
void cleanup_and_exit() {&lt;br /&gt;
  printf(&amp;quot;Lasam portul paralel in pace...&amp;quot;);&lt;br /&gt;
  ioctl(fd, PPRELEASE);&lt;br /&gt;
  close(fd);&lt;br /&gt;
  printf(&amp;quot;Terminat.&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  unsigned char data;&lt;br /&gt;
  int data_dir;&lt;br /&gt;
  &lt;br /&gt;
  filename = &amp;quot;/dev/parport0&amp;quot;;&lt;br /&gt;
  fd = open(filename, O_RDWR);&lt;br /&gt;
  if (fd &amp;lt; 0) {&lt;br /&gt;
     printf(&amp;quot;Nu am putut accesa %s\n&amp;quot;, filename);&lt;br /&gt;
     return EINVAL;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Programul se opreste cu CTRL+C */&lt;br /&gt;
  signal(SIGINT, cleanup_and_exit);&lt;br /&gt;
&lt;br /&gt;
  ioctl(fd, PPEXCL);&lt;br /&gt;
  if (ioctl(fd, PPCLAIM)) {&lt;br /&gt;
     printf(&amp;quot;Nu pot obtine controlul portului paralel.&amp;quot;);&lt;br /&gt;
     close(fd);&lt;br /&gt;
     return EBUSY;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Vom scrie pe pinii Data 0 - 7, nu vom citi */&lt;br /&gt;
  data_dir = 0;&lt;br /&gt;
  ioctl(fd, PPDATADIR, &amp;amp;data_dir);&lt;br /&gt;
&lt;br /&gt;
#define LPT_WRITE(x) data = x; ioctl(fd, PPWDATA, &amp;amp;data)&lt;br /&gt;
  /* FIXME: verificati daca este in concordanta cu&lt;br /&gt;
   * montajul, n-am citit cu prea multa atentie. */&lt;br /&gt;
  for (;;) {&lt;br /&gt;
     LPT_WRITE(3);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(6);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(12);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(9);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* N-ar trebui sa se ajunga aici */&lt;br /&gt;
  return ENOSYS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul utilizeaza [http://old.kernelnewbies.org/documents/kdoc/parportbook/parportguide.html acest API] si nu acceseaza direct portul paralel (via outb()) pentru a nu interfera negativ cu driverului din kernel.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2759</id>
		<title>Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2759"/>
				<updated>2006-07-07T23:56:10Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Comment about API&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Acesta se vrea un mini ghid despre controlul unui motor pas cu pas unipolar cu ajutorul linux-ului si a portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Motoarele pas cu pas unipoloare==&lt;br /&gt;
Motoarele la care voi face referinta sunt motoare de curent continuu care se alimenteaza la 12-25V si au proprietatea de a putea&lt;br /&gt;
controla fiecare pas facut de aceste motoare. Un pas are de obicei 1,8 grade, ceea ce inseamna ca o rotatie completa inseamna 200&lt;br /&gt;
de pasi.&lt;br /&gt;
Motoarele pas cu pas unipolare au de obicei 5 sau 6 fire, exista si cu 8 fire dar exista posibilitatea ca acestea sa fie si bipolare.&lt;br /&gt;
&lt;br /&gt;
Schema unui motor cu 5 fire [[Image:5wire.jpg]] &lt;br /&gt;
Schema unui motor cu 6 fire [[Image:6wire.jpg]]&lt;br /&gt;
&lt;br /&gt;
Asa cum observam din cele doua scheme constructia este asemanatoare, singura diferenta fiind alimentarea. La motorul cu 5 fire numai un fir este de alimentare (firul marcat common) restul de control la cel  cu 6 fire sunt 2 fire de alimentare (firele marcate A si B). Daca la motorul cu 6 fire unim cele 2 fire de alimentare obtinem un motor pas cu pas cu 5. Concluzia daca invatam sa comandam unul din cele 2 il vom comanda si pe celalalt. &lt;br /&gt;
Pentru a afla care sunt firele noastre de alimentare vom masura rezistenta intre fire. Intre firul de alimentare si capete va fi o &lt;br /&gt;
rezistenta pe jumatate decat in cazul masurarii rezistentei intre 2 capete. La motorul cu 6 fire Orice combinatie A(+-)B(+-) nu va intoarce nici o rezistenta cele 2 fire nefiind legate.&lt;br /&gt;
Motoarele pas cu pas se controleaza aplicand o tensiune pe firele de control. Modul de control este prezentat in figura urmatoare:&lt;br /&gt;
&lt;br /&gt;
[[Image:Step.gif]]&lt;br /&gt;
&lt;br /&gt;
Pentru schimbarea sensului de rotatie pur si simplu se trimit comenzile in sens invers.&lt;br /&gt;
&lt;br /&gt;
==Schema portului lpt==&lt;br /&gt;
[[Image:Lpt.jpg]]&lt;br /&gt;
Asa cum se vede si din imagine pinii 18-25 sunt pentru masa, iar cei folositi de noi pentru transmiterea datelor vor fi pinii 2-8&lt;br /&gt;
&lt;br /&gt;
==Cum facem montajul==&lt;br /&gt;
Deoarece motorul lucreaza cu tensiuni cu mult peste posibilitatile portului nostru lpt. O sa avem nevoie de o alimentare externa,&lt;br /&gt;
dar si de o protectie a portului nostru. Pentru aceasta o sa folosim cipul uln2003 sau uln2803a si o dioda zenner de 12V&lt;br /&gt;
&lt;br /&gt;
Schema este urmatoarea [[Image:Lptmot.jpg]]&lt;br /&gt;
&lt;br /&gt;
Trebuie sa mai adaugam o legatura intre unul din pinii de gnd(18-25) de la portul lpt cu masa si una de la pin-ul gnd al chip-ului cu masa. Si sa avem grija, ca firele motorului sa fie legate A+B+A-B- la pinii 2-5 ai portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Programul de test==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char *filename;&lt;br /&gt;
int fd;&lt;br /&gt;
&lt;br /&gt;
void cleanup_and_exit() {&lt;br /&gt;
  printf(&amp;quot;Lasam portul paralel in pace...&amp;quot;);&lt;br /&gt;
  ioctl(fd, PPRELEASE);&lt;br /&gt;
  close(fd);&lt;br /&gt;
  printf(&amp;quot;Terminat.&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  unsigned char data;&lt;br /&gt;
  int data_dir;&lt;br /&gt;
  &lt;br /&gt;
  filename = &amp;quot;/dev/parport0&amp;quot;;&lt;br /&gt;
  fd = open(filename, O_RDWR);&lt;br /&gt;
  if (fd &amp;lt; 0) {&lt;br /&gt;
     printf(&amp;quot;Nu am putut accesa %s\n&amp;quot;, filename);&lt;br /&gt;
     return EINVAL;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Programul se opreste cu CTRL+C */&lt;br /&gt;
  signal(SIGINT, cleanup_and_exit);&lt;br /&gt;
&lt;br /&gt;
  ioctl(fd, PPEXCL);&lt;br /&gt;
  if (ioctl(fd, PPCLAIM)) {&lt;br /&gt;
     printf(&amp;quot;Nu pot obtine controlul portului paralel.&amp;quot;);&lt;br /&gt;
     close(fd);&lt;br /&gt;
     return EBUSY;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Vom scrie pe pinii Data 0 - 7, nu vom citi */&lt;br /&gt;
  data_dir = 0;&lt;br /&gt;
  ioctl(fd, PPDATADIR, &amp;amp;data_dir);&lt;br /&gt;
&lt;br /&gt;
#define LPT_WRITE(x) data = x; ioctl(fd, PPWDATA, &amp;amp;data)&lt;br /&gt;
  /* FIXME: verificati daca este in concordanta cu&lt;br /&gt;
   * montajul, n-am citit cu prea multa atentie. */&lt;br /&gt;
  for (;;) {&lt;br /&gt;
     LPT_WRITE(3);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(6);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(12);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(9);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* N-ar trebui sa se ajunga aici */&lt;br /&gt;
  return ENOSYS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programul utilizeaza [http://old.kernelnewbies.org/documents/kdoc/parportbook/parportguide.html acest API] si nu acceseaza direct portul paralel (via outb()) pentru a nu interfera negativ cu driverului din kernel.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=2758</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Main_Page&amp;diff=2758"/>
				<updated>2006-07-07T23:41:23Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Reorder due to article edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* A început migrarea tutorialelor şi ghidurilor (HowTo) din forum în Wiki -- nu ezitaţi să daţi o mână de ajutor ;-) &lt;br /&gt;
* Vă rugăm, folosiţi '''doar''' [[linux360:Sandbox|caietul de ciorne]] pentru încercări şi probe.&lt;br /&gt;
* Pentru acces de editare, vă rugăm contactaţi [mailto:wiki-admin@linux360.ro administraţia].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:HowTo|ghiduri]] actualizate:'''&lt;br /&gt;
** [[Comunica prin lpt|Controlul motoarelor pas cu pas prin portul paralel]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Ce este GNU/Linux? / Cum invat Linux?]] ([[:Category:FAQ|Intrebări puse frecvent]])&lt;br /&gt;
** [[Cum dau net mai departe|Redistribuirea/Partajarea conexiunii la Internet]]  ([[:Category:Networking|retea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Yum în România|&amp;lt;tt&amp;gt;yum&amp;lt;/tt&amp;gt; în România]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Postfix tls mysql dovecot|Postfix cu TLS, autentificare din MySQL şi acces prin Dovecot]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Download si instalare E17 din CVS|Instalare automatizată E17 CVS]] ([[:Category:GEs|medii grafice]])&lt;br /&gt;
** [[MU Online sub wine|MU Online rulat cu Wine]] ([[:Category:VMs|maşini virtuale]]/[[:Category:Games|jocuri]])&lt;br /&gt;
** [[Quagga on Linux|Quagga]] ([[:Category:Networking|reţea]]/[[:Category:Routing|rutare]])&lt;br /&gt;
** [[Autentificare ssh folosind chei publice/private|Autentificare la SSH cu chei publice]] ([[:Category:Networking|reţea]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Instalare Qemu|Instalarea emulatorului Qemu]] ([[:Category:VMs|maşini virtuale]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Tutorial|tutoriale]] actualizate''':&lt;br /&gt;
** [[Setari vim existentiale]] ([[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Script pentru restabilirea conexiunii ADSL]] ([[:Category:Networking|reţea]])&lt;br /&gt;
** [[Configurare Gaim pentru a afisa in status melodia curenta|Configurarea GAIM  pentru a afişa în status melodia curentă]] ([[:Category:Multimedia|multimedia]]/[[:Category:Office|programe de birotică]])&lt;br /&gt;
** [[Introducere in Gtk-sharp|Introducere în Gtk#]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Schimbarea setarilor GTK 2|Schimbarea setărilor Gtk+ 2]] ([[:Category:GEs|medii grafice]]/[[:Category:Tips'n'Tricks|ponturi]])&lt;br /&gt;
** [[Sistem de depanare a aplicatiilor in limbajul C-plus-plus|Sistem de depanare a aplicaţiilor în limbajul C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Iptables romana|Introducere în &amp;lt;tt&amp;gt;iptables&amp;lt;/tt&amp;gt;]] ([[:Category:Networking|reţea]]/[[:Category:Firewall|filtrare trafic]])&lt;br /&gt;
** [[Supra%C3%AEnc%C4%83rcarea operatorilor %C3%AEn limbajul C-plus-plus|Supraîncărcarea operatorilor în ANSI C++]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Collection|colecţii]] actualizate''':&lt;br /&gt;
** [[Scripturi BASH|Scripturi Bash utile]] ([[:Category:Programming|programare]])&lt;br /&gt;
** [[Salutare lume!|Salutare, lume!]] ([[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Ultimele 10 [[:Category:Presentation|prezentări]] actualizate''':&lt;br /&gt;
** [[Libipq by example|&amp;lt;tt&amp;gt;libipq&amp;lt;/tt&amp;gt; în exemple]] ([[:Cateogory:Networking|reţea]]/[[:Category:Programming|programare]])&lt;br /&gt;
** [[KDSFlash]] ([[:Category:Graphics|grafică]]/[[:Category:Animation|animaţie]]/[[:Category:Programming|programare]])&lt;br /&gt;
&lt;br /&gt;
* '''Articole [[:Category:Pending|în curs de scriere]]''':&lt;br /&gt;
** [[Echivalentele Linux ale programelor Windows]] ([[User:Raver|raver]])&lt;br /&gt;
** [[Partiţii]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[Autorizarea accesului la resurse web în Apache]] ([[User:Sorin25|sorin25]])&lt;br /&gt;
** [[ACIS|Administrare, configurare şi intreţinere servere]] ([[User:Csdexter|@Dexter]])&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Comunica_prin_lpt&amp;diff=2757</id>
		<title>Talk:Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Comunica_prin_lpt&amp;diff=2757"/>
				<updated>2006-07-07T23:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Oribil modul in care se acceseaza portul paralel. Ii aduc autorului la cunostiinta ca se poate foarte bine cu ioctl-uri pe un file descriptor (pe care l-a deschis dar nu l-a folosit :O) asociat char device-ului parport raw, si asa ar trebui facut. Voi aduce modificarile de rigoare in curand. -- Eduard Munteanu&lt;br /&gt;
&lt;br /&gt;
S-a facut, astept eventualele comentarii. Precizez ca nu am testat codul. -- Eduard Munteanu&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2756</id>
		<title>Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2756"/>
				<updated>2006-07-07T23:27:22Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Acesta se vrea un mini ghid despre controlul unui motor pas cu pas unipolar cu ajutorul linux-ului si a portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Motoarele pas cu pas unipoloare==&lt;br /&gt;
Motoarele la care voi face referinta sunt motoare de curent continuu care se alimenteaza la 12-25V si au proprietatea de a putea&lt;br /&gt;
controla fiecare pas facut de aceste motoare. Un pas are de obicei 1,8 grade, ceea ce inseamna ca o rotatie completa inseamna 200&lt;br /&gt;
de pasi.&lt;br /&gt;
Motoarele pas cu pas unipolare au de obicei 5 sau 6 fire, exista si cu 8 fire dar exista posibilitatea ca acestea sa fie si bipolare.&lt;br /&gt;
&lt;br /&gt;
Schema unui motor cu 5 fire [[Image:5wire.jpg]] &lt;br /&gt;
Schema unui motor cu 6 fire [[Image:6wire.jpg]]&lt;br /&gt;
&lt;br /&gt;
Asa cum observam din cele doua scheme constructia este asemanatoare, singura diferenta fiind alimentarea. La motorul cu 5 fire numai un fir este de alimentare (firul marcat common) restul de control la cel  cu 6 fire sunt 2 fire de alimentare (firele marcate A si B). Daca la motorul cu 6 fire unim cele 2 fire de alimentare obtinem un motor pas cu pas cu 5. Concluzia daca invatam sa comandam unul din cele 2 il vom comanda si pe celalalt. &lt;br /&gt;
Pentru a afla care sunt firele noastre de alimentare vom masura rezistenta intre fire. Intre firul de alimentare si capete va fi o &lt;br /&gt;
rezistenta pe jumatate decat in cazul masurarii rezistentei intre 2 capete. La motorul cu 6 fire Orice combinatie A(+-)B(+-) nu va intoarce nici o rezistenta cele 2 fire nefiind legate.&lt;br /&gt;
Motoarele pas cu pas se controleaza aplicand o tensiune pe firele de control. Modul de control este prezentat in figura urmatoare:&lt;br /&gt;
&lt;br /&gt;
[[Image:Step.gif]]&lt;br /&gt;
&lt;br /&gt;
Pentru schimbarea sensului de rotatie pur si simplu se trimit comenzile in sens invers.&lt;br /&gt;
&lt;br /&gt;
==Schema portului lpt==&lt;br /&gt;
[[Image:Lpt.jpg]]&lt;br /&gt;
Asa cum se vede si din imagine pinii 18-25 sunt pentru masa, iar cei folositi de noi pentru transmiterea datelor vor fi pinii 2-8&lt;br /&gt;
&lt;br /&gt;
==Cum facem montajul==&lt;br /&gt;
Deoarece motorul lucreaza cu tensiuni cu mult peste posibilitatile portului nostru lpt. O sa avem nevoie de o alimentare externa,&lt;br /&gt;
dar si de o protectie a portului nostru. Pentru aceasta o sa folosim cipul uln2003 sau uln2803a si o dioda zenner de 12V&lt;br /&gt;
&lt;br /&gt;
Schema este urmatoarea [[Image:Lptmot.jpg]]&lt;br /&gt;
&lt;br /&gt;
Trebuie sa mai adaugam o legatura intre unul din pinii de gnd(18-25) de la portul lpt cu masa si una de la pin-ul gnd al chip-ului cu masa. Si sa avem grija, ca firele motorului sa fie legate A+B+A-B- la pinii 2-5 ai portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Programul de test==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char *filename;&lt;br /&gt;
int fd;&lt;br /&gt;
&lt;br /&gt;
void cleanup_and_exit() {&lt;br /&gt;
  printf(&amp;quot;Lasam portul paralel in pace...&amp;quot;);&lt;br /&gt;
  ioctl(fd, PPRELEASE);&lt;br /&gt;
  close(fd);&lt;br /&gt;
  printf(&amp;quot;Terminat.&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  unsigned char data;&lt;br /&gt;
  int data_dir;&lt;br /&gt;
  &lt;br /&gt;
  filename = &amp;quot;/dev/parport0&amp;quot;;&lt;br /&gt;
  fd = open(filename, O_RDWR);&lt;br /&gt;
  if (fd &amp;lt; 0) {&lt;br /&gt;
     printf(&amp;quot;Nu am putut accesa %s\n&amp;quot;, filename);&lt;br /&gt;
     return EINVAL;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Programul se opreste cu CTRL+C */&lt;br /&gt;
  signal(SIGINT, cleanup_and_exit);&lt;br /&gt;
&lt;br /&gt;
  ioctl(fd, PPEXCL);&lt;br /&gt;
  if (ioctl(fd, PPCLAIM)) {&lt;br /&gt;
     printf(&amp;quot;Nu pot obtine controlul portului paralel.&amp;quot;);&lt;br /&gt;
     close(fd);&lt;br /&gt;
     return EBUSY;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Noi controlam semnalele de pe pini Data 0-7 */&lt;br /&gt;
  data_dir = 0;&lt;br /&gt;
  ioctl(fd, PPDATADIR, &amp;amp;data_dir);&lt;br /&gt;
&lt;br /&gt;
#define LPT_WRITE(x) data = x; ioctl(fd, PPWDATA, &amp;amp;data)&lt;br /&gt;
  /* FIXME: verificati daca este in concordanta cu&lt;br /&gt;
   * montajul, n-am citit cu prea multa atentie. */&lt;br /&gt;
  for (;;) {&lt;br /&gt;
     LPT_WRITE(3);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(6);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(12);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(9);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* N-ar trebui sa se ajunga aici */&lt;br /&gt;
  return ENOSYS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2755</id>
		<title>Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Comunica_prin_lpt&amp;diff=2755"/>
				<updated>2006-07-07T23:25:55Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: Rewrote code to conform to best practice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
Acesta se vrea un mini ghid despre controlul unui motor pas cu pas unipolar cu ajutorul linux-ului si a portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Motoarele pas cu pas unipoloare==&lt;br /&gt;
Motoarele la care voi face referinta sunt motoare de curent continuu care se alimenteaza la 12-25V si au proprietatea de a putea&lt;br /&gt;
controla fiecare pas facut de aceste motoare. Un pas are de obicei 1,8 grade, ceea ce inseamna ca o rotatie completa inseamna 200&lt;br /&gt;
de pasi.&lt;br /&gt;
Motoarele pas cu pas unipolare au de obicei 5 sau 6 fire, exista si cu 8 fire dar exista posibilitatea ca acestea sa fie si bipolare.&lt;br /&gt;
&lt;br /&gt;
Schema unui motor cu 5 fire [[Image:5wire.jpg]] &lt;br /&gt;
Schema unui motor cu 6 fire [[Image:6wire.jpg]]&lt;br /&gt;
&lt;br /&gt;
Asa cum observam din cele doua scheme constructia este asemanatoare, singura diferenta fiind alimentarea. La motorul cu 5 fire numai un fir este de alimentare (firul marcat common) restul de control la cel  cu 6 fire sunt 2 fire de alimentare (firele marcate A si B). Daca la motorul cu 6 fire unim cele 2 fire de alimentare obtinem un motor pas cu pas cu 5. Concluzia daca invatam sa comandam unul din cele 2 il vom comanda si pe celalalt. &lt;br /&gt;
Pentru a afla care sunt firele noastre de alimentare vom masura rezistenta intre fire. Intre firul de alimentare si capete va fi o &lt;br /&gt;
rezistenta pe jumatate decat in cazul masurarii rezistentei intre 2 capete. La motorul cu 6 fire Orice combinatie A(+-)B(+-) nu va intoarce nici o rezistenta cele 2 fire nefiind legate.&lt;br /&gt;
Motoarele pas cu pas se controleaza aplicand o tensiune pe firele de control. Modul de control este prezentat in figura urmatoare:&lt;br /&gt;
&lt;br /&gt;
[[Image:Step.gif]]&lt;br /&gt;
&lt;br /&gt;
Pentru schimbarea sensului de rotatie pur si simplu se trimit comenzile in sens invers.&lt;br /&gt;
&lt;br /&gt;
==Schema portului lpt==&lt;br /&gt;
[[Image:Lpt.jpg]]&lt;br /&gt;
Asa cum se vede si din imagine pinii 18-25 sunt pentru masa, iar cei folositi de noi pentru transmiterea datelor vor fi pinii 2-8&lt;br /&gt;
&lt;br /&gt;
==Cum facem montajul==&lt;br /&gt;
Deoarece motorul lucreaza cu tensiuni cu mult peste posibilitatile portului nostru lpt. O sa avem nevoie de o alimentare externa,&lt;br /&gt;
dar si de o protectie a portului nostru. Pentru aceasta o sa folosim cipul uln2003 sau uln2803a si o dioda zenner de 12V&lt;br /&gt;
&lt;br /&gt;
Schema este urmatoarea [[Image:Lptmot.jpg]]&lt;br /&gt;
&lt;br /&gt;
Trebuie sa mai adaugam o legatura intre unul din pinii de gnd(18-25) de la portul lpt cu masa si una de la pin-ul gnd al chip-ului cu masa. Si sa avem grija, ca firele motorului sa fie legate A+B+A-B- la pinii 2-5 ai portului lpt.&lt;br /&gt;
&lt;br /&gt;
==Programul de test==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;c/&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const char *filename;&lt;br /&gt;
int fd;&lt;br /&gt;
&lt;br /&gt;
void cleanup_and_exit() {&lt;br /&gt;
  printf(&amp;quot;Lasam portul paralel in pace...&amp;quot;);&lt;br /&gt;
  ioctl(fd, PPRELEASE);&lt;br /&gt;
  close(fd);&lt;br /&gt;
  printf(&amp;quot;Terminat.&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  unsigned char data;&lt;br /&gt;
  int data_dir;&lt;br /&gt;
  &lt;br /&gt;
  filename = &amp;quot;/dev/parport0&amp;quot;;&lt;br /&gt;
  fd = open(filename, O_RDWR);&lt;br /&gt;
  if (fd &amp;lt; 0) {&lt;br /&gt;
     printf(&amp;quot;Nu am putut accesa %s\n&amp;quot;, filename);&lt;br /&gt;
     return EINVAL;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Programul se opreste cu CTRL+C */&lt;br /&gt;
  signal(SIGINT, cleanup_and_exit);&lt;br /&gt;
&lt;br /&gt;
  ioctl(fd, PPEXCL);&lt;br /&gt;
  if (ioctl(fd, PPCLAIM)) {&lt;br /&gt;
     printf(&amp;quot;Nu pot obtine controlul portului paralel);&lt;br /&gt;
     return EBUSY;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Noi controlam semnalele de pe pini Data 0-7 */&lt;br /&gt;
  data_dir = 0;&lt;br /&gt;
  ioctl(fd, PPDATADIR, &amp;amp;data_dir);&lt;br /&gt;
&lt;br /&gt;
#define LPT_WRITE(x) data = x; ioctl(fd, PPWDATA, &amp;amp;data)&lt;br /&gt;
  /* FIXME: verificati daca este in concordanta cu&lt;br /&gt;
   * montajul, n-am citit cu prea multa atentie. */&lt;br /&gt;
  for (;;) {&lt;br /&gt;
     LPT_WRITE(3);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(6);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(12);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
     LPT_WRITE(9);&lt;br /&gt;
     usleep(20*1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* N-ar trebui sa se ajunga aici */&lt;br /&gt;
  return ENOSYS;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Comunica_prin_lpt&amp;diff=2754</id>
		<title>Talk:Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Comunica_prin_lpt&amp;diff=2754"/>
				<updated>2006-07-07T17:41:32Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Oribil modul in care se acceseaza portul paralel. Ii aduc autorului la cunostiinta ca se poate foarte bine cu ioctl-uri pe un file descriptor (pe care l-a deschis dar nu l-a folosit :O) asociat char device-ului parport raw, si asa ar trebui facut. Voi aduce modificarile de rigoare in curand. -- Eduard Munteanu&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	<entry>
		<id>http://wiki.linux360.ro/index.php?title=Talk:Comunica_prin_lpt&amp;diff=2753</id>
		<title>Talk:Comunica prin lpt</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux360.ro/index.php?title=Talk:Comunica_prin_lpt&amp;diff=2753"/>
				<updated>2006-07-07T17:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;Eduard Munteanu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Oribil modul in care se acceseaza portul paralel. Ii aduc autorului la cunostiinta ca se poate foarte bine cu ioctl-uri pe un file descriptor (pe care l-a deschis dar nu l-a folosit :O) asociat char device-ului parport raw, si asa ar trebui facut. Voi aduce modificarile de rigoare in curand.&lt;/div&gt;</summary>
		<author><name>Eduard Munteanu</name></author>	</entry>

	</feed>