public void Process() { NetworkStream stream = null; kkmServiceResponseAtol respAtol = new kkmServiceResponseAtol(); try { stream = client.GetStream(); byte[] data = new byte[64]; // буфер для получаемых данных // получаем сообщение StringBuilder builder = new StringBuilder(); int bytes = 0; do { bytes = stream.Read(data, 0, data.Length); builder.Append(Encoding.GetEncoding(1251).GetString(data, 0, bytes)); }while (stream.DataAvailable); string message = builder.ToString(); string forceXml = ""; kkmServiceRequest m_requests = Serializer.FromXml <kkmServiceRequest>(message); kkmServiceResponse m_response = SendInfoToKKM(m_requests, out forceXml); } catch (Exception ex) { Logs.LogAdd("Ошибка " + ex.Message); } finally { if (stream != null) { stream.Close(); } if (client != null) { client.Close(); } } }
private kkmServiceResponse SendInfoToKKM(kkmServiceRequest request, out string forceXml) { forceXml = null; string a_uuid; string a_exeptionMessage; string a_status; CultureInfo m_formatProvider = new CultureInfo("en-US", true); m_formatProvider.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; m_formatProvider.NumberFormat.NumberDecimalSeparator = "."; kkmServiceResponse resp = new kkmServiceResponse(); lock (POSAtolOnline.SyncObj) { Logs.LogAdd("Данные для ККМ: m_Config.kkmTypeProtokol = " + m_Config.kkmTypeProtokol + " m_Config.kkmIPAddress = " + m_Config.kkmIPAddress + " m_Config.kkmPort = " + m_Config.kkmPort); POSAtolOnline POSATOffline = new POSAtolOnline(); POSATOffline.m_Config = m_Config; if (POSATOffline.SendPaymentATOL(m_Config, request, m_formatProvider, out a_uuid, out a_exeptionMessage, out a_status) != "") { Logs.LogAdd("Отправка на АТОЛОнлайн: "); resp.Kkmserialnumber = ""; resp.Kkmeklznumber = ""; resp.Kkmshiftsessionnumber = ""; resp.Kkmglobalsummpaymentfrom = 0.0m; resp.ShiftSummIncome = 0.0m; resp.LastKPKDateTime = DateTime.Now; resp.checkNumber = ""; resp.shiftSummPayment = 0.0m; resp.shiftSummPaymentRevert = 0.0m; resp.operationDocumentNumber = 0; resp.operationNumberFPD = ""; resp.shiftReceiptNumber = 0; resp.shiftReceiptRevertNumber = 0; resp.countDocumentNotSentOFD = ""; resp.registrationNumberKKT = ""; resp.atoluuid = a_uuid; if (m_Config.debugLevel > 1) { Logs.LogAdd("Отправлена грууповая операция: " + request.groupOperId + " Возвращенный UUID: " + a_uuid); } resp.groupOperId = request.groupOperId; resp.requestDate = DateTime.Now.ToString("yyyy-MM-ssTHH:mm:ss"); resp.code = 0; resp.errorMessage = ""; } else { Logs.LogAdd("Ошибка : "); } if (resp.code != 0) { resp.errorMessage += " (code=" + resp.code + ")"; } switch (resp.code) { case 0: //всё хорошо resp.code = 0; break; /*case 21: * //ошибка, повторите запрос на печать * resp.code = 1; * break;*/ default: //фатальная ошибка resp.code = 1; break; } } return(resp); }