2016-07-04 46 views
1

目前我使用這種方式發送ZPL文件到打印機如何知道何時使用複製命令到本地主機打印機的打印過程成功完成?</p> <pre><code>/C copy /B zplFile.zpl \localhostGX420d </code></pre> <p>在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表示成功,否則出錯),或者StandardOutput/StandardError顯示某些內容,如「Error in ....」。 – 2016-07-04 16:40:50

+0

你的意思是在C#代碼中? process.Start()方法返回一個真正的值。 –

+0

我的意思是,請檢查以下屬性:https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode(v=vs.110).aspx https://msdn.microsoft.com/ EN-US /庫/的System.Diagnostics.Process。standardoutput(v = vs.110).aspx https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standarderror(v=vs.110).aspx – 2016-07-04 23:24:24

回答

1

好吧,也許這workarround會的作品。

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

如果你們有更好的選項來解決這個問題,我會感謝您的意見。

只是爲了記錄,我搜索到打印機作業,並計算待處理的作業,如果有多個零,我認爲它失敗。

步驟如下: 1.-將ZPL文件發送到打印機。 2.-使用System.Threading.Thread.Sleep等待一段預定的時間。 3.-搜索打印機掛起的作業,如果count> 0,那麼它將失敗,因爲我認爲標籤不能成功打印。

非常感謝你們大家花時間回答。如果你知道更好的解決方案,我會感謝你評論它。

0

檢查此,變量可能的一個包含錯誤:

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

謝謝,man,但之前我檢查過它的屬性,並且沒有錯誤,那是因爲確實沒有錯誤,代碼成功發送了ZPL文件。問題出在打印機上,因爲它沒有紙張或者可能沒有連接。 –

0

請看在ZPL Manual主機查詢〜HQ ZPL命令。

這不是一個完美的解決方案,但想法是您可以在發送ZPL打印之前或之後查詢打印機的狀態。

+0

謝謝,我會嘗試使用該命令。 –

相關問題