RawPrinterHelper
Microsoft のクラスhttp://support.microsoft.com/kb/322091を使用して、C# コードから Zebra KR403 プリンターに印刷していますが、すべて正常に動作しています。
プリンターの紙詰まりや紙切れなどの状態を監視したい。プリンターに送信できるクエリ "~HQES" または "esc eng 6" を見つけました。これにより、必要なものがすべて返されます。問題は、このクエリをプリンターに送信して、プリンターが応答できるようにする方法がわからないことです。クラスのWritePrinter
はRawPrinterHelper
bool または long 型のみを返すようです。
また、プリンターのWin32_printer
を見つけるためにオブジェクトを使用してみました。PrinterStatus/PrinterState/Errors
次の方法を使用します。
public static string PrinterStateCheck(string szPrinterName)
{
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}%'", szPrinterName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection collection = searcher.Get();
string errorName = "";
foreach (ManagementObject printer in collection)
{
int state = Convert.ToInt32(printer["PrinterState"]);
errorName = state.ToString();
}
return errorName;
この方法を利用して、PrinterState
、PrinterStatus
、および を取得しようとしましたDetectedErrorState
が、必要な情報が得られません。PrinterState
常に a を返し1024
、PrinterStatus
常に a を返し4
、常に aDetectedErrorState
を返します2
。適切な印刷時と紙詰まりまたはメディア切れイベントで数回の印刷でPrinterState
返されましたが、現在はすべての呼び出しで返されます。0
1024
1024
また、ネットワーク上のプリンターを監視するための独自のソフトウェアを Zebra が作成したこともわかりました。問題は、プリンターがネットワーク上になく、USB 経由でクライアント コンピューターにのみ接続されていることです。また、各レシートの印刷前または印刷後にプリンターの状態を確認したいと考えています。
winspool.Drv
生データをプリンターに送信し、プリンターからデータを受信するために使用できるものがあることを願っています。
現在、 のReadPrinter
関数を使用していますwinspool.Drv
が、関数が返さ0
れています。これは、プリンターからの応答にアクセスできないことを意味します。これは通常、プリンタが双方向通信用に設定されていないことを意味しますが、双方向通信が設定されていることは確かです。プリンターのプロパティの「ポート」タブで、「双方向サポートを有効にする」チェックボックスがオンになっている。また、Zebra セットアップ ユーティリティは、プリンタに正しくクエリを実行し、ダイレクト コミュニケーション ウィンドウで応答を受け取ることができます。
アドバイスありがとうございます。
ジェレミー