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 ?