安全忽略未知的ANSI,ESC/P,ESC/POS序列,知道长度

Safely ignoring unknown ANSI, ESC/P, ESC/POS sequences, know the length

先了解一些上下文:
我正在制作一种将电子打字机转换为串行打字机的设备 printer/terminal。 (不要问为什么;我知道这实际上没有多大意义)
插入打字机控制器和键盘之间的设备。
它可以:

有了这个我可以让打字机在不同的模式下工作:

对于串行printer/terminal模式我想接受和理解一些ANSI(对于终端),ESC/P,ESC/POS(对于打印机)转义序列,取决于模式。

问题来了。由于设备有限,可以接受非常小的转义序列子集,这些转义序列可以在打字机上执行。我只想忽略任何不受支持的序列。
问题是序列的长度不同。
当一个无法识别的(设备)序列到达时,是否有一种通用的方法来确定该序列的字节数,以便我知道要忽略多少字符? (例如一些基于第一个字符的简单规则?)
或者我是否被迫为所有可能的序列准备一个长查找 table(这需要宝贵的闪存 space)以始终知道要忽略多少字节?

我想避免:

当然,我可以定义自己的序列,但是我需要为我的设备定制一个驱动程序。我更喜欢使用现有标准。

编辑添加: 正如@Raymond Chen 在下面的评论中所示,对于 ANSI 序列,可以在它们终止的地方检测到。所以没有问题。但是对于 ESC/P 序列(在打印机模式下),我没有注意到类似的方式来了解它。

ESC/P和ESC/POS有EPSON的规格,但只是事实上的标准,不是标准化的。
其他厂商挪用他们不一定遵守,经常自己做扩展。

EPSON本身也做了各种扩展,有ESC/P2、ESC/Page和ESC/Label(Zebra-ZPLII兼容?)等规格。

例如这里是ESC/POS
ESC/POS Command Reference for TM Printers

这里是 ESC/P。
EPSON ESC/P Reference Manual

如果你去别处看看,你会找到这些。
ESC/P - Wikipedia
ESC/P 2 and FX Commands
ESC/Label Command Reference Guide - Epson
Esc/Pageコマンドリファレンス第4版需要注册会员。


对它们的解释有松散的启发式格式,但不会有适用于所有人的严格标准化规则。

无论你是想稳定地解释所有文档化的命令,还是在一定程度上支持它们而放弃细节,你有很多选择。

像这样的工具可能很有名。
ESC/POS command-line tools

Included utilities
esc2text
esc2text extracts text and line breaks from binary ESC/POS files.

还没完,我自己在做这样一个工具
EscPosUtils

搜索一下,还有其他类似的工具。