Bonjour,

Nouveau membre sur ce forum, je fais donc une présentation rapide.

Développeur winform et webform, je suis en charge d'un projet qui consiste à la création d'une borne multimédia. Cette dernière communique avec du hardware (lecteur code barre, imprimante).

Mon application doit être en mesure de capter l'état de mon imprimante par défaut (connecté ou pas, plus de papier, en cours d'impression).

Après de multiple recherche sur la toile j'en suis là :


1/ un Thread (Sniffer) qui tourne pour scrutter
2/ une classe (maClasse) qui implémente printable avec dans le constructeur :
try {
// Attributs
PrintRequestAttributeSet attReqSet = new HashPrintRequestAttributeSet();
PrintServiceAttributeSet attSerSet = new HashPrintServiceAttributeSet();
PrintJobAttributeSet attJobSet = new HashPrintJobAttributeSet();

attSerSet.add( PrinterState.IDLE );
attSerSet.add( PrinterState.PROCESSING );
attSerSet.add( PrinterState.STOPPED );
attSerSet.add( PrinterState.UNKNOWN );
// Imprimante
PrintService[] printers =PrintServiceLookup.lookupPrintServices( DocFlavor.SERVICE_FORMATTED.PRINTABLE, attSerSet );
for (PrintService printService : printers) {
if( printService.getName().equals( PrintServiceLookup.lookupDefaultPrintService().getName() ) ){
_Printer = printService;
break;
}
}
// Format du papier
Paper paper = new Paper();
paper.setSize( 595, 842 ); // format A4
paper.setImageableArea(10, 10, paper.getWidth()-20, paper.getHeight()-20); // réglages des marges de la zone d'impression 10 points

// Format de la page
PageFormat page = _PrinterJob.getPageFormat( attReqSet );
page.setOrientation( OrientationRequested.REVERSE_PORTRAIT.getValue() ); // mode paysage.

_PrinterJob.setPrintable( this );
} catch (Exception ex) {
Logger.getLogger(Ticket.class.getName()).log(Level.SEVERE, null, ex);
}
Pour vérifier l'état dans Sniffer :
maClasse._Printer.getAttribute( PrinterState.class );

=> Le problème est que je ne parviens pas à récupérer une information sur l'état.

J'ai connaissance de la classe PrinterStateReason qui me permettrais de récupérer les informations voulues.

=> Le problème est que je ne sais pas comment le mettre en oeuvre.

Si une personne de par sont expérience veut bien m'aider à réaliser et comprendre le fonctionnement de ce "Sniffer" d'état d'imprimante.