Хранение команд принтера для последующей передачи

Я создаю чек, который отправляется на чековый принтер через ESC/Pos. Если мне позже потребуется распечатать копию этого чека, мне нужно сохранить команды esc/pos в базе данных. Это где моя проблема начинается, потому что я не могу найти правильный тип данных для хранения квитанции.

Как вы храните свои квитанции? Строки? Varbinarys? Что-нибудь еще?

ОБНОВЛЕНИЕ: Извините. Я написал быстрый пример того, как работает ESC/Pos.

        Encoding enc = Encoding.ASCII;

        string text = string.Empty;
        text += Convert.ToChar(27) + "@"; 
        text += Convert.ToChar(27) + "R" + Convert.ToChar(9);
        text += Convert.ToChar(27) + "t" + Convert.ToChar(5);

        for (int i = 255; i < 300; i++)
        {
            text += i + " " + Convert.ToChar(i) + Environment.NewLine;
        }
        for (int i = 0; i < 4; i++)
            text += Environment.NewLine;
        text += Convert.ToChar(29) + "V" + Convert.ToChar(65) + Convert.ToChar(0);
        clientSock.Send(enc.GetBytes(text.ToCharArray()));

Это то, что я хочу хранить. Я не хочу сохранять только содержимое в текстовой переменной, так как я потеряю формат, который может быть включен в содержимое. Я использую Microsoft SQL Server (T-SQL).

1 ответ

Похоже, вам нужно хранить хотя бы несколько непечатаемых символов, чтобы не использовать strings/varchar. Кроме того, varbinary ограничен 254 байтами, поэтому вам, вероятно, лучше использовать BLOB-объекты.

Кроме того, просто к сведению, вы должны рассмотреть возможность использования StringBuilder вместо того, чтобы делать все конкатенации строк. Это будет намного быстрее.

Другие вопросы по тегам