Getting a printers status if there is no windows print driver

I want to be able to get the status from a printer connected to LPT1,LPT2 etc. The printer has no windows print driver installed, its data is sent via a text file opened as LPT1 etc. Any solutions?
DaveGAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

bsysCommented:
I guess that this is the same question as I asked before (a couple of days ago).
So the value for this question is 200 + 230 points (isn't that worth the answer??).
(FOR WHAT KIND OF APPLICATION THAT)
0
bsysCommented:
Can this software be used for COM ports also???
0
sperlingCommented:
What delphi and windows version(s) do you need to support?

Regards,

Erik.
0
Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

bsysCommented:
I have found it!!! I have two assembler routines, one for a com port and one for a lpt port!! It works just fine, let me know if you are interested!!! I'll send it by E-Mail!!!
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
bsysCommented:
Here it is DaveG,I am using this in my POS program:

function TPrinterStatusForm.CheckCOM(Printer: Word): Word;
var
   PS: Word; {PS = Printer Status}
begin
     asm
       mov dx,Printer {COM, starts from 0}
       mov ax,300h
       int 14h
       and ax, 127
       mov PS,ax
     end;
     Result := PS;
end;

function TPrinterStatusForm.CheckLPT(Printer: Word): Word;
var
   PS: Byte; {PS = Printer Status}
begin
     asm
       mov dx,Printer {LPT}
       mov ah,02h {Status request}
       int 17h
       mov PS,ah
     end;
     Result := PS;
end;

And this works!!!
0
davegreenCommented:
This is the routine I worked out myself from investigation- it is more or less the same:

function PrinterStatus(OutFile: Word) : byte;
var
  PrinterPort: Word;

  function GetStatus : byte;
  asm
     mov AH,$02 {get printer status}
     mov DX, PrinterPort   {lpt1=0, lpt2=1}
     Int $17   {get printer status}
     mov AL, AH
  end;
begin
  PrinterPort := OutFile;
  Result := GetStatus;
end;


The bits returned should correspond as follows

7 6 5 4 3 2 1 0   bit value
-----------------------------
1                   printer not busy
0                   printer busy
  1                 printer acknowledgment
    1               out of paper
      1             printer selected
        1           i/o error
          ? ?       unused
              1     timeout

This code works too....
0
davegreenCommented:
I withdraw this question...
0
bsysCommented:
Ok, what do you want then?????????
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.