From: Derya Sezen (funky@gsu.linux.org.tr)
Date: Thu 21 Aug 2003 - 13:51:32 EEST
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, ¥i);
**********************
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