Что такое кодировка: <ESC>[00p <ESC>(1 * 259 * 01/26/10 * 11.05 *<CR> - PullRequest
3 голосов
/ 08 февраля 2010

У меня есть файл .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 # кстати. Я бы включил название / модель устройства, но я не знаю его. Спасибо!

Ответы [ 5 ]

2 голосов
/ 09 февраля 2010

Мне кажется, что это электронный журнал какой-то кассовой машины - откуда был загружен журнал транзакций с продаж ... хотя я не уверен, с какой машины - с некоторыми из них можно связаться через последовательный порт, используя Escape-коды для запуска открытия журнала из электронного журнала - я полагаю, что, как я видел, используется EJ ... возможно, это кассовый аппарат Samsung ....

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 09 февраля 2010

Это сообщение для TELOCATOR ALPHANUMERIC PROTOCOL (TAP).

Вы можете прочитать его описание в этом документе или в следующей статье .

0 голосов
/ 09 февраля 2010

Мне кажется, это очень похоже на последовательности ANSI Escape . Поиск этого даст вам много результатов. Этот документ может дать вам дополнительное представление о стандартах ANSI.

То, что вы ищете, - это анализатор, который может читать эти последовательности кода. Здесь - синтаксический анализатор, написанный на C, который утверждает, что удаляет управляющие последовательности из входных данных последовательности ANSI. Может быть, вы хотите попробовать.

0 голосов
/ 09 февраля 2010

Похоже, что большинство «тегов» одинаковы. Если это один раз, вы могли бы просто выполнить поиск / замену в текстовом редакторе, чтобы удалить <ESC>, <CR>, [00p, <FF> и [05p, вместо того, чтобы писать код для этого? Конечно, вы только показали фрагмент, так что, возможно, есть тонна различных тегов для удаления ...

0 голосов
/ 09 февраля 2010

Попробуйте что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...