protected override void OnRegistration(string commentary, uint quantity, uint amount, byte section) { ExecuteDriverCommand(delegate() { _errorCode = (short)GeneralError.Success; POSCommand cmd = new POSCommand(209); cmd.AddChar(OPERATOR_PASSWD, 4); // пароль cmd.AddNumeric(section, 3); // номер отдела cmd.AddBChar(""); // штрих-код cmd.AddBChar(""); // внутренний учетный код cmd.AddBChar(commentary); // название cmd.AddNumeric((int)amount, 10); // цена cmd.AddNumeric((int)quantity, 8); // количество cmd.AddNumeric(0, 10); // стоимость тары cmd.AddBChar(""); // размерность byte[] nRsp = new byte[5]; _errorCode = cmd.Execute(Port, nRsp); if (_errorCode != (short)GeneralError.Success) { CancelDocument(); } }); }
protected override void OnOpenDocument(DocumentType docType, string cashierName, string cashierInn, string customerPhoneOrEmail) { ExecuteDriverCommand(delegate() { _errorCode = (short)GeneralError.Success; if (PrinterStatus.OpenedDocument) { _errorCode = CancelDocument(); } m_CurrentDocType = docType; POSCommand cmd = new POSCommand(205); cmd.AddChar(OPERATOR_PASSWD, 4); switch (docType) { case DocumentType.Sale: cmd.AddNumeric(0, 2); break; case DocumentType.Refund: cmd.AddNumeric(1, 2); break; case DocumentType.PayingIn: cmd.AddNumeric(2, 2); break; case DocumentType.PayingOut: cmd.AddNumeric(3, 2); break; case DocumentType.Other: cmd.AddNumeric(4, 2); break; case DocumentType.XReport: case DocumentType.ZReport: case DocumentType.SectionsReport: // m_nErrorCode = PrintReport(docType); return; } cmd.AddBChar(cashierName); // имя оператора cmd.AddNumeric(13, 2); // код оператора cmd.AddBChar(""); // отдел cmd.AddBChar(""); // подотдел byte[] nRsp = new byte[5]; _errorCode = cmd.Execute(Port, nRsp); }); }
protected override void OnPrintString(string source, FontStyle style) { ExecuteDriverCommand(delegate() { _errorCode = (short)GeneralError.Success; if (m_CurrentDocType == DocumentType.XReport || m_CurrentDocType == DocumentType.ZReport || m_CurrentDocType == DocumentType.SectionsReport) { return; } POSCommand cmd = new POSCommand(206); cmd.AddChar(OPERATOR_PASSWD, 4); // пароль cmd.AddNumeric(0, 1); // устройство cmd.AddBChar(source); // текст _errorCode = cmd.Execute(Port); if (_errorCode != (short)GeneralError.Success) { CancelDocument(); } }); }
protected override void OnPrintBarcode(string barcode, AlignOptions align, bool readable) { ExecuteDriverCommand(delegate() { _errorCode = (short)GeneralError.Success; byte[] nPrintBuffer = new byte[256]; int BufSize = 0; // позиционирование по центру nPrintBuffer[BufSize++] = 0x1B; nPrintBuffer[BufSize++] = Convert.ToByte('a'); nPrintBuffer[BufSize++] = 1; // высота штрих-кода nPrintBuffer[BufSize++] = 0x1D; nPrintBuffer[BufSize++] = Convert.ToByte('h'); nPrintBuffer[BufSize++] = 70; // ширина кода nPrintBuffer[BufSize++] = 0x1D; nPrintBuffer[BufSize++] = Convert.ToByte('w'); nPrintBuffer[BufSize++] = 2; // цифры nPrintBuffer[BufSize++] = 0x1D; nPrintBuffer[BufSize++] = Convert.ToByte('H'); if (readable) { nPrintBuffer[BufSize++] = 2; } else { nPrintBuffer[BufSize++] = 0; } // штрих-код nPrintBuffer[BufSize++] = 0x1D; nPrintBuffer[BufSize++] = Convert.ToByte('k'); nPrintBuffer[BufSize++] = 0x43; nPrintBuffer[BufSize++] = 0x0C; POSCommand cmd = new POSCommand(237); cmd.AddChar(OPERATOR_PASSWD, 4); // пароль cmd.AddNumeric(0, 1); // устройство cmd.AddBChar(Encoding.ASCII.GetString(nPrintBuffer, 0, BufSize) + barcode); // данные _errorCode = cmd.Execute(Port); if (_errorCode != (short)GeneralError.Success) { CancelDocument(); } }); }
// установка сообщений private bool SetConst() { POSCommand Cmd = new POSCommand(231); Cmd.AddChar(OPERATOR_PASSWD, 4); Cmd.AddNumeric(5, 2); Cmd.AddBChar("НЕФИСКАЛЬНЫЙ ДОКУМЕНТ"); _errorCode = Cmd.Execute(Port); return(_errorCode == (short)GeneralError.Success); }
// установка подвала документа private bool SetDocumentFooter() { if (DocumentFooter == null) { return(true); } POSCommand Cmd = null; // очистка подвала Cmd = new POSCommand(233); Cmd.AddChar(OPERATOR_PASSWD, 4); _errorCode = Cmd.Execute(Port); if (_errorCode != (short)GeneralError.Success) { return(false); } // установка строк подвала for (int i = 0; i < DocumentFooter.Length; i++) { Cmd = new POSCommand(234); // установить строку подвала Cmd.AddChar(OPERATOR_PASSWD, 4); Cmd.AddNumeric(i + 1, 2); Cmd.AddNumeric(1, 2); if (DocumentFooter[i].Length > MAX_STRING_LEN) { Cmd.AddBChar(DocumentFooter[i].Substring(0, MAX_STRING_LEN)); } else { Cmd.AddBChar(DocumentFooter[i]); } _errorCode = Cmd.Execute(Port); if (_errorCode != (short)GeneralError.Success) { break; } } return(_errorCode == (short)GeneralError.Success); }