------ =_NextPart_001_01BD27E7.8ECFE5C0
Content-Type: text/plain
Merhaba,
Bir tty surucusunun davranisini kontrol etmek icin ioctl komutunu
kullanmak gerekir. Asagidaki kod, diger ayarlarin yaninda, enter
beklemeden bir tty'den gelen karakterleri okumak icin kullanilabilir.
cc[] dizisinin kullanilisina dikkat edin. Anlamlarini man sayfalarindan
bulabilirsiniz. Burada cc[4] ve cc[5] ayarlari sizin istediginiz isi
yapiyor. Biri enter gerekmeden kurukta olan karakteri almanizi, digeri,
kuyrukta karakter olmazsa kac 1/10 saniye beklemesi gerektigini
soyluyor. Bu kod, SCO Unix'te calismasina ragmen saniyorum aynen Linux'a
uygulanabilir.
Kolay gelsin,
Bulent Erdemir
Sistem Analist
Kocbank EDP
int DSOpenPort(struct portinfo *p)
{
int retval;
struct termios options;
p->fd=open(p->portname,O_RDWR|O_NOCTTY);
if(p->fd==-1) {
return(DSOP_NOOPEN);
}
tcgetattr(p->fd,&options);
cfsetispeed(&options,B1200);
cfsetospeed(&options,B1200);
options.c_cc[4]=0;
options.c_cc[5]=10;
options.c_cflag |= PARENB;
options.c_cflag &= ~PARODD;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS7;
retval=tcsetattr(p->fd,TCSANOW,&options);
if(retval==-1) {
return(DSOP_NOPORTSET);
}
return(DSOP_SUCCESS);
}
> -----Original Message-----
> From: Serkan AKCIN [SMTP:serkan@Eniac.cc.selcuk.edu.tr]
> Sent: 19 Ocak 1998 Pazartesi 13:24
> To: Multiple recipients of list
> Subject: [LINUX:4171] Help on "Select" command (About
> Programming)
>
>
> Selam,
> Linux altinda "select" komutunu kullanan arkadaslara bir iki sorum
> olacakti.
> int select(int n,fd_set *readfds,...,struct timeval *timeout);
> Bu komutu kullanma amacim bir chat programinda bir sonsuz dongu
> icerisinde
> bana hangi file descriptorun degistigini belirtmesi ve bende ona gore
> algoritmami degistirmeliyim.
> connect olurken bana gelen File Descriptor(FD) yi ve STDIN'i(0) in
> degerlerini 1>> bir saga kaydirip "veyalama" ile int n degerine
> yolluyorum.Porttan bir request oldugunda bana FD_ISSET ile FD'yi
> kontrol
> edebilyorum.Ama STDIN icin bu kosul gerceklesmiyor.. Yani konsoldaki
> veya terminaldeki kisi ENTER'a basmadigi surece select TRUE olmuyor...
>
> Kisaca hem portu hemde klavyeyi karakter karakter kontrol etmemi
> saglayacak bilgi ve baska komut dizileri varsa bana bildirirseniz
> sevinirim...
>
> #####################################
> Saygilar,
> Serkan AKCIN (compsci3)
> E-Mail: serkan@eniac.cc.selcuk.edu.tr
> #####################################
------ =_NextPart_001_01BD27E7.8ECFE5C0
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
Merhaba,
Bir tty surucusunun davranisini =
kontrol etmek icin ioctl komutunu kullanmak gerekir. Asagidaki kod, =
diger ayarlarin yaninda, enter beklemeden bir tty'den gelen =
karakterleri okumak icin kullanilabilir. cc[] dizisinin kullanilisina =
dikkat edin. Anlamlarini man sayfalarindan bulabilirsiniz. Burada cc[4] =
ve cc[5] ayarlari sizin istediginiz isi yapiyor. Biri enter gerekmeden =
kurukta olan karakteri almanizi, digeri, kuyrukta karakter olmazsa kac =
1/10 saniye beklemesi gerektigini soyluyor. Bu kod, SCO Unix'te =
calismasina ragmen saniyorum aynen Linux'a uygulanabilir.
Kolay gelsin,
Bulent Erdemir
Sistem Analist
Kocbank EDP
int DSOpenPort(struct =
portinfo *p)
{
int retval;
struct termios options;
p->fd=3Dopen(p->portname,O_RDWR|O_NOCTTY);
if(p->fd=3D=3D-1) {
=
return(DSOP_NOOPEN);
}
tcgetattr(p->fd,&options);
cfsetispeed(&options,B1200);
cfsetospeed(&options,B1200);
options.c_cc[4]=3D0;
options.c_cc[5]=3D10;
options.c_cflag |=3D PARENB;
options.c_cflag &=3D ~PARODD;
options.c_cflag &=3D ~CSTOPB;
options.c_cflag &=3D ~CSIZE;
options.c_cflag |=3D CS7;
retval=3Dtcsetattr(p->fd,TCSANOW,&options);
if(retval=3D=3D-1) {
=
return(DSOP_NOPORTSET);
}
return(DSOP_SUCCESS);
}
-----Original Message-----
From: Serkan AKCIN =
[SMTP:serkan@Eniac.cc.selcuk.edu.tr]
Sent: 19 Ocak 1998 Pazartesi 13:24
To: Multiple recipients of list
Subject: =
[LINUX:4171] Help on =
"Select" command (About Programming)
Selam,
Linux altinda =
"select" komutunu kullanan arkadaslara bir iki sorum
olacakti.
int =
select(int n,fd_set *readfds,...,struct timeval *timeout);
Bu komutu kullanma =
amacim bir chat programinda bir sonsuz dongu icerisinde
bana hangi file =
descriptorun degistigini belirtmesi ve bende ona gore
algoritmami =
degistirmeliyim.
connect =
olurken bana gelen File Descriptor(FD) yi ve STDIN'i(0) in
degerlerini =
1>> bir saga kaydirip "veyalama" ile int n =
degerine
yolluyorum.Porttan =
bir request oldugunda bana FD_ISSET ile FD'yi kontrol
edebilyorum.Ama =
STDIN icin bu kosul gerceklesmiyor.. Yani konsoldaki
veya terminaldeki =
kisi ENTER'a basmadigi surece select TRUE olmuyor...
Kisaca hem =
portu hemde klavyeyi karakter karakter kontrol etmemi
saglayacak bilgi ve =
baska komut dizileri varsa bana bildirirseniz
sevinirim...
#####################################
Saygilar,
Serkan AKCIN =
(compsci3)
E-Mail: =
serkan@eniac.cc.selcuk.edu.tr
#####################################