串打印机打印机状态返回值,为何有纸无纸的返回值都是一样的?(使用ESC/POS命令:DLE EOT n判断打印机状态返回值问题) ( 积分: 100 )

  • 主题发起人 主题发起人 miomio
  • 开始时间 开始时间
M

miomio

Unregistered / Unconfirmed
GUEST, unregistred user!
我程序中我用SPCOMM控件向串口打印机发送命令,(DLE EOT n)以取得打印机的1字节返回值.
发送的语句:
comm1.WriteCommData(char(16),1) ;//发送DLE
comm1.WriteCommData(char(4),1);//发送EOT
comm1.WriteCommData(char(4),1) ;//发送n=4//查打印机的缺纸状态;
接收的语句:
procedure TForm1.Comm1ReceiveData(Sender: TObject;
Buffer: Pointer;
BufferLength: Word);
var i:integer;
b:byte;
begin
b:=byte(buffer);
edit1.Text:='';
for i:=7do
wnto 0do
edit1.Text:=edit1.Text+inttostr(getbit(b,i));//getbit(b:byte,i:integer):byte函数为取得B中第i位的0或1值;
end;
为什么,有纸和无纸的状态都返回相同的值呢?
spcomm的Baudrate信息已经设置正确,并可以打印,就是查打印机状态时查不出来,请高手多多指教。
 
我程序中我用SPCOMM控件向串口打印机发送命令,(DLE EOT n)以取得打印机的1字节返回值.
发送的语句:
comm1.WriteCommData(char(16),1) ;//发送DLE
comm1.WriteCommData(char(4),1);//发送EOT
comm1.WriteCommData(char(4),1) ;//发送n=4//查打印机的缺纸状态;
接收的语句:
procedure TForm1.Comm1ReceiveData(Sender: TObject;
Buffer: Pointer;
BufferLength: Word);
var i:integer;
b:byte;
begin
b:=byte(buffer);
edit1.Text:='';
for i:=7do
wnto 0do
edit1.Text:=edit1.Text+inttostr(getbit(b,i));//getbit(b:byte,i:integer):byte函数为取得B中第i位的0或1值;
end;
为什么,有纸和无纸的状态都返回相同的值呢?
spcomm的Baudrate信息已经设置正确,并可以打印,就是查打印机状态时查不出来,请高手多多指教。
 
我也遇到这样的问题有谁能解决,奉上本人全部分数!!
 
看看你的打印机有没有装纸尽传感器!
在打印机串口上挂一个串口监视软件如accessport 模拟从打印到纸尽这个过程,看看到底有没有受到纸尽码,
 
问题我已经自己解决了,谢谢参与
 

Similar threads

后退
顶部