확인은, 여기에 내가 그것을 할 방법 :프린터로 직접 명령을 보내는 올바른 방법!
그러나function PrintRawData(hPrn : THandle;
Buffer : pointer;
NumBytes : SpoolInt) : integer;
{$IFDEF WIN32}
var
BytesWritten : DWORD;
{$ENDIF}
begin
NumBytes := NumBytes * 2; //<-- I added this line
...
, 뭔가가 일부 명령 (이스케이프 시퀀스) 돈으로 잘못 :
또한procedure TMainWindow.btnRawPrintClick(Sender: TObject);
begin
BeginPrint;
SendStr(#27#69);
SendStr('MyData');
SendStr(#10);
EndPrint;
end;
procedure TMainWindow.SendStr(Text: String);
var
i: Integer;
data : Array of Char;
begin
for i := 1 to Length(Text) do
begin
SetLength(data,i);
data[Pred(i)] := Text[i];
end;
if (PrintRawData(printHandle,
data,
Length(data)) < 0) then begin
ShowMessage('PrintRawData Failed');
EndRawPrintPage(printHandle);
EndRawPrintJob(printHandle);
exit;
end;
end;
procedure TMainWindow.BeginPrint;
begin
printHandle := StartRawPrintJob('EPSON TM-T70 Receipt','ESDPRT001','Test Document');
if printHandle < 0 then
begin
ShowMessage('StartRawPrintJob Failed!');
exit;
end;
if (StartRawPrintPage(printHandle) < 0) then begin
ShowMessage('StartRawPrintPage Failed!');
EndRawPrintJob(printHandle);
exit;
end;
end;
procedure TMainWindow.EndPrint;
begin
if (EndRawPrintPage(printHandle) < 0) then begin
ShowMessage('EndRawPrintPage Failed');
EndRawPrintJob(printHandle);
exit;
end;
if (EndRawPrintJob(printHandle) < 0) then begin
ShowMessage('EndRawPrintJob Failed');
exit;
end;
end;
은 내가 here에서했다 약간의 코드를 변경 예상대로 작동하지 않습니다!
어떻게 프린터에 코드를 얻고있다? 직접 LPT1 : 또는 다른 방법? 프린터 디버그 모드를 활성화하여 송신중인 헥스를 확인 했습니까? – mj2008
'ESC'대신에 무엇을 보냅니 까? 대부분의 오래된 Epson 프린터의 경우 ASCII 문자 # 27입니다. –
예, 저는 ESC 대신 # 27을 보냅니다. 명령을 보내기 위해 win API WritePrinter 함수를 사용합니다! – Peacelyk