Chciałbym sie dowiedziec jak z poziomu Javy dowiedzieć się czy drukarka jest aktywna i czy może drukować. PrintStateReason zwraca null, atrybut accepting-jobs jest zawsze ustawiony na "accepting-jobs", nieważne czy drukarka jest podłączona czy nie. Myślę, że trzeba użyć języka EZPL do komunikacji z drukarką. Jak zwrócić wynik w javie przy użyciu języka EZPL? EZPL command do sprawdzenia statusu drukarki to:
^XSET,ACTIVERESPONSE,1 ale nie wiem jak ją wywołać z poziomu Javy. Może jest jakiś prostszy sposób? Moje drukarki to Godex DT4 oraz Godex DT2.

- Rejestracja:prawie 14 lat
- Ostatnio:ponad 5 lat
- Postów:400
0
- Rejestracja:prawie 12 lat
- Ostatnio:ponad 6 lat
- Postów:51
0
Moze cos takiego Ci pomoze. To sprawdza domyslna drukarke (printer-name) i czy przyjmuje do druku (printer-is-accepting-jobs). Zakomentowalem czesc ktora powinna sprawdzac czy drukarka przyjmuje zlecenia. Nie daje sobie za to reki uciac bo u mnie domyslnym programem rukujacym jest OneNote (nie wiem czemu) i zawsze jest dostepny ale mysle ze warto sprawdzic ;)
public class PrinterStatusReport {
public static void main(String[] args) {
PrintService printer = PrintServiceLookup.lookupDefaultPrintService();
AttributeSet att = printer.getAttributes();
// Attribute[] sAtt = att.toArray();
// if(sAtt[0].equals("accepting-jobs"));
// System.out.println("dziala");
for (Attribute a : att.toArray()) {
String attributeName;
String attributeValue;
attributeName = a.getName();
attributeValue = att.get(a.getClass()).toString();
System.out.println(attributeName + " : " + attributeValue);
}
}
}
edytowany 1x, ostatnio: PanKalmar

- Rejestracja:prawie 14 lat
- Ostatnio:ponad 5 lat
- Postów:400
0
Dzięki za odpowiedź ale w atrybutach drukarki nie ma nic ciekawego, a w atrybucie accepting-jobs zwraca 'acccepting-jobs' niewazne czy drukarka jest włączonoa, podłączona czy odłączona. Chyba z poziomu Java API nie da się tego sprawdzić. Na niektórych drukarkach działa ale akurat na mojej nie.

- Rejestracja:prawie 14 lat
- Ostatnio:ponad 5 lat
- Postów:400
0
Czy takie coś jest możliwe? Język EZPL drukarka Godex DT4.
private static void checkPrinter() {
String queryString = "${^XSET,ACTIVERESPONSE,1}$";
try {
PrintService printService = findPrintService();
System.out.println(printService.getAttribute(QueuedJobCount.class).getValue());
if (printService == null) {
System.out.println(PRINTER_NAME + " printer not found.");
return;
}
DocPrintJob job = printService.createPrintJob();
job.addPrintJobListener(new MyPrintJobListener());
job.addPrintJobAttributeListener(new MyPrintJobAttributeListener(), null);
InputStream is = new ByteArrayInputStream(queryString2.getBytes());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(is, flavor, null);
job.print(doc, null);
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (PrintException e) {
e.printStackTrace();
}
}