2016-07-04 5 views
1

ローカルホストプリンタへのコピーコマンドによる印刷プロセスが正常に終了したことを知る方法?現在、私はこの方法を使用してプリンタにZPLファイルを送信してい

/C copy /B zplFile.zpl \\localhost\GX420d 

C#では、私はこのコードを使用:

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.FileName = processName; //cmd 
startInfo.Arguments = string.Format(processArgument, "tmp.txt"); 
process.StartInfo = startInfo; 
process.Start(); 

すべてが素晴らしい作品、問題は、私は持っていけないということですたとえばzplファイルを送信したときにプリンタにラベルが付いていない、または切断されているなど、印刷プロセスが正常に完了したときに知っておくハンドシェイクは、コマンドを実行するシステムは印刷プロセスが正常終了したとみなします。

ラベルが正常に印刷されたかどうかを知る必要があります。

注1:プリンタはUSBケーブルを使用したGX420dです。

提案がありますか?

ありがとうございました。

編集:

あなたは下の画像に表示されている場合は、印刷するには、保留中のジョブがある、まあ、多分workarroundように私はC#を使用して、このリストで検索することができ、これは可能ですか?

List of pending jobs

+0

ReturnCode(0は成功する、そうでなければ何か間違っている)をチェックするには2つの方法があり、StandardOutput/StandardErrorは "Error in ...."のような何かを表示します。 –

+0

C#コードの意味ですか? process.Start()メソッドは真の値を返します。 –

+0

つまり、次のプロパティを確認してください。https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode(v=vs.110).aspx https://msdn.microsoft.com/ ja-jp/library/system.diagnostics.process。標準出力(v = vs.110).aspx https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standarderror(v=vs.110).aspx –

答えて

1

まあ、このworkarroundは作品になります。

http://www.codeproject.com/Articles/51085/Monitor-jobs-in-a-printer-queue-NET

あなたたちは、私はあなたのコメントに感謝します。この問題を解決するためのより良いオプションを持っている場合。

私はプリンタジョブを検索し、保留中のジョブを数えます。ゼロ以上がある場合は、失敗したと見なします。

手順は次のとおりです。 1.プリンタにZPLファイルを送信します。 2. System.Threading.Thread.Sleepを使用して、所定の時間待機します。 3.プリンタの保留中のジョブを検索します。カウントが0より大きい場合は、ラベルが正常に印刷されないと想定されるため、失敗します。

お世話になりました皆さん、ありがとうございます。あなたが良い解決策を知っていれば、私はあなたがそれをコメントしていただければ幸いです。

0

チェックこの、変数月の1は誤りが含まれています:

var process = new Process(); 
var startInfo = new ProcessStartInfo(); 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
startInfo.FileName = processName; //cmd 
startInfo.Arguments = string.Format(processArgument, "tmp.txt"); 
startInfo.RedirectStandardOutput = true; 
startInfo.RedirectStandardError = true; 
startInfo.UseShellExecute = false; 
process.StartInfo = startInfo; 
process.Start(); 
string outputText = process.StandardOutput.ReadToEnd(); // Check this 
string errorText = process.StandardError.ReadToEnd(); // Check this 
int exitCode = process.ExitCode;      // Check this 
process.WaitForExit(); 
// In outputText is probably something here... 
// In errorText is probably something here... 
// In exitCode is probably something here... 
+0

ありがとうございました。以前はそのプロパティをチェックしていましたが、エラーはありません。実際にはエラーがないため、コードはZPLファイルを正常に送信します。問題は、用紙がないか、接続されていない可能性があるためです。 –

0

ZPL Manualでホストクエリー〜HQ ZPLコマンドで見て下さい。

これは完璧な解決策ではありませんが、ZPLを送信して印刷する前または後にステータスをプリンタに問い合わせることができます。

+0

ありがとうございます、私はそのコマンドで試してみます。 –

関連する問題