Mail Archives: djgpp/2014/05/07/08:30:15
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f
|
From: | david <peters DOT al AT gmx DOT com>
|
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: | <lkd82j$1g2q$1@adenine.netfront.net>
|
NNTP-Posting-Host: | 90.177.26.126
|
Mime-Version: | 1.0
|
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 <stdio.h>
#include <string.h>
#include <X11/Xpoll.h>
#include <X11/Xos_r.h>
#include <X11/Xlibint.h>
#include <unistd.h>
#include <assert.h>
#include <sys/io.h>
#include <limits.h>
#include <pthread.h>
#include <pc.h>
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 <stdio.h>
#include <time.h>
#include <string.h>
#include <unistd.h>
#include <assert.h>
#include <sys/io.h>
#include <sys/types.h>
#include <x11/Xpoll.h>
#include <limits.h>
#include <pc.h>
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 ---
- Raw text -