PJL을 프린터로 보낼 때 프린터에서 정보를 가져 오는 중 어려움을 겪습니다. 프린터는 PJL을 지원하며 USB 프린터입니다. 이제 정보/예제를 얻는 것이 문제가되거나 잘못된 장소를보고 있습니다. 나는 MSDN에 많은 정보가 있음을 알고 있지만 docinfo에서부터 프린터를 쓰거나 읽는 것까지 아무 것도 시도하지 않았으며 아무 것도 작동하지 않는 것으로 보인다.Delphi : PJL이 프린터에 명령을 보내고 응답을 다시 읽습니다.
일부 사람들은 writeprinter 및 readprinter를 사용할 수 있다고 말합니다. 나는 프린터를 쓸 때 프린터가 뭔가를하는 것처럼 보이지만, readprinter가 반환하거나 오류가 있거나 공백이있는 경우 이것을 시도했습니다. 이제 프린터 드라이버가 포트를 "잠그고"있기 때문에 정보를 다시 읽을 수 없기 때문에 이것이 가능하다고 생각하십니까?
내가 본 다른 옵션은 writefile과 readfile을 사용하는 것입니다. 여기서는 프린터의 실제 포트 부분을 가져옵니다 (예 : '\? \ USB # VID_05CA & PID_0403 # S5208603411 # {28d78fad-5a12-11d1-ae5b-0000f803a8c2}'). 그런 다음 포트를 "FILE"로 변경합니다. writefile과 readfile을 경로를 위의 실제 경로로 사용하십시오. 필요한 정보를 얻은 다음 포트를 다시 원래 포트로 설정하십시오. 이 또한 오류를 얻으려고 시도했다.
나는 단순한 @PJL INFO PAGECOUNT (이스케이프 문자 등을 생략했습니다.)를 시도하고 있습니다. 네트워크 프린터에서 문자열을 사용하면 100 % 작동하며 정보를 얻을 수 있기 때문에 문자열이 정확합니다. 그러나 로컬 프린터가 문제입니다.
이 작동하는 또는 작동하는 예제가있는 사람이 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다.
추신 : 아래의 예는 제가 시도한 100 가지 예 중 하나입니다. 무엇을해야하는지에 대한 설명, 일부 샘플 C 코드에 대한
procedure TForm1.Button5Click(Sender: TObject);
Const
Defaults: TPrinterDefaults = (
pDatatype : Nil;
pDevMode : nil;
DesiredAccess : PRINTER_ACCESS_USE or PRINTER_ACCESS_ADMINISTER ) ;
Var
Device : array[0..255] of char;
FPrinterHandle:THandle;
DocInfo1: TDocInfo1;
Buffer, Buffer2:PChar;
Written, Len:Cardinal;
i: Integer;
sPath: String;
Begin
StrCopy(Device,PChar('RICOH Aficio SP 4210N PCL 6'));
OpenPrinter(@Device, FPrinterHandle, @Defaults);
DocInfo1.pDocName := 'test';
DocInfo1.pOutputFile := Nil;
DocInfo1.pDatatype := 'RAW';
StartDocPrinter(FPrinterHandle, 1, @DocInfo1);
StartPagePrinter(FPrinterHandle);
Buffer := #27+'%[email protected] COMMENT'+#13+#10+'@PJL INFO PAGECOUNT'+#13+#10+#27+'%-12345X';
WritePrinter(FPrinterHandle,@Buffer,Length(Buffer), Written);
EndPagePrinter(FPrinterHandle);
EndDocPrinter(FPrinterHandle);
// everithing is OK here, BUT
ReadPrinter(FPrinterHandle, @Buffer2, Length(Buffer2), len );
end;
어떤 Delphi 버전입니까? 여기에 유니 코드 또는 ansi PChar를 말하고 있습니까? –
델파이 2007 32 비트와 그 ansi pchar이어야합니다. 이것은 하나의 예제 코드 일 뿐이며, PAnsiChar로 지정되는 코드도 많이 있습니다. – Paul