#c# #thermal-printer #escpos
#c# #термопринтер #escpos
Вопрос:
Я разрабатываю печать QR-кода с помощью команд ESC / POS. Однако я не могу сгенерировать qr-код, содержащий более 127 символов.
Следует коду на C # :
string ESC = Convert.ToString((char)27);
string GS = Convert.ToString((char)29);
string center = ESC "a" (char)1; //align center
string left = ESC "a" (char)0; //align left
string bold_on = ESC "E" (char)1; //turn on bold mode
string bold_off = ESC "E" (char)0; //turn off bold mode
string cut = ESC "d" (char)1 GS "V" (char)66;
string initp = ESC (char)64; //initialize printer
string buffer = ""; //store all the data that want to be printed
string QrData = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; //data to be print in QR code
Encoding m_encoding = Encoding.GetEncoding("iso-8859-1"); //set encoding for QRCode
int store_len = (QrData).Length 3;
byte store_pL = (byte)(store_len % 256);
byte store_pH = (byte)(store_len / 256);
buffer = initp; //initialize printer
buffer = m_encoding.GetString(new byte[] { 29, 40, 107, 4, 0, 49, 65, 50, 0 });
buffer = m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 67, 8 });
buffer = m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 69, 48 });
buffer = m_encoding.GetString(new byte[] { 29, 40, 107, store_pL, store_pH, 49, 80, 48 });
buffer = QrData;
buffer = m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 81, 48 });
buffer = cut initp;
чтобы сгенерировать строку qrcode, я записываю строку в файл и распечатываю ее.
Ответ №1:
Это потому, что он использует строковые переменные.
Даже если вы укажете кодировку, не всегда возможно преобразовать символьные данные со значением 0x80 или выше в правильное значение байта.
Если вы используете только массив байтов, вы можете использовать длинные данные.
Не все можно рассматривать как текст, закодированный на одной кодовой странице.
Это связано с тем, что команды, которые включают управляющие коды, такие как печать штрих-кода, с большой вероятностью содержат данные, которые нельзя обрабатывать как текст строки символов.
Однако печать текста и штрих-кода может быть смешанной. Текстовые данные могут быть записаны в файл в виде закодированных двоичных данных (не в виде строки).
Если есть другая программа, которая считывает данные из файла и записывает их на принтер, эта программа должна открыть файл как двоичный файл данных.
Комментарии:
1. привет @kunif, проблема в том, что вся моя печать выполняется через текстовый файл. Итак, вы говорите мне, что я должен отказаться от печати в формате txt и печатать байты?