C# 如何避免Epson EPOS上的缓冲区溢出(通过串行端口)?

C# 如何避免Epson EPOS上的缓冲区溢出(通过串行端口)?,c#,escaping,serial-port,epson,C#,Escaping,Serial Port,Epson,当我在我的爱普生TM H6000或TM-88II上打印大量数据时,打印机缓冲区会满,并且不会打印所有数据。我使用c#和SerialPort(通过ESC)将数据发送到打印机(doc:) 有没有办法避免缓冲区溢出? 或者我应该减少数据量并发送更多的小数据包 提前谢谢 问候 Alex这是来自您链接的文档: 当接收缓冲区中的剩余空间降至16字节时,打印机状态变为“缓冲区已满”,并保持“缓冲区已满”,直到接收缓冲区中的空间增加到26字节。。。当接收缓冲区中的剩余空间为0字节时,打印机将忽略接收的数据 传

当我在我的爱普生TM H6000或TM-88II上打印大量数据时,打印机缓冲区会满,并且不会打印所有数据。我使用c#和SerialPort(通过ESC)将数据发送到打印机(doc:)

有没有办法避免缓冲区溢出? 或者我应该减少数据量并发送更多的小数据包

提前谢谢

问候
Alex

这是来自您链接的文档:

当接收缓冲区中的剩余空间降至16字节时,打印机状态变为“缓冲区已满”,并保持“缓冲区已满”,直到接收缓冲区中的空间增加到26字节。。。当接收缓冲区中的剩余空间为0字节时,打印机将忽略接收的数据

传输每行数据后,使用GS I或GS r检查打印机状态 并使用4KB接收缓冲区。发送一行数据,以便接收缓冲区 没有吃饱


这听起来是解决您问题的完美建议。

谢谢您的回复!我试图发送GS l和GS r,但没有得到响应(状态字节)。我是对的,这应该通过使用DataReceived方法来实现?是的,响应应该在
DataReceived
上出现,但是如果接收缓冲区已经满了,这些命令将被忽略。即使这是您发送的第一个命令,您是否也没有收到响应?还要注意,
DataReceived
是,因此您可能应该在发送命令后通过testoread检查
。此外,确保DIP开关1-2处于关闭状态…+1,以实际帮助而不是关闭此问题。这是唯一对ESC/POS命令DLE/EOT有用的QA打开,并且它已关闭?!同样,人们无法完成真正的工作。仅供参考:我在最初的评论中链接的pdf说,
GS a
是自动状态传输的“启用”,是
GS r
所必需的;然而,似乎没有一本手册可以确定这些工作原理,需要进行测试才能确定您的打印机的确切功能。以下是我能找到的最好的手册: