Estado de lectura de la impresora Zebra

Estoy trabajando en un proyecto en el que necesitamos usar una impresora Zebra para etiquetas de códigos de barras. Estamos usando C #, y estamos bien en el lado de la impresión, enviando cadenas ZPL sin procesar a la impresora (usando winspool.drv).

Sin embargo, también necesitamos leer de la impresora, y no hay suerte allí.

Necesitamos obtener el estado de la impresora, que es la salida del comando ZPL "~ HS", por lo que podemos saber cuántas etiquetas hay en la memoria esperando para ser impresas. Los EnumJobs () de winspool.drv solo tienen trabajos en la cola de ventanas, y una vez que se envían a la impresora, desaparecen de esa lista. Pero eso no significa que la etiqueta se haya impreso, ya que la impresora tiene un sensor de desprendimiento y solo imprime una etiqueta a la vez, y obviamente estamos interesados ​​en enviar lotes de etiquetas a la impresora.

He intentado algo como (usando las llamadas winspool.drv):

OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero);
WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); // send the string "~HS"
ReadPrinter(hPrinter, data, buff, out pcRead);

Pero no consigo nada en la llamada ReadPrinter. Ni siquiera sé si esta es la forma correcta de hacerlo.

¿Alguien por ahí abordó esto antes?

Gracias.

Respuestas a la pregunta(5)

Su respuesta a la pregunta