gpt4 book ai didi

c# - 如何从 Zebra 收据打印机回读状态?

转载 作者:行者123 更新时间:2023-11-30 13:02:29 25 4
gpt4 key购买 nike

我正在为一个项目使用 Zebra KR403 收据打印机,我需要以编程方式从打印机读取状态(缺纸、纸张快用完、打印头打开、卡纸等)。在 ZPL 文档中,我发现我需要发送一个 ~HQES 命令,然后打印机以其状态信息进行响应。

在该项目中,打印机通过 USB 连接,但我认为通过 COM 端口连接它并从那里开始工作以使其通过 USB 工作可能更容易。我能够打开与打印机的通信并向其发送命令(我可以打印测试收据),但每当我尝试读取任何内容时,它就会永远挂起,永远无法读取任何内容。

这是我使用的代码:

public Form1()
{
InitializeComponent();
SendToPrinter("COM1:", "^XA^FO50,10^A0N50,50^FDKR403 PRINT TEST^FS^XZ", false); // this prints OK
SendToPrinter("COM1:", "~HQES", true); // read is never completed
}

[DllImport("kernel32.dll", SetLastError = true)]
static extern SafeFileHandle CreateFile(
string lpFileName,
FileAccess dwDesiredAccess,
uint dwShareMode,
IntPtr lpSecurityAttributes,
FileMode dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplateFile);

private int SendToPrinter(string port, string command, bool readFromPrinter)
{
int read = -2;

// Create a buffer with the command
Byte[] buffer = new byte[command.Length];
buffer = System.Text.Encoding.ASCII.GetBytes(command);

// Use the CreateFile external func to connect to the printer port
using (SafeFileHandle printer = CreateFile(port, FileAccess.ReadWrite, 0, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero))
{
if (!printer.IsInvalid)
{
using (FileStream stream = new FileStream(printer, FileAccess.ReadWrite))
{
stream.Write(buffer, 0, buffer.Length);

// tries to read only one byte (for testing purposes; in reality many bytes will be read with the complete message)
if (readFromPrinter)
{
read = stream.ReadByte(); // THE PROGRAM ALWAYS HANGS HERE!!!!!!
}

stream.Close();
}
}
}

return read;
}

我发现当我打印测试收据时(第一次调用 SendToPrinter()),在我用 stream.Close() 关闭句柄之前,什么都不会打印>。我进行了这些测试但无济于事:

  • 在调用 stream.Write() 之后调用 stream.Flush(),但仍然没有任何内容被读取(也没有任何内容被打印,直到我调用 stream。关闭())
  • 只发送命令然后关闭流,立即重新打开并尝试读取
  • 打开两个句柄,在句柄1上写,关闭句柄1,读句柄2,什么都没有

有没有人有幸从 Zebra 打印机上读回状态?或者任何人都知道我可能做错了什么?

最佳答案

正如@l33tmike 在评论中指出的那样,这个问题的答案已经发布在另一个问题上:Which SDK should I use for KR403 Zebra Printer

关于c# - 如何从 Zebra 收据打印机回读状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15276682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com