3

我有 EPSON 热敏打印机,型号 TM-88IV。我能够获得打印机的各种属性,但找不到任何获得以下状态:

  1. 纸没了
  2. 打印机处于错误状态
  3. 打印机关闭

我正在使用以下代码:

string printerName = "EPSON";
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}%'", printerName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection coll = searcher.Get();

foreach (ManagementObject printer in coll)
{
    MessageBox.Show(printer.Properties["Name"].Name + " - " + printer.Properties["Name"].Value
        + "\n" +
        printer.Properties["PrinterStatus"].Name + " - " + printer.Properties["PrinterStatus"].Value
        + "\n" +
        printer.Properties["DetectedErrorState"].Name + " - " + printer.Properties["DetectedErrorState"].Value
        + "\n" +
        printer.Properties["ExtendedDetectedErrorState"].Name + " - " + printer.Properties["ExtendedDetectedErrorState"].Value
         + "\n" +
        printer.Properties["ExtendedPrinterStatus"].Name + " - " + printer.Properties["ExtendedPrinterStatus"].Value
        );
}

我得到了上述属性的各种值,但无法将其映射到打印机的状态。

输出是

Name: EPSON TM-T88IV
PrinterStatus : 3
DetectedErrorState: 0
ExtendedDetectedErrorState: 0
ExtendedPrinterStatus: 2 

我已经安装了随打印机一起提供的 CD 中的 EPSON TM-88IV 驱动程序。

4

1 回答 1

2

显然DetectedErrorStateExtendedDetectedErrorState显示0这意味着Unknown。这是否意味着这台打印机不支持此属性,您当前的驱动程序不支持它,或者其他什么 - 我不知道。还有你的ExtendedPrinterStatus节目2,这意味着Unknown

PrinterStatus3这意味着空闲,因此您无法从中收集任何有用的信息。

尝试查询PrinterState. 虽然这是一个很长的镜头,因为这个属性被标记为过时,但是嘿,这只是一行代码,看看它会返回什么。

有关每个返回值含义的更多信息,请参见此处

编辑
由于这台打印机应该支持自动状态返回( ASB ) 通知,您可能能够直接从打印机读取该状态,而不是使用 WMI。有关 ASB 的详细信息,请参阅此 SO question这是您的打印机的规格

于 2012-05-31T12:09:28.193 回答