全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5133
推到 Plurk!
推到 Facebook!

如何偵測印表機未開電源?

 
turtle
一般會員


發表:9
回覆:4
積分:2
註冊:2002-04-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-04-07 21:33:42 IP:61.219.xxx.xxx 未訂閱
請問一下,以前在DOS寫印表程式時,可由程式判斷印表機是否開機或未Ready, 現在印表機都交由Windows控制,如何用Dephi偵測印表機的狀況? 如:未開機,未Ready? 謝謝前輩指導! ^@@^ === Turtle
------
^@@^ === Turtle
linkolong
一般會員


發表:4
回覆:35
積分:12
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-04 21:42:24 IP:61.70.xxx.xxx 未訂閱
這裡有一個程式碼,可偵測列表機開機否,參考一下 function PrinterStatus : integer; asm mov ah, 2 // function 2 - returns status of port mov dx, 0 // lpt1 = 0, lpt2 = 1 etc int $17 // status in ah mov al, ah and eax, $FF // status now in eax with top 24 bits cleared end; const PrinterCodes : array [0..7] of string = ('printer timed-out', 'unused', 'unused', 'I/O error', 'printer selected', 'out of paper', 'printer acknowedgment', 'printer not busy'); //<---你要的東西 procedure TForm1.Button1Click(Sender: TObject); var L,P : integer; begin P := PrinterStatus; //status of printer in P ListBox1.Clear; for L := 0 to 7 do if P and (1 shl L) <> 0 then ListBox1.Items.Add (PrinterCodes [L]); end;
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-12 14:18:05 IP:61.217.xxx.xxx 未訂閱
可否分別解譯一下其各代表的意思丫~~~~~ PrinterCodes : array [0..7] of string = ('printer timed-out', 'unused', 'unused', 'I/O error', 'printer selected', 'out of paper', 'printer acknowedgment', 'printer not busy');
Justmade
版主


發表:94
回覆:1934
積分:2020
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-19 14:47:08 IP:218.16.xxx.xxx 未訂閱
雖然這是很久前的文章..但想問問... 網路印表機可以偵測嗎? 謝謝。
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-19 15:09:10 IP:210.202.xxx.xxx 未訂閱
引言: 雖然這是很久前的文章..但想問問... 網路印表機可以偵測嗎? 謝謝。
不行吧, 那是呼叫BIOS的Function Calll 所以應該只能適用Local的Printer如LPT1/LPT2...等 我有寫一個Direct Print的函式 可以傳控制指令碼給網路印表機 但不知可否如法泡制 取回印表機的狀態 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses printers; procedure DirectPrint(s:string); type TPrnBuffRec = record BuffLength : word; Buffer : array [0..255] of char; end; var Buff : TPrnBuffRec; i,n:integer; c:char; begin n:=length(s); for i:=1 to n do begin c:=s[i]; Buff.Buffer[i-1]:=c; end; Buff.BuffLength := n; Escape(Printer.Canvas.Handle, PASSTHROUGH, 0, @Buff, nil); end; procedure TForm1.Button1Click(Sender: TObject); begin DirectPrint('This is printer ABC !' #13#10); end; end. ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
bill_action
一般會員


發表:2
回覆:1
積分:0
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-19 17:09:45 IP:61.141.xxx.xxx 未訂閱
只能传回打印状态,但打印机的硬件状态不知啊!如有无开电源,数据连线否,有无纸?
uhlin
一般會員


發表:8
回覆:6
積分:2
註冊:2003-07-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-23 15:27:10 IP:60.248.xxx.xxx 未訂閱
請問有bcb的範列嗎?? 謝謝 無
------
pokemf
一般會員


發表:5
回覆:12
積分:3
註冊:2002-05-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-21 12:04:24 IP:210.192.xxx.xxx 未訂閱
引言: 這裡有一個程式碼,可偵測列表機開機否,參考一下 function PrinterStatus : integer; asm mov ah, 2 // function 2 - returns status of port mov dx, 0 // lpt1 = 0, lpt2 = 1 etc int $17 // status in ah mov al, ah and eax, $FF // status now in eax with top 24 bits cleared end; const PrinterCodes : array [0..7] of string = ('printer timed-out', 'unused', 'unused', 'I/O error', 'printer selected', 'out of paper', 'printer acknowedgment', 'printer not busy'); //<---你要的東西 procedure TForm1.Button1Click(Sender: TObject); var L,P : integer; begin P := PrinterStatus; //status of printer in P ListBox1.Clear; for L := 0 to 7 do if P and (1 shl L) <> 0 then ListBox1.Items.Add (PrinterCodes [L]); end;
請教各位先進: 我需檢測LPT1電源是否開啟或檢測LPT印表機忙碌或閒置並READY狀態,所以依上列引言的code ,執行 Button1click後,出現一下畫面: img]http://delphi.ktop.com.tw/loadfile.php?TOPICID=23051524&CC=515536[/img] 請問是甚麼問題,應該如合解決. 謝謝 pokemf
pokemf
一般會員


發表:5
回覆:12
積分:3
註冊:2002-05-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-21 12:05:34 IP:210.192.xxx.xxx 未訂閱
引言: 這裡有一個程式碼,可偵測列表機開機否,參考一下 function PrinterStatus : integer; asm mov ah, 2 // function 2 - returns status of port mov dx, 0 // lpt1 = 0, lpt2 = 1 etc int $17 // status in ah mov al, ah and eax, $FF // status now in eax with top 24 bits cleared end; const PrinterCodes : array [0..7] of string = ('printer timed-out', 'unused', 'unused', 'I/O error', 'printer selected', 'out of paper', 'printer acknowedgment', 'printer not busy'); //<---你要的東西 procedure TForm1.Button1Click(Sender: TObject); var L,P : integer; begin P := PrinterStatus; //status of printer in P ListBox1.Clear; for L := 0 to 7 do if P and (1 shl L) <> 0 then ListBox1.Items.Add (PrinterCodes [L]); end;
請教各位先進: 我需檢測LPT1電源是否開啟或檢測LPT印表機忙碌或閒置並READY狀態,所以依上列引言的code ,執行 Button1click後,出現一下畫面: 請問是甚麼問題,應該如合解決. 謝謝 pokemf
JLATSTAR
一般會員


發表:8
回覆:16
積分:4
註冊:2007-05-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-05-08 16:38:43 IP:203.204.xxx.xxx 訂閱
此篇為轉載文章
原提供者 cxg
轉載內容
在下面有一个源码smport,怎样读取lpt的信息。
http://www.hw.cz/programovani/win_porty/smport.zip
你可以参考一下。
使用說明
解壓縮後,內含簡易範例及Source
編輯記錄
JLATSTAR 重新編輯於 2007-05-08 16:40:56, 註解 使用說明‧
系統時間:2017-10-23 5:13:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!