home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!mcsun!uknet!keele!seq1!cca20
- From: cca20@keele.ac.uk (J. Atherton)
- Newsgroups: alt.sys.sun
- Subject: terminal input using select()
- Message-ID: <BxM8rs.MLy@gabriel.keele.ac.uk>
- Date: 12 Nov 92 18:31:03 GMT
- Sender: news@gabriel.keele.ac.uk (UseNet News Service)
- Organization: Keele University, England
- Lines: 45
- Nntp-Posting-Host: seq1.cc.keele.ac.uk
- X-Newsreader: TIN [version 1.1 PL6]
-
- Greetings,
- unfamiliar with UNIX internals.
-
- Any suggestions, hints/tips or example code would be wunderful. Thanks
- Just in case you are interested......
-
- int door;
- Any tweaks or example programs etc/etc would be most welcome. All my tweaks have
-
-
- int door ;
-
- main()
- {
- int i,x,reed,num,flags,mode,c;
- struct sgttyb s, *sarg;
- fd_set fdset;
- path = "/dev/ttyh1" ;
- flags= O_RDWR ;
- mode = 7 ;
-
- sarg= &s ;
- sarg->sg_flags= EVENP | CBREAK ;
- sarg->sg_ispeed=B1200;
- sarg->sg_ospeed=B1200;
-
- if ((door = open(path,flags,mode)) < 0 ) printf("can't open line\n") ;
-
- if ( (num = ioctl(door,TIOCSDTR,0)) < 0 ) printf("dtr clear failed\n");
- if ( (num = ioctl(door,TIOCSETP,sarg) ) < 0 ) {
- printf("ioctl failed\n");
- printf("error code =%d\n",num);
- printf("error number = %d\n",errno);
- }
- if ( (num = fcntl(door,F_SETFL,FNDELAY) ) < 0 ) printf("fn failed\n");
- reed = 1 << door ; /*set up bit mask for select*/
-
- }
- if ((num=select(32,&reed,NULL,NULL,NULL)) > 0 ) c = read(door,buf2,1);
-
- printf("buf= %x\n",buf2);
- printf("c= %d, errno = %d\n",c,errno);
- }
-
- } /* end program */
-