X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: david Newsgroups: comp.os.msdos.djgpp Subject: djgpp_terminal Date: Wed, 7 May 2014 12:14:12 +0000 (UTC) Organization: Netfront http://www.netfront.net/ Lines: 168 Message-ID: NNTP-Posting-Host: 90.177.26.126 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: adenine.netfront.net 1399464852 49242 90.177.26.126 (7 May 2014 12:14:12 GMT) X-Complaints-To: news AT netfront DOT net NNTP-Posting-Date: Wed, 7 May 2014 12:14:12 +0000 (UTC) User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) Bytes: 5172 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com I would ask about GPIB terminal in DJGPP .... usleep is not defined, so poll function is Linux tooo #include "lptgpib.h" #include #include #include #include #include #include #include #include #include #include #include static const int zdroj_adresa=10; // lptgpib.c #define get_control() (inportb(lpt_base+2) ^ 0x04) #define put_control(x) outportb(lpt_base+2, (x) ^ 0x04) #define TRI 0x20 /* tristate data lines */ #define NDAC 0x04 /* LPT pin 16 */ #define DAV 0x01 /* LPT pin 1 */ #define NRFD 0x02 /* LPT pin 14 */ extern int lpt_base; int main(int argc,char **argv) { lptgpib_init(0x378); int init=1; for (;;) { // GPIB -> obrazovka if (init) { fprintf(stderr,"Inicializuji port... "); lptgpib_command(UNL); lptgpib_command(MLA+0); lptgpib_command(MTA+zdroj_adresa); fprintf(stderr,"hotovo.\n"); init=0; } put_control(TRI | NDAC); /* clear NRFD */ usleep(1000000/10); if (get_control()&DAV) { /* wait for DAV */ fprintf(stderr,"ctu znak...\n"); char flags,val=lptgpib_read_byte(&flags); if (flags&ATN) lptgpib_print_command(val); else fprintf(stderr,"precten znak: %02x (%c)\n",val,val); } put_control(TRI | NDAC | NRFD ); /* back to default state */ usleep(1000000/10); /* chvili pockat, asi zbytecne, jen aby to bylo videt na portu */ // klavesnice -> GPIB struct pollfd pollfd; memset(&pollfd,0,sizeof pollfd); pollfd.fd=0; pollfd.events=POLLIN; int i=poll(&pollfd,1,0); assert(i==0||i==1); if (i==1) { char str[LINE_MAX],*s=fgets(str,sizeof(str),stdin); assert(s==str); s=strchr(str,'\n'); assert(s); assert(s[1]==0); *s=0; fprintf(stderr,"zapisuji radek: %s\n",str); lptgpib_write(zdroj_adresa,str); fprintf(stderr,"zapsan radek.\n"); init=1; } } } I tried with timeout >> #include "lptgpib.h" #include #include #include #include #include #include #include #include #include #include static const int zdroj_adresa=1; // lptgpib.c #define get_control() (inportb(lpt_base+2) ^ 0x04) #define put_control(x) outportb(lpt_base+2, (x) ^ 0x04) #define TRI 0x20 /* tristate data lines */ #define NDAC 0x04 /* LPT pin 16 */ #define DAV 0x01 /* LPT pin 1 */ #define NRFD 0x02 /* LPT pin 14 */ extern int lpt_base; int main(int argc,char **argv) { lptgpib_init(0x378); int init=1; for (;;) { // GPIB -> obrazovka if (init) fprintf(stderr,"Inicializuji port... "); lptgpib_command(UNL); lptgpib_command(MLA+0); lptgpib_command(MTA+zdroj_adresa); if (init) fprintf(stderr,"hotovo.\n"); init=0; put_control(TRI | NDAC); /* clear NRFD */ usleep(1000000/10); if (get_control()&DAV) { /* wait for DAV */ fprintf(stderr,"ctu znak...\n"); char flags,val=lptgpib_read_byte(&flags); if (flags&ATN) lptgpib_print_command(val); else fprintf(stderr,"precten znak: %02x (%c)\n",val,val); } put_control(TRI | NDAC | NRFD ); /* back to default state */ usleep(1000000/10); /* chvili pockat, asi zbytecne, jen aby to bylo videt na portu */ // klavesnice -> GPIB struct timeval *timeout; memset(&read_fds,0,sizeof read_fds); FD_ZERO(&read_fds); FD_SET(0, &read_fds); timeout.tv_sec = 0; timeout.tv_usec = 0; int i=select(1,&read_fds,NULL,NULL,&timeout); assert(i==0||i==1); if (i==1) { char str[1000],*s=fgets(str,sizeof(str),stdin); assert(s==str); s=strchr(str,'\n'); assert(s); assert(s[1]==0); *s=0; fprintf(stderr,"zapisuji radek: %s\n",str); lptgpib_write(zdroj_adresa,str); fprintf(stderr,"zapsan radek.\n"); } } } is There some way to write correct terminal, read,write function in DJGPP?? Thanks for any idea David --- news://freenews.netfront.net/ - complaints: news AT netfront DOT net ---