C# 如何知道向本地主机打印机复制命令的打印过程何时成功完成?
目前,我正在使用以下方式向打印机发送zpl文件:C# 如何知道向本地主机打印机复制命令的打印过程何时成功完成?,c#,printing,zpl,C#,Printing,Zpl,目前,我正在使用以下方式向打印机发送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(); startI
/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
有什么建议吗
提前谢谢
编辑:
如果您在下图中看到,有待打印的作业,那么,作为一个工作区,我可以使用C#在这个列表中搜索,这可能吗
好吧,也许这项工作会奏效 如果你们有更好的选择来解决这个问题,我将感谢你们的评论 只是为了记录,我搜索打印机作业,并计算待处理的作业,如果超过零,我假设它失败了 这些步骤是: 1.-将ZPL文件发送到打印机。 2.-使用
System.Threading.Thread.Sleep
等待预定时间。
3.-搜索打印机挂起的作业,如果计数>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...
请查看中的Host Query~HQ ZPL命令
这不是一个完美的解决方案,但其思想是,您可以在发送ZPL打印之前或之后查询打印机的状态。有两种检查方法,首先检查ReturnCode(0为成功,否则会出错),或者StandardOutput/StandardError会显示一些内容,如“出错…”一词。您的意思是在C代码中吗?process.Start()方法返回一个真值。我的意思是,检查这些属性:相同的,总是返回相同的值。我解决了这个问题,我在下面的评论中提到了这个问题。谢谢你的帮助。谢谢你,伙计,但是之前我检查了它的属性,没有错误,那是因为确实没有错误,代码成功地发送了ZPL文件。问题出在打印机上,因为打印机没有纸张或可能没有连接。