Хранение команд принтера для последующей передачи
Я создаю чек, который отправляется на чековый принтер через 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 вместо того, чтобы делать все конкатенации строк. Это будет намного быстрее.