作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将打印直接发送到线轴,如下所示:
var
cmnd : TBytes;
...
WritePrinter(HandleImp, @cmnd[0], Length(cmnd), CaracteresImpressos);
...
在大多数情况下,这可以满足我的需求,我的问题是需要打印机响应的命令,例如读取状态。
我读到了函数ReadPrinter()
,但我不能使用它...返回总是不同于0(根据文档表明该函数被执行),但是缓冲区变空,就像打印机没有响应一样。
“ci”的返回值等于0。
https://learn.microsoft.com/en-us/windows/desktop/printdocs/readprinter
这是我的代码:
function TTP650.pedeStatusDrawer: TBytes;
begin
SetLength(result, 3);
result[0] := 16;
result[1] := 04;
result[2] := 01;
end;
function TForm1.statusDrawer: boolean;
var
buffer : TBytes;
cmnd : TBytes;
s : string;
i : integer;
ret : boolean;
ci: DWORD;
begin
setLength(buffer,20);
DescricaoAnsiString := 'Lendo Pulso/Gaveta' + #10;
cmnd := tp.pedeStatusDrawer();
if not OpenPrinter(PChar(driverselecionado), HandleImp, nil) then
Memo1.Lines.Add('Erro: Impressora não encontrada')
else
begin
Documento.pDocName := PChar('Minha impressão');
Documento.pOutputFile := nil;
Documento.pDataType := 'RAW';
StartDocPrinter(HandleImp, 1, @Documento);
StartPagePrinter(HandleImp);
WritePrinter(HandleImp, @cmnd[0], Length(cmnd), CaracteresImpressos);
ret := ReadPrinter(HandleImp, @buffer[0], Length(buffer), ci);
EndPagePrinter(HandleImp);
EndDocPrinter(HandleImp);
if(ret = true) then
begin
if(ci >0) then
begin
for i := 0 to Length(buffer)-1 do
s := s + IntToStr(buffer[i]) + ' ';
Memo1.Lines.Add(s);
end;
end;
ClosePrinter(HandleImp);
end;
end;
我正在使用双向热敏打印机。文档摘录:
[Name] Real-time status transmission
[Format] ASCII DLE EOT n
Hex 10 04 n
Decimal 16 4 n
[Description]
根据以下参数实时传输n指定的选定打印机状态:
n = 1: Transmit printer status
n = 2: Transmit offline status
n = 3: Transmit error status
n = 4: Transmit paper roll sensor status
如果有兴趣,完整的文档(第 9 和 10 页讨论了该主题)。 printer documentation
最佳答案
我通过串行通信得到了答案。我通过串行发送了我在问题中提到的字符串的发送命令并读取:
Serial: TBlockSerial;
b: = Serial.RecvByte (500);
成功了。
关于delphi - 如何使用ReadPrinter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798748/
我是一名优秀的程序员,十分优秀!