Come si inviano comandi di testo a una stampante collegata nella porta USB mediante Delphi?Invio di dati alla stampante USB in Delphi
Ho una stampante Zebra TLP2844 e voglio programmare una comunicazione diretta con esso.
Come si inviano comandi di testo a una stampante collegata nella porta USB mediante Delphi?Invio di dati alla stampante USB in Delphi
Ho una stampante Zebra TLP2844 e voglio programmare una comunicazione diretta con esso.
si utilizza la funzione WinAPI Escape
, passandogli il Printer.Canvas.Handle
come primo parametro e PASSTHROUGH
come parametro nEscape
.
var
YourCommand: String;
begin
YourComamnd := 'Your command here';
if Escape(Printer.Canvas.Handle,
PASSTHROUGH,
Length(YourCommand),
PChar(YourCommand),
nil) <> 0 then
// Handle return value (listed in docs link above)
else
// send next command
Escape
è definito nell'unità Windows
. Nota è necessario chiamare Printer.StartPage
prima di utilizzare questa funzione per preparare il driver della stampante a ricevere il contenuto.
In Delphi XE3 Printer.Canvas.Handle potrebbe essere Printer.Canvas.BufferHandle? –
In VCL.Printers, è 'Printer.Canvas.Handle', che è' HDC' della stampante. Non vedo 'Canvas.BufferHandle' nella documentazione ovunque. Se non stai utilizzando il VCL, dovresti dirlo e aggiungere il tag FireMonkey appropriato alla tua domanda. :-) Ho appena trovato 'BufferHandle', e no; questo è un 'THandle', e' Escape' sta cercando un handle per il contesto di un dispositivo ('HDC'). –
Guardando il sorgente per 'FMX.Printer.Win.pas', c'è un' Canvas' definito per 'TPrinter'. Non so se è disponibile un HDC compatibile con Windows (ne dubito), ma potresti essere in grado di usare 'Printer.Handle', che è un HDC. Non so se funzionerà con 'Escape' o no, perché non l'ho provato. –