这是什么编码:<esc> [00p <esc>(1 * 259 * 01/26/10 * 11.05 * <cr> </cr> </esc> </esc>

时间:2010-02-08 20:49:30

标签: c# encoding

我有一个.txt文件给我解析来提取某些信息,我真的不想写一个扫描仪来做这件事。它对我来说类似ANSI,可能还有一点点添加。我不知道。它是几年前几年硬件的自动输出。这里还有一些只是为了了解我正在处理的内容以及输出需要的样子。

<ESC>[00p<ESC>(1*259*01/26/10*11.05*<CR>
<ESC>[05pEJ LOG COPIED OK 247C0200       <CR>
<FF><ESC>[05p*3094*1*R*09<CR>
<ESC>[00p<ESC>(1*260*01/26/10*11.07*<CR>
<ESC>[05pSUPERVISOR MODE EXIT            <CR>

预期产出:

*259*01/26/10*11.05*
EJ LOG COPIED OK 247C0200       
*3094*1*R*09
*260*01/26/10*11.07*
SUPERVISOR MODE EXIT    

就像我说的,这只是它的页面和页面中的一点点。可能是ANSI我不确定。如果我遗漏了一些重要信息,请告诉我。我用C#btw编写代码。我会包括设备的名称/型号,但我不知道。谢谢!

5 个答案:

答案 0 :(得分:2)

这对我来说是一个电子杂志的一些收银机 - 销售交易的日志从哪里下载...不知道哪台机器 - 其中一些能够通过串口通过,通过使用逃避代码触发从电子期刊打开日志 - 我推理它,因为我看到EJ被使用...可能是三星收银机....

希望这有帮助, 最好的祝福, 汤姆。

答案 1 :(得分:1)

这是TELOCATOR ALPHANUMERIC PROTOCOL(TAP)的消息。

您可以在此document或以下article中阅读该说明。

答案 2 :(得分:0)

尝试这样的事情:

string input = @"
    <ESC>[00p<ESC>(1*259*01/26/10*11.05*<CR>
    <ESC>[05pEJ LOG COPIED OK 247C0200       <CR>
    <FF><ESC>[05p*3094*1*R*09<CR>
    <ESC>[00p<ESC>(1*260*01/26/10*11.07*<CR>
    <ESC>[05pSUPERVISOR MODE EXIT            <CR>";
foreach (Match m in Regex.Matches(input, 
    @"(?:(?:<FF>)?(?:<ESC>[\[\(](?:\d{2}p|\d\*))+)(?<output>.*)",
    RegexOptions.Multiline))
{
    Console.WriteLine(m.Groups["output"].Value);
}

您需要替换:

  • <ESC> \x1B
  • <FF> \xFF
  • <CR> \x0D

答案 3 :(得分:0)

看起来大多数'标签'都是一样的。如果是一次性拍摄,您可以在文字编辑器中进行搜索/替换,以移除<ESC><CR>[00p<FF>[05p而不是编写代码来做到这一点?当然你只展示了一个片段,所以也许有很多不同的标签需要删除...

答案 4 :(得分:0)

这与我ANSI Escape sequences非常相似。搜索它会给你很多结果。 This paper可能会让您进一步了解ANSI标准。

您正在寻找的是一个可以读取这些代码序列的解析器。 Here是用C编写的解析器,声称从ANSI序列输入中删除控制序列。也许你想尝试一下。