Ciao,
devo rilevare lo stato della carta in una stampante prima di lanciare la stampa.
La stampante ha integrato un sensore per la carta e ho a disposizione un elenco di comandi ESC/POS che mi dovrebbero permettere di leggere i valori di questo sensore.
La stampante è collegata al pc tramite USB.
Sto utilizzando la funzione escape http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Ecco il codice che ho scritto
codice:
type
TPrnBuffRec = record
bufflength: Word;
Buff_1: array[0..255] of Char;
end;
procedure TFTestStampa.SpeedButton2Click(Sender: TObject);
var
Buff: TPrnBuffRec;
BuffOut: array[0..255] of Char;
TestInt: Integer;
cmd : string;
result : integer;
resultString : string;
begin
BuffOut := '';
printer.BeginDoc;
try
TestInt := PassThrough;
if Escape(Printer.Handle, QUERYESCSUPPORT, SizeOf(TESTINT), @testint, nil) > 0 then
begin // se supporta i comandi in formato escape ...
cmd := chr(10) + chr(04) +chr(04);
// copio la stringa nel buffer
StrPCopy(Buff.Buff_1, cmd);
// setto la lunghezza del buffer
Buff.bufflength := StrLen(Buff.Buff_1);
//buffOut.bufflength := 30;
result := Escape(Printer.Handle, Passthrough, 0, @buff , @buffOut);
if result <= 0 then
begin
MessageDlg( 'Errore nella fase di verifica carta !', mtError,[mbok],0 );
exit;
end;
ShowMessage( buffOut );
end;
finally
printer.EndDoc;
end;
end;
Riesco a inviare messaggi alla stampante ma non riesco a ricevere, secondo voi leggo correttamente il buffout ? Avete qualche cosniglio da darmi ?