我如何使用 ESC POS 生成二维码?
How i can generete qrcode with ESC POS?
我正在借助 ESC / POS 命令开发 QRCODE 打印。
但是,我无法生成超过 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;
为了生成二维码字符串,我将字符串写入文件并打印。
那是因为它使用了字符串变量。
即使您指定了编码,也不总是可以将值为 0x80 或更高的字符数据转换为正确的字节值。
如果只使用字节数组,可以使用长数据。
并非所有内容都可以视为在单个代码页中编码的文本。
这是因为条形码打印等包含控制代码的命令,很可能包含不能作为字符串文本处理的数据。
但是,可以混合打印文本和条形码。文本数据可以作为编码的二进制数据(不是字符串)写入文件。
如果有另一个程序从文件中读取数据并将其写入打印机,则该程序必须将文件作为二进制数据文件打开。
我正在借助 ESC / POS 命令开发 QRCODE 打印。 但是,我无法生成超过 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;
为了生成二维码字符串,我将字符串写入文件并打印。
那是因为它使用了字符串变量。
即使您指定了编码,也不总是可以将值为 0x80 或更高的字符数据转换为正确的字节值。
如果只使用字节数组,可以使用长数据。
并非所有内容都可以视为在单个代码页中编码的文本。
这是因为条形码打印等包含控制代码的命令,很可能包含不能作为字符串文本处理的数据。
但是,可以混合打印文本和条形码。文本数据可以作为编码的二进制数据(不是字符串)写入文件。
如果有另一个程序从文件中读取数据并将其写入打印机,则该程序必须将文件作为二进制数据文件打开。