2012-05-31 2 views
3

У меня есть термопечати EPSON, модель TM-88IV. Я могу получить различные свойства принтера, но не могу найти, чтобы получить следующий статус:Как узнать, что бумага вышла на термопечати 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 

Я установил драйвер EPSON TM-88IV, которые пришли в кд вместе с принтером.

ответ

2

Видимо DetectedErrorState и ExtendedDetectedErrorState показать 0 что означает Неизвестный. Означает ли это, что этот принтер не поддерживает это свойство, ваш текущий драйвер не поддерживает его или что-то еще - я не знаю. Также в вашем ExtendedPrinterStatus показаны 2, что означает Неизвестно.

Ваш PrinterStatus говорит 3 что означает Idle так что вы не можете собрать любую полезную информацию из этого.

Попробуйте запросить PrinterState. Это длинный снимок, потому что это свойство обозначено как устаревшее, но эй, это всего лишь строка кода, посмотрите, что он вернет.

Более подробная информация о том, что означает каждое возвращаемое значение найдено here

EDIT
Поскольку этот принтер должен поддерживать автоматический статус назад (ASB) уведомления, вы можете быть в состоянии прочитать этот статус напрямую от принтера, не используя WMI. Refer to this SO question Подробнее о ASB. Here is the specification for your printer

+0

@Dejan ... the PrinterStatus дает код 3 – HotTester

+0

PrinterState дает значение 0 – HotTester