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
Riesco a inviare messaggi alla stampante ma non riesco a ricevere, secondo voi leggo correttamente il buffout ? Avete qualche cosniglio da darmi ?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;

Rispondi quotando