X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com Date: Wed, 7 May 2014 10:34:04 -0400 (EDT) From: Jude DaShiell To: djgpp AT delorie DOT com Subject: Re: djgpp_terminal In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk Please check and be sure you have all of djgpp installed then see if usleep is defined. You may not have a full djgpp installation on your machine and that can cause these kind of errors. On Wed, 7 May 2014, david wrote: > 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 --- > > jude