//Character Control Commands //use this mode to cancel another mode. public bool normalModeText(string szPrinterName) { int[] normal = { 27, 33, 0 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(normal)); return(true); }
//*************************** barcode commands ********************************** //GS h n - sets bar the height of bar code to n dots. public bool barcode_height(string szPrinterName, int range = 162) // default = 162 { //range 1 ≤ n ≤ 255 int[] height = { 29, 104, range }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(height)); return(true); }
// GS w n Set bar code width public bool barcode_width(string szPrinterName, int range = 3) { //range = 2 ≤ n ≤ 6 int[] width = { 29, 119, range }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(width)); return(true); }
//Double-height selected. public bool doubleHeightText(string szPrinterName) { int[] height = { 27, 33, 16 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(height)); return(true); }
//Character font B (9 × 17) selected. public bool charFontBText(String szPrinterName) { int[] fontB = { 27, 33, 1 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(fontB)); return(true); }
//execute test print public bool testPrint(String szPrinterName) { //function GS ( A pL pH n m int[] test = { 29, 40, 65, 2, 0, 0, 2 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(test)); return(true); }
//activate printer buzzer public bool buzzer(String szPrinterName) { //hex data = "1b 28 41 05 00 61 64 03 0a 0a"; int[] buzzer = { 27, 40, 65, 5, 0, 97, 100, 3, 10, 10 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(buzzer)); // ElginI9.SendASCiiToPrinter(szPrinterName, data); return(true); }
//GS f n Select a font for the HRI characters when printing a bar code. public bool barcodeHRI_chars(string szPrinterName, int font_code = 0) { //default 0 //[Range] n = 0, 1, 48, 49 int[] hri = { 29, 102, font_code }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(hri)); return(true); }
//GS H n Select print position of HRI characters public bool barcodeHRIPostion(string szPrinterName, int position_code = 1) { //default = 0 //[Range] 0 ≤ n ≤ 3, 48 ≤ n ≤ 51 int[] print_position = { 29, 72, position_code }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(print_position)); return(true); }
//Select cut mode and cut paper public bool CutPaper(String szPrinterName) { //hex 1D 56 m, m =0,1,48,49 int[] cut = { 29, 86, 0 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(cut)); return(true); }
//GS k Print barcode //<Function A> public bool printBarcode(string szPrinterName, string data, int type = 2) { //for this example 2 = JAN/EAN13 int[] barcode = { 29, 107, type }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(barcode)); ElginI9.SendStringToPrinter(szPrinterName, data); int[] nul = { 0 }; // null char at the end. ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(nul)); return(true); }
//print and Line feed public bool lineFeed(String szPrinterName, int numLines) { // fucntion LF int[] lf = { 10 }; for (int i = 1; i <= numLines; i++) { ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(lf)); } return(true); }
//GS k Print Barcode // <Function B> public bool printBarcodeB(String szPrinterName, string data, int type = 73) { //for this example 73 = CODE128 int size = (int)data.Length; // the number of bytes of bar code data int[] barcode = { 29, 107, type, size }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(barcode)); ElginI9.SendStringToPrinter(szPrinterName, data); return(true); }
//Generate pulse in Real Time public bool drawerKick(String szPrinterName) { // function DLE DC4 fn m t (fn=1) int[] pulse = { 27, 112, 0, 100, 200 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(pulse)); return(true); }
// Print Position Commands //ESC a n public bool SelectJustification(string szPrinterName, int justification_code) { //0= default //48 left //1,49 centering //2,50 right int[] align = { 27, 97, justification_code }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(align)); return(true); }
//Select an international character set public bool charSet(String szPrinterName, int language) { //function ESC R n //0-USA //12-Latin America // int[] char_set = { 27, 82, language }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(char_set)); return(true); }
//select character code table public bool codeTable(String szPrinterName, int language) { //function Esc t n // 0 - PC437 (USA: Standard Europe)] // 40 [ISO8859-15 (Latin9)] // 3 [PC860 (Portuguese)] int[] code = { 27, 116, language }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(code)); return(true); }
//print text public bool printText(String szPrinterName, String data) { //for more character sets: http://www.ascii-codes.com/ //for another charsets: //Encoding ascii = Encoding.GetEncoding("ascii"); //Encoding windows = Encoding.GetEncoding("Windows-1252"); //you must use this encoding for brazilian portuguese special characters: ^,~,ç,á... Encoding brazilian = Encoding.GetEncoding("IBM860"); byte[] byteData = brazilian.GetBytes(data); ElginI9.SendBytesToPrinter(szPrinterName, byteData); return(true); }
//Double-width selected. public bool DoubleWidthText(string szPrinterName) { int[] width = { 27, 33, 32 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(width)); return(true); }
//*************************** barcode commands ********************************** //function to print Qrcode public bool printQrcode(String Strdata, String szPrinterName) { int length = Strdata.Length + 3; // string size + 3 //int length = Strdata.Length; byte length_low_byte = 0, length_high_byte = 0; length_low_byte = (byte)(length & 0xff); //low byte used in function 180 length_high_byte = (byte)((length >> 8) & 0xff); //high byte in function 180 //if you don't want to use shift operator: //int length_low_byte = length % 256; //int length_high_byte = length / 256; initializePrinter(szPrinterName); //<Function ESC a n> Select justification int[] escAn = { 27, 97, 0 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(escAn)); //<Function GS L> Set left margin int[] fGsl = { 29, 76, 0, 0 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(fGsl)); //<Function 165> GS ( k p L p H cn fn n (cn = 49,fn = 65) QR Code: Select the model int[] f165 = { 29, 40, 107, 4, 0, 49, 65, 50, 0 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(f165)); //<Function 167> GS ( k pL pH cn fn n (cn = 49, fn = 67) QR Code: Set the size of module int[] f167 = { 29, 40, 107, 3, 0, 49, 67, 4 }; // size of qrcode: 1-16 ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(f167)); //<Function 169> GS ( k pL pH cn fn n (cn = 49, fn = 69) QR Code: Select the error correction level int[] f169 = { 29, 40, 107, 3, 0, 49, 69, 48 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(f169)); //<Function 180> GS ( k pL pH cn fn m d1…dk (cn = 49, fn = 80) QR Code: Store the data in the symbol storage area //pL and pH are the low- and high-order bytes of a 16-bit integer value that specifies the length in bytes of the following data int[] f180 = { 29, 40, 107, length_low_byte, length_high_byte, 49, 80, 48 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(f180)); //send string/url to printer //ElginI9.SendASCiiToPrinter(szPrinterName, Strdata); ElginI9.SendStringToPrinter(szPrinterName, Strdata); //<Function 181> GS ( k pL pH cn fn m (cn = 49, fn = 81) QR Code: Print the symbol data in the symbol storage area int[] f181 = { 29, 40, 107, 3, 0, 49, 81, 48 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(f181)); // return(true); }
//Underline mode is turned on public bool UnderlineModeText(string szPrinterName) { int[] underline = { 27, 33, 128 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(underline)); return(true); }
//initialize printer //ESC @ public void initializePrinter(String szPrinterName) { int[] command = { 27, 64 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(command)); }
//Emphasized mode is turned on public bool emphasizedModeText(string szPrinterName) { int[] mode = { 27, 33, 8 }; ElginI9.SendBytesToPrinter(szPrinterName, intTobyte(mode)); return(true); }
public void ImprimirNaoFiscal(int IdVenda, string ImpNome) { StringBuilder Cupom = new StringBuilder(); Cupom.AppendLine(" DOCUMENTO NÃO FISCAL "); try { // Busca Venda SqlDataReader DadosCliente = Controle.ConsultaSQL("SELECT T2.CNPJCPF,T2.PESSOA,T2.ENDERECO,T2.NUMERO,T2.BAIRRO,T2.VLRDESCONTO,T3.REFERENCIA,T3.DESCRICAO,T3.SITTRIBUTARIA,T3.ICMSISS,T1.QTDE,T1.VLRUNITARIO FROM MVVENDAITENS T1 " + " LEFT JOIN MVVENDA T2 ON (T2.ID_VENDA=T1.ID_VENDA) LEFT JOIN PRODUTOS T3 ON (T3.ID_PRODUTO=T1.ID_PRODUTO) WHERE T1.ID_VENDA=" + IdVenda.ToString()); SqlDataReader Venda = Controle.ConsultaSQL("SELECT T2.CNPJCPF,T2.PESSOA,T2.ENDERECO,T2.NUMERO,T2.COMPLEMENTO,T2.BAIRRO,T2.VLRDESCONTO,T2.CREDITO,T3.REFERENCIA,T3.DESCRICAO,T3.SITTRIBUTARIA,T3.ICMSISS,T1.QTDE,T1.VLRUNITARIO,T1.VLRTOTAL AS TOTALITEM, T2.VLRTOTAL AS VLRVENDA,T2.VLRSUBTOTAL,T1.ID_PRODUTO,T3.NCM,T1.ID_VENDA,T3.UNIDADE FROM MVVENDAITENS T1 " + " LEFT JOIN MVVENDA T2 ON (T2.ID_VENDA=T1.ID_VENDA) LEFT JOIN PRODUTOS T3 ON (T3.ID_PRODUTO=T1.ID_PRODUTO) WHERE T1.ID_VENDA=" + IdVenda.ToString()); SqlDataReader Pag = Controle.ConsultaSQL("SELECT T1.VLRORIGINAL,T2.ID_DOCUMENTO,T2.DOCUMENTO,T2.CODECF FROM LANCFINANCEIRO T1 LEFT JOIN TIPODOCUMENTO T2 ON (T2.ID_DOCUMENTO=T1.ID_TIPODOCUMENTO) WHERE T1.ID_VENDA=" + IdVenda.ToString()); //Inicializando Cupom DadosCliente.Read(); try { Cupom.AppendLine(" Data:" + DateTime.Now.Date.ToShortDateString() + " No. Venda:" + IdVenda.ToString()); if (DadosCliente.HasRows) { Cupom.AppendLine("CPF/CNPJ: " + DadosCliente["CNPJCPF"].ToString().Trim()); Cupom.AppendLine("Cliente.: " + Controle.Space(DadosCliente["PESSOA"].ToString().Trim(), 30)); } decimal VlrDesconto = 0; decimal VlrVenda = 0; decimal TVlrItem = 0; int Item = 1; Cupom.AppendLine("Item Ref Descrição"); Cupom.AppendLine(" Qtde. Und. Vlr.Unt Vlr.Total"); Cupom.AppendLine("------------------------------------------------"); while (Venda.Read()) { VlrDesconto = decimal.Parse(Venda["VLRDESCONTO"].ToString()) + decimal.Parse(Venda["CREDITO"].ToString()); VlrVenda = decimal.Parse(Venda["VLRVENDA"].ToString()); Cupom.AppendLine(Controle.Space(Item.ToString(), 4) + " " + Controle.Space(Venda["REFERENCIA"].ToString().Trim(), 7) + Controle.Space(Venda["DESCRICAO"].ToString().Trim(), 25)); Cupom.AppendLine(Controle.NumSpace(string.Format("{0:N0}", decimal.Parse(Venda["Qtde"].ToString())).ToString(), 6) + " " + Controle.Space(Venda["UNIDADE"].ToString().Trim(), 3) + " " + Controle.NumSpace(string.Format("{0:N2}", decimal.Parse(Venda["VLRUNITARIO"].ToString())).ToString(), 10) + " " + Controle.NumSpace(string.Format("{0:N2}", decimal.Parse(Venda["TOTALITEM"].ToString())).ToString(), 10)); TVlrItem = decimal.Parse(Venda["VlrUnitario"].ToString()) * decimal.Parse(Venda["QTDE"].ToString()); Item++; } Cupom.AppendLine("------------------------------------------------"); Cupom.AppendLine(" (+) Sub Total R$:" + Controle.NumSpace(string.Format("{0:N2}", VlrVenda + VlrDesconto).ToString(), 10)); Cupom.AppendLine(" (-) Desconto R$:" + Controle.NumSpace(string.Format("{0:N2}", VlrDesconto).ToString(), 10)); Cupom.AppendLine(" -----------"); Cupom.AppendLine(" (=) Total R$:" + Controle.NumSpace(string.Format("{0:N2}", VlrVenda).ToString(), 10)); Cupom.AppendLine("------------------------------------------------"); Cupom.AppendLine("Documento sem valor Fiscal"); Cupom.AppendLine(" "); Cupom.AppendLine(" "); Cupom.AppendLine(" "); Cupom.AppendLine(" "); Cupom.AppendLine(" "); Cupom.AppendLine(" "); Cupom.AppendLine(" "); Cupom.AppendLine(" "); ElginI9.SendStringToPrinter(ImpNome, Cupom.ToString()); } catch { return; } } catch (Exception a) { } }