2015-04-20 89 views
0

我的打印機Zebra TTP 7030通過USB連接到本地計算機。如何從JAVA獲得Zebra USB打印機狀態

我可以使用javax.print API打印數據,但無法獲取打印機狀態或來自打印機的任何數據。

我試圖從Java printService屬性獲取打印機狀態,但它不返回有關打印機實時狀態的任何有價值的信息。

Class<? extends Attribute>[] supportedAttributeCategories = (Class<? extends Attribute>[]) service.getSupportedAttributeCategories(); 

      for (Class<? extends Attribute> category : supportedAttributeCategories) { 
       DocFlavor[] flavors = service.getSupportedDocFlavors(); 
       for (DocFlavor flavo : flavors) { 
        Object supportedAttributeValues = service.getSupportedAttributeValues(category, flavo, service.getAttributes()); 
        if (supportedAttributeValues instanceof Attribute) { 
         Attribute attr = (Attribute) supportedAttributeValues; 
         attribSet.add(attr); 
        } else if (supportedAttributeValues != null) { 
         Attribute[] attrs = (Attribute[]) supportedAttributeValues; 
         for (Attribute attr : attrs) { 
          attribSet.add(attr); 
         } 
        } 
       } 
      } 

      for (Attribute attr : attribSet) { 
       System.out.println(attr.getName()); 

       System.out.println(service.getDefaultAttributeValue(attr.getCategory())); 
      } 

Zebra的Link OS SDK不支持我的打印機。有沒有辦法獲得打印機狀態?

SOLUTION:我用JNA來獲得我的斑馬打印機的Windows打印機狀態。

下面是例子,如何使用JNA How can i get a printer's make and model in Java?

回答

2

如果Zebra打印機仍然ZPL工作,你可以發送命令來獲得打印機的信息,只需打開虛擬COM端口,並直接發送ZPL基於文本的命令

(與Z4000及以下它工作正常) ~ HS 獲得狀態。