2016-07-04 73 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

谢谢,我会尝试使用该命令。 –

相关问题