Knowledge Base Nr: 00040 printerstatus.cpp - http://www.swe-kaiser.de

Downloads:

linux: druckerstatus abfragen um ein blockieren der filefunktionen (fwrite, cp, ...)
beim kopieren von daten auf die druckersachnittstelle (z.b. /dev/lp0) zu vermeiden.

  
//(root-rechte erforderlich zum Abfragen der Steuerleitungen der parallelen Schnittstelle)
//das beispielprogramm druckt ein file auf den gewünschten port aus.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/io.h>

const int IOBASE = 0x378;
const unsigned char DRUCKEROK = 0xdf; //alles ok

int getPrinterStatus()
{
int nErr = ioperm(IOBASE, 10, 1);
if (nErr)
{
printf("\nError: ioperm(0x%04X): %d %s\n", IOBASE, errno, strerror(errno));
return nErr; //ist -1
}

unsigned char uc1 = inb(IOBASE+1);
printf("\ndruckerstatus: %02x\n", uc1);

if (uc1 != DRUCKEROK)
return 0;
else
return 1;
}