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-11-30-20:00 #2205323
Bocs, csak itt közbe jött valami.
Code:#include #include #include #include #include #include #define MAX_SIZE 255#define FIFO_FILE "my_fifo"int main(){2012-11-30-21:30 #2205324Mondjuk egy ilyen kód inkább praktikusabb:
Code:fifo = open(FIFO_FILE, O_RDWR);...// olvasás (addig eldobás, amíg nulla hosszúságú a sztring)result = read(fifo,buf,MAX_SIZE);char c = EOF;if (result == 0) write(fifo,&c,sizeof(c));// sorvége cserélése sztringvégére, vagy sztringvége hozzáadásFölösleges sztingvége karaktereket olvasgatni a pipeból, inkább blokkoljuk ideiglenesen a read-et egy fájl-vége karakterrel.
2012-12-02-14:20 #2205325NAgy olvasasok kozepen ezt talaltam.http://yyao.ca/projects/ParallelPortLinux/
2012-12-02-16:26 #2205326A ParallelPort.cpp egy sima cpp wrapper.Az ilyen egyszerű függvényeknél én mondjuk nem igazán látom értelmétnem tartom bonyolultabnak ezt:ioctl(fd, LPGETSTATUS, arg)erno (int)ettől:arg = ioctl_fd.Stat(void)ParallelPort_errors (kivétel)Tehát gyakorlatilag semmit nem nyersz vele. Annyi, hogy cpp függvényeid lesznek c helyett. Semmit nem fog neked lekezelni.A másik, glut diagnosztikai eszköz ágyúval verébre eset. Ha tényleg billentyűkkel kell kezelni, akkor nem tud többet egy konzolnál, max. kicsit csicsásabb.Amúgy jelen példa eseténioctl(fd, LPGETSTATUS, arg) hívása utánpl. egy foglalt jelzés (stringgel) ennyi:busy_string=(arg & LP_PBUSY)?"be":"ki";Ki lehet iratni, vagy valamilyen jelzést lehet küldeni:if (arg & LP_PBUSY){// pl. választógomb bekapcsolás szignál küldése; label megváltoztatása; átszínezés stb.} else {// pl. gomb kikapcsolás,...fordított esetben pl. a gombok állapotát 1/0 forgatod az előbb szemléltetett módon, majd | kapcsolat egy data változóban és ioctl(fd, PPWDATA, &data) függvény hívása.Ha csak itt váltasz cpp-re, sokkal praktikusabb lenne.}
2012-12-02-17:36 #2205327Ha nem érthető, akkor itt vannak a releváns részletek, qt-ben és az lp c kódjával.
QCheckBox *LP_PBUSY_CheckBox;...int portFD;...this->LP_PBUSY_CheckBox = new QCheckBox("Busy bit", this); // persze megcsinálható a dizájnerrel isthis->portFD = open("/dev/parport0", O_RDWR);...// pl. lp status megjelenítése (sys/ioctl.h, linux/lp.h)int status;if (ioctl(this->portFD, LPGETSTATUS, &status) == -1) {
2012-12-02-19:56 #2205328No, összedobtam egy kis qt-s példát.Én nem tudom a parport részét tesztelni, mert nincsen nekem. A checkboxok elvileg működnek.Szerintem olyan egyszerű, hogy simán tudod fejleszteni is.[attachment deleted by admin]
2012-12-02-23:06 #2205329Tokjo lett. Hasonlit ahoz amit enis talaltam.Csak csiszolnom kell meg rajta egy kcsit.[attachment deleted by admin]
2012-12-02-23:07 #2205330Koszonom szepen.
2012-12-03-17:43 #2205331Tokjo lett. Hasonlit ahoz amit enis talaltam.Csak csiszolnom kell meg rajta egy kcsit.
Csiszolni, mert bizony az aktuális júzernek i/o jogot kell adni a /dev/parport0-ra (vagy legalább egy pipera, melyen egy root daemon adatot cserél.)De közben csináltam valami jópofát. 🙂Csak a gui van meg, most nem foglalkoztam azzal, hogy a portot kezeljem, mert úgysem tudom tesztelni.Bár az előző program tartalmazza a kezelést (kivéve a control bitek írását olvasását). További segítség, ill a man 4 lp továbbra is, no meg az előzőek.A parport.cpp-be beleírtam, hogy hova kell írni a parport kezeléseket, meg mi az az utasítás, amivel a ledeket meg lehet gyújtani, vagy le lehet kérdezni. (Csak a piros, írás lámpákat lehet átbillenteni, mert csak annak van értelme a zöldeket a port bitjei gyújtja pl. az előzőekben ismertetett busy bit a "led_11" radiobuttont.)[attachment deleted by admin]
2012-12-03-18:23 #2205332Amúgy, ha utf8 editorban megírt text-et akarsz normálisan megjeleníteni, akkor QString::fromUtf8(„utf8 text”), ill., ha magyar standard üzeneteket akarsz látni, akkor LC_ALL=”hu_HU” programnév módon futtathatod. (a hu_HU után ponttal elválasztva definiálni lehet a kódolás típusát is.)
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz