[linux-ileri] Re: Seri porttan interrupt - Serdar Hoca'ya

---------

From: Derya Sezen (funky@gsu.linux.org.tr)
Date: Thu 21 Aug 2003 - 13:51:32 EEST

  • Next message: Derya Sezen: "[linux-ileri] Re: Seri porttan interrupt - Serdar Hoca'ya"

    Hocam yard=FDm=FDn=FDz i=E7in te=FEekk=FCrler. =DD=FEi kernel space'e girme=
    den bu
    =FEekilde halletmek iyi oldu ama cpu'a gelen interrupt'u da nas=FDl
    yakalar=FDz merak etmiyor degilim:)=20

    Neyse, as=FDl sormak istedigim ayn=FD kodda hem read() hem write() yapmak
    istiyorum , write() dedigim anda "I/O possible" diyerek programdan
    =E7=FDk=FDyor. SIGIO almasini saglayan
    fcntl(fd, F_SETOWN, getpid());
    yu kald=FDrd=FDg=FDmda ise write'=FDn dondugu deger dogru ama kars=FD taraf=
    a bilgi
    gitmiyor. Benim sonucta ayn=FD programda hem read(), hem write() yapmak
    istedigime gore program=FDn SIGIO almas=FDn=FD disable etmemem gerek. Bu
    ba=F0lamda anlam veremedigim write() yapt=FDg=FDmda programdan birdenbire
    =E7=FDkmas=FDn=FDn nedeni...

    termios tan=FDmlar=FD :

    *********************

        tcgetattr(fd, &eski);
                                                                               =
                                                     =20
        yeni.c_cflag =3D baudrate | CRTSCTS | CS8 | CLOCAL | CREAD;
        yeni.c_iflag =3D IGNPAR | ICRNL;
        yeni.c_oflag =3D 0;
        yeni.c_lflag =3D ICANON;
        yeni.c_cc[VMIN]=3D1;
        yeni.c_cc[VTIME]=3D0;
        tcflush(fd, TCIFLUSH);
        tcsetattr(fd, TCSANOW, &yeni);

    **********************

    farkl=FD olarak daha ayr=FDnt=FDl=FD

    ***********************

    tcgetattr(fd,&eski);
        cfsetispeed(&eski, BaudToConstant(baudrate));
        cfsetospeed(&eski, BaudToConstant(baudrate));
                                                                               =
                                                     =20
        eski.c_cflag |=3D (CREAD|CLOCAL);=20
        eski.c_cflag &=3D ~(CSIZE);
        eski.c_cflag |=3D CS8; =20
        eski.c_cflag &=3D ~(PARENB);=20
        eski.c_cflag &=3D ~(CSTOPB);=20
        eski.c_iflag &=3D ~(IXON | IXOFF);=20
        eski.c_cflag &=3D ~CRTSCTS; =20
        eski.c_lflag |=3D (ICANON);
        eski.c_lflag &=3D ~(ECHO | ECHOE | ISIG |ECHOK|ECHONL);
                                                                               =
                                                     =20
        tcflush(fd, TCIFLUSH);
        tcsetattr(fd, TCSANOW, &eski);

    ****************************

    da denedim. =DDkisinde de olmad=FD. oflag'e de iflag deki gibi degerler
    verdim gene olmad=FD.=20

    Sonu=E7ta read() de sorun ya=FEam=FDyorum. write() olay=FDn=FD nas=FDl
    ger=E7ekle=FEtirebilirim?!!?=20

    Derya Sezen

    P.S. : baglant=FDlar=FDmda sorun yok. Sistemi iki bilgisayar aras=FDnda
    denemekteyim. Kars=FD taraftaki veriyi okuyan koda minicom ile data
    gonderebiliyorum ama kendi kodumla g=F6nderemiyorum...

    te=FEekk=FCrler


  • Next message: Derya Sezen: "[linux-ileri] Re: Seri porttan interrupt - Serdar Hoca'ya"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.