Kezdőlap › Fórumok › Programozás › LPT port kontrol C++
- This topic has 60 hozzászólás, 3 résztvevő, and was last updated 12 years, 5 months telt el by
script.
-
SzerzőBejegyzés
-
2012-08-03-20:52 #2205283
sosem hasznaltam „sudo” -t nem is tervezem
2012-08-04-07:44 #2205284Néhány ötlet, kontár tanács, kötözködés, aminek veszed…Nyilván erre a problémára nem használnék C++-t, csak C-t mert 1) minden függvény C-ben van 2) C++-nak semmi gyakorlati hasznát nem látom ebben az esetben. (Mert most ugye egy egyféle kevés függvényű felhasználói szinten futó device driveregykét akarunk csinálni. Egyébként van ami meg sokkal körülményesebb C++-ban.)Ezzel nem is biztos, hogy keverném a grafikus vezérlést. Jó esetben egy démonként futna root alatt.Mint mondtam az ioperm-hez kell a root jogosultság, mert csak rootal tudod a közvetlen hozzáférést engedélyezni. Nyilván így is veszélyes, ha nem tudod mit csinálsz. De ugye te konkrétan tudod, hogy csak a párhuzamos portot fogod vezérelni és másra nem is adtál engedélyt... sőr abból is csak az elsőre, hogy ne legyen gond.Attól nem lesz C++ valami, hogy std::cout-ot használsz. Igen, C++ fordítóval fordítható és függő lesz az egész C++ libtől, és így önmagában felrúgja a C kompatibilitást is, de praktikusan nem C++.Én értem, hogy azt akarod gyakorolni. Ezzel nincs is semmi baj, de akkor viszont a legnagyobb ágyúval tedd azt.Kezdjük a C++ wrapperokkal.Mi lenne, ha a valami_parancs(valami_objektum, ...) fügvényeket C++-ba helyeznéd:class Valamiés természetesen valamiX->parancs(...) függvények lennének belőle.A struktúrák helyett lehet használni privát/védett változókat/struktúrákat az objektumon belül. És ne felejtsük el, hogy az elemek hozzáférésénél: type &Valami::getElem() és type Valami::getElem() constLehetne használni Valami::setOn(bool on) akármi függvényeket.Operátor felülírásokat. (Ezt én speciel mindig is imádtam.)Tegyük fel, hogy van több portunk, vagy bármi, amiből több van: type &Valami::operator[] (size_t i) jopófa módszer.És természetesen kivételkezelést hiba kiírása helyett. Makrókkal egyébként remek kivételkezelőket is lehet írni, mellyel visszakövethető, hogy hol a hiba és mitől keletkezett.Természetesen privát módon nevet is adhatunk az objektumunknak megfelelően védve lekérdezve.Mindig ellenőrizzük, hogy a függvényeink kapott paraméterei megfelelnek-e, valósak-e. Egy assert makróval be lehet küldenünk a kivételkezelőnknek.stb.Persze ezek csak olyan ötletek...Egy nyulfarknyi programnál sok hülyeség, mint mondtam, de tanulásnak kiváló, meg kihasznál néhány C++ lehetőséget. De akkor viszonyt kezdettől foggva így kellene írni.A binárisokkal nem tudok mit kezdeni, mert nálam amúgy sincs se hw, meg a párhuzamos portot is hanyagolom.Majd mindjárt utánanézek, hogy hogy működnek open, ioctl stb függvények parport esetén. Ebben az esetben nem kell root, ha jogod van a rendszer alatt a parporthoz, viszont a Linuxhoz és libjeihez leszel kötve.
2012-08-04-07:53 #2205285Nézd mit találtam?Ez a leírás nagyon ász!
2012-08-04-10:33 #2205286Néhány ötlet, kontár tanács, kötözködés, aminek veszed…
Felre ne erts, nagyon orulok, hogy van kivel / kikkel "megvitatni" progarmozassal kapcsolatos dolgokat itt a forumon.Minden kepp jo tanacsnak veszem amit irtok. (Legfeljebb nemertekegyet, mindennel de ez kesobb valtozhat).
2012-08-07-19:04 #2205287Tudom, hogy nem tul praktikus bianrisokkal dolgozni.Ezt talaltam tegnap.
Code:How to calculate your own values to send to programYou have to think the value you give to the program as a binary number. Every bit of the binary number control one output bit. The following table describes the relation of the bits, parallel port output pins and the value of those bits.Pin2012-08-09-17:47 #2205288Szoval igy nezki az eredeti kod.
Code:#include #include #include #include #include #include #include #include int running = 1;void signalHandler(int sig){2012-08-09-18:29 #2205289Azért nem jó, mert a 4-es szám az nem a negyedik bit, hanem a harmadik4h -> 100bneked ez kell: 00001000b, ami 8. (Ez az emberi 4. bit a programozási 3., mert van egy 0. is)Ezt az 1-es szám forgatásával tudod legkönyebben elérni.Ezt C-ben így tudod megtenni "1 << bit_sorszama"Szerk: Természetesen ez is megy:
2012-08-09-18:39 #2205290Code:100000001200000010300000011400000100500000101600000110700000111800001000900001001Azért nem jó, mert a 4-es szám az nem a negyedik bit, hanem a harmadik4h -> 100bneked ez kell: 00001000b, ami 8. (Ez az emberi 4. bit a programozási 3., mert van egy 0. is)Ezt az 1-es szám forgatásával tudod legkönyebben elérni.Ezt C-ben így tudod megtenni "1 << bit_sorszama"Szerk: Természetesen ez is megy:
2012-08-09-18:44 #2205291Nem a h, azt jelenti, hogy hexadecimális a b, az az, hogy bináris.Látos, pl. az a gond, hogy a 3, az nem a 3. bit, hanem a nulladik + az első, azaz (1 | 2), azaz (1b | 10b), vagy, ha úgy tetszik (1 << 0) | (1 << 1)
2012-08-09-18:45 #2205292Viszont a ||, az hiba, mert az csak |.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz