LPT port kontrol C++

Kezdőlap Fórumok Programozás LPT port kontrol C++

10 bejegyzés megtekintése - 51-60 / 61
  • Szerző
    Bejegyzés
  • #2205323
    pointux
    Felhasználó

      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(){

      #2205324
      pointux
      Felhasználó

        Mondjuk 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ás

        Fölösleges sztingvége karaktereket olvasgatni a pipeból, inkább blokkoljuk ideiglenesen a read-et egy fájl-vége karakterrel.

        #2205325
        script
        Felhasználó

          NAgy olvasasok kozepen ezt talaltam.http://yyao.ca/projects/ParallelPortLinux/

          #2205326
          pointux
          Felhasználó

            A 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.}

            #2205327
            pointux
            Felhasználó

              Ha 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) {

              #2205328
              pointux
              Felhasználó

                No, ö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]

                #2205329
                script
                Felhasználó

                  Tokjo lett. Hasonlit ahoz amit enis talaltam.Csak csiszolnom kell meg rajta egy kcsit.[attachment deleted by admin]

                  #2205330
                  script
                  Felhasználó

                    Koszonom szepen.

                    #2205331
                    pointux
                    Felhasználó

                      Tokjo 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]

                      #2205332
                      pointux
                      Felhasználó

                        Amú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.)

                      10 bejegyzés megtekintése - 51-60 / 61
                      • Be kell jelentkezni a hozzászóláshoz.