From: Jan Kratochvil Date: Wed, 1 May 2013 18:21:14 +0000 (+0200) Subject: +terminal X-Git-Url: https://git.jankratochvil.net/?p=lptgpib.git;a=commitdiff_plain;h=2665bb5e2a4bf30c7e68813f6ee07ca4d8f1d15e +terminal --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..55271f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +tags +lptgpib.o +controler +device +sniff +terminal diff --git a/Makefile b/Makefile index a5efd3d..3f58983 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ CC=gcc -CFLAGS=-O2 -Wall -PROGS=controler device sniff +CFLAGS=-g -Wall -Werror +PROGS=controler device sniff terminal all: $(PROGS) $(PROGS): lptgpib.o clean: diff --git a/terminal.c b/terminal.c new file mode 100644 index 0000000..5de10a8 --- /dev/null +++ b/terminal.c @@ -0,0 +1,45 @@ +#include "lptgpib.h" +#include +#include +#include +#include +#include +#include + +// lptgpib.c +#define get_control() (inb(lpt_base+2) ^ 0x04) +#define put_control(x) outb((x) ^ 0x04, lpt_base+2) +#define TRI 0x20 /* tristate data lines */ +#define NDAC 0x04 /* LPT pin 16 */ +#define DAV 0x01 /* LPT pin 1 */ + +extern int lpt_base; + +int main(int argc,char **argv) { + lptgpib_init(0x378); + for (;;) { + put_control(TRI | NDAC); /* clear NRFD */ + 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); + } + 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 val; + i=read(0,&val,1); + assert(i==1); + fprintf(stderr,"zapisuji znak... %02x (%c)\n",val,val); + lptgpib_write_byte(val,0); + fprintf(stderr,"zapsan znak.\n"); + } + } +}