STDMETHODIMP CECR::ShiftReport(BSTR FirmID, LONG IsZReport, LONG* ErrorCode) { InitCmd(); switch (IsZReport) { case 1: // команда to_numeric(204, m_Cmd, 3, m_Len); //ZREPORT // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // код оператора to_numeric(11, m_Cmd + m_Len, 2, m_Len); break; case 2: // команда to_numeric(218, m_Cmd, 3, m_Len); //XREPORT // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); break; case 3: // команда to_numeric(218, m_Cmd, 3, m_Len); //XREPORT // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); break; } m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); ClearPrintBuffer(); return S_OK; }
void QuickAddCapacitorDialog::slotAttemptAutoComplete() { QString text = ui->capacitanceValueLineEdit->text().trimmed(); //We accept 3 digit value codes with an optional tolerance code if(text.length()==3 || text.length()==4){ QString multiplicandStr = text.left(2); QChar multiplierChar = text.at(2); bool multiplicandOk; int multiplicand = multiplicandStr.toInt(&multiplicandOk); if(multiplicandOk && multiplierChar.isDigit()){ double capacitance = multiplicand * pow10(-12); int multiplierIdx = to_char(multiplierChar) - '0'; if(multiplierIdx >= 0 && multiplierIdx <= 9){ capacitance = capacitance * MULTIPLIERS[multiplierIdx]; } QString capacitanceStr = UnitFormatter::format(capacitance, _capacitanceParam.unitSymbol()); ui->capacitanceValueLineEdit->setText(capacitanceStr); } if(text.length()==4){ QChar toleranceChar = text.at(3); if(toleranceChar.isLetter()){ QString tolerance = lookupTolerance(to_char(toleranceChar)); if(!tolerance.isEmpty()){ ui->toleranceLineEdit->setText(tolerance); } } } } }
STDMETHODIMP CECR::GetHardwareInfo(BSTR FirmID, LONG* HardwareType, LONG* HardwareNumber, LONG* IsFiscalized, LONG* ErrorCode) { // серийный номер InitCmd(); // команда to_numeric(103, m_Cmd, 3, m_Len); //GETSERIAL // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 12; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) *HardwareNumber = atol((char *)m_Rsp); // количество фискализаций InitCmd(); // команда to_numeric(105, m_Cmd, 3, m_Len); //GETFISCNUM // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 2; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) atol((char*)m_Rsp) ? *IsFiscalized = 1 : *IsFiscalized = 0; // тип драйвера *HardwareType = m_ECRList.GetHardwareType(); return S_OK; }
STDMETHODIMP CECR::Fiscalization(BSTR FirmID, LONG OldPassword, LONG NewPassword, ULONGLONG MachineRegNum, ULONGLONG TaxpayerIndNum, LONG* ErrorCode) { LONG IsFiscalized = 0; CHAR szOldPassword[8]; ZeroMemory(szOldPassword, 8); memset(szOldPassword, 32, 8); // количество фискализаций InitCmd(); // команда to_numeric(105, m_Cmd, 3, m_Len); //GETFISCNUM // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 2; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); atol((char*)m_Rsp) ? IsFiscalized = 1 : IsFiscalized = 0; if (IsFiscalized) // если ФР уже фискализован, используем старый пароль sprintf(szOldPassword, "%08d", OldPassword); else // если ФР не фискализован, в качестве пароля используется серийный номер { InitCmd(); // команда to_numeric(103, m_Cmd, 3, m_Len); //GETSERIAL // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 12; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); CopyMemory(szOldPassword, m_Rsp, 8); } InitCmd(); // команда to_numeric(302, m_Cmd, 3, m_Len); //FISCALISATION // пароль to_char(szOldPassword, m_Cmd + m_Len, 8, m_Len); // регистрационный номер кассы to_numeric((LONG)MachineRegNum, m_Cmd + m_Len, 12, m_Len); // ИНН to_numeric((LONG)TaxpayerIndNum, m_Cmd + m_Len, 12, m_Len); // положение десятичной точки в суммах (резерв) to_numeric(2, m_Cmd + m_Len, 1, m_Len); // новый пароль to_numeric(NewPassword, m_Cmd + m_Len, 8, m_Len); m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); return S_OK; }
STDMETHODIMP CECR::MoveCash(BSTR FirmID, LONG Money, LONG DirectionIn, LONG* ErrorCode) { DWORD dwDocType; DirectionIn ? dwDocType = CashInDocument : dwDocType = CashOutDocument; // открыть документ OpenDocument(FirmID, DEP_NO, ErrorCode, dwDocType); if (*ErrorCode == E_SUCCESS) { PrintBuffer(FirmID, ErrorCode); if (*ErrorCode == E_SUCCESS) { InitCmd(); // команда to_numeric(214, m_Cmd, 3, m_Len); //SETTENDER // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // тип оплаты to_numeric(0, m_Cmd + m_Len, 2, m_Len); // сумма to_smoney(Money, m_Cmd + m_Len, 10, m_Len); m_RspLen = 11; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) Cut(FirmID, 1, ErrorCode); } } return S_OK; }
char* vec_char (vec_t *vec) { ensure_vec(vec, __func__); int count = vec->count; push(strf("[")); for (int i = 0; i < count; i++) { if (is_vec(vec_get(vec, i)[0])) push(strf("vec[]")); else if (is_map(vec_get(vec, i)[0])) push(strf("map[]")); else push(to_char(vec_get(vec, i)[0])); op_concat(); if (i < count-1) { push(strf(", ")); op_concat(); } } push(strf("]")); op_concat(); return pop(); }
void d7() { const char enqueue = '+'; const char dequeue = '-'; const char stop = 'x'; string msg_get_input = "Enter +a to enqueue a, - to dequeue, x to stop: "; string msg_bad_input = "Your input is incorrect"; string msg_dequeue_ok = " was just dequeued."; string msg_dequeue_no = "Queue is empty, dequeuing not possible."; string msg_end = "Program is over."; Queue q; char command = ' '; while (command != stop) { print(msg_get_input); cin >> command; switch (command) { case enqueue: q.enqueue(); break; case dequeue: print( q.is_empty() ? msg_dequeue_no : to_char(q.dequeue()) + msg_dequeue_ok); break; case stop: break; default: print(msg_bad_input); } } print(msg_end); }
STDMETHODIMP CECR::Cut(BSTR FirmID, LONG CutType, LONG* ErrorCode) { if(!bDocOpened) { OpenDocument(FirmID, DEP_NO, ErrorCode, NonFiskDocument); if (*ErrorCode == E_SUCCESS) PrintBuffer(FirmID, ErrorCode); } InitCmd(); // команда to_numeric(215, m_Cmd, 3, m_Len); //CLOSE // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // обрезать чек to_numeric(CutType, m_Cmd + m_Len, 1, m_Len); m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) { ClearPrintBuffer(); bDocOpened = FALSE; } return S_OK; }
VOID CECR::OpenDocument(BSTR FirmID, LONG DepNo, LONG* ErrorCode, DWORD dwOpenType) { char lpDeptName[255]; ZeroMemory(lpDeptName, 255); sprintf(lpDeptName, "Отдел %d", DepNo); m_ECRList.Win1251ToCP866(lpDeptName); // открыть документ InitCmd(); // команда to_numeric(205, m_Cmd, 3, m_Len); //OPEN // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // тип документа to_numeric(dwOpenType, m_Cmd + m_Len, 2, m_Len); // ид. оператора to_bchar(m_ECRList.CashierName, m_Cmd + m_Len, strlen(m_ECRList.CashierName), m_Len); // код оператора to_numeric(13, m_Cmd + m_Len, 2, m_Len); // ид. отдела to_bchar(lpDeptName, m_Cmd + m_Len, strlen(lpDeptName), m_Len); // ид. подотдела to_bchar("", m_Cmd + m_Len, 0, m_Len); m_RspLen = 5; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); // если не удалось открыть документ, поскольку он уже открыт, команду считаем успешной if (*ErrorCode == 46) *ErrorCode = E_SUCCESS; bDocOpened = *ErrorCode == E_SUCCESS; }
STDMETHODIMP CECR::SetDateTime(BSTR FirmID, LONG Year, LONG Month, LONG Day, LONG Hour, LONG Minute, LONG Second, LONG* ErrorCode) { InitCmd(); // команда to_numeric(401, m_Cmd, 3, m_Len); //SETTIMER // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // день to_numeric(Day, m_Cmd + m_Len, 2, m_Len); // месяц to_numeric(Month, m_Cmd + m_Len, 2, m_Len); // год to_numeric(Year, m_Cmd + m_Len, 4, m_Len); // час to_numeric(Hour, m_Cmd + m_Len, 2, m_Len); // минута to_numeric(Minute, m_Cmd + m_Len, 2, m_Len); // секунда to_numeric(Second, m_Cmd + m_Len, 2, m_Len); m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == 23) m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); return S_OK; }
STDMETHODIMP CECR::State(BSTR FirmID, LONG *Opened, LONG *Over24h, LONG *Idle, LONG *OutOfPaper, LONG *DocOpened, LONG *DrawerOpened, LONG* ErrorCode) { // статус ФР InitCmd(); // команда to_numeric(101, m_Cmd, 3, m_Len); //GETSTATUS // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // опрос принтера to_numeric(1, m_Cmd + m_Len, 1, m_Len); m_RspLen = 4; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) { *Opened = ((m_Rsp[0] & 0x10) == 0x10); // смена открыта *Over24h = ((m_Rsp[1] & 0x2) == 0x2); // смена больше 24 ч. *DocOpened = ((m_Rsp[0] & 0x20) == 0x20); // документ открыт *Idle = ((m_Rsp[3] & 0x2) == 0x2); // принтер не отвечает *Idle = *Idle || (m_Rsp[1] & 0x1); // или блокирован *Idle = !*Idle; *OutOfPaper = ((m_Rsp[3] & 0x4) == 0x4); // бумаги нет if( *OutOfPaper & ((m_Rsp[0] & 0x40) == 0x40)) // команда зависла и бумаги нет *OutOfPaper = 2; else if ((m_Rsp[0] & 0x40) == 0x40) // бумага уже есть, а команда все еще висит *OutOfPaper = 3; } // статус ДЯ CashdrawerState(DrawerOpened, ErrorCode); return S_OK; }
static bool append_char(expr const & e, std::string & r) { if (auto c = to_char(e)) { r.push_back(*c); return true; } else { return false; } }
STDMETHODIMP CECR::PrintBarcode(BSTR FirmID, BYTE nPrintText, BSTR wszData, LONG* ErrorCode) { CW2A szData(wszData); m_ECRList.Win1251ToCP866(szData); BYTE nPrintBuffer[255]; DWORD dwBufferSize; dwBufferSize = 0; memset(nPrintBuffer, 0, 255); // позиционирование по центру nPrintBuffer[dwBufferSize++] = 0x1B; nPrintBuffer[dwBufferSize++] = 'a'; nPrintBuffer[dwBufferSize++] = 1; // высота штрих-кода nPrintBuffer[dwBufferSize++] = 0x1D; nPrintBuffer[dwBufferSize++] = 'h'; nPrintBuffer[dwBufferSize++] = 70; // ширина кода nPrintBuffer[dwBufferSize++] = 0x1D; nPrintBuffer[dwBufferSize++] = 'w'; nPrintBuffer[dwBufferSize++] = 2; // цифры nPrintBuffer[dwBufferSize++] = 0x1D; nPrintBuffer[dwBufferSize++] = 'H'; nPrintBuffer[dwBufferSize++] = 2; // штрих-код nPrintBuffer[dwBufferSize++] = 0x1D; nPrintBuffer[dwBufferSize++] = 'k'; nPrintBuffer[dwBufferSize++] = 0x43; nPrintBuffer[dwBufferSize++] = 0x0C; // данные memcpy(nPrintBuffer + dwBufferSize, szData, 12); dwBufferSize += 12; InitCmd(); // команда to_numeric(237, m_Cmd, 3, m_Len); //PRINTBARCODE // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // устройство to_numeric(0, m_Cmd + m_Len, 1, m_Len); // текст to_bchar((char *)nPrintBuffer, m_Cmd + m_Len, dwBufferSize, m_Len); CopyMemory(CommandBuffer[CommandBufferLen++], m_Cmd, m_Len); return S_OK; }
int main() { for (;;) { int k; scanf("%d ", &k); if (k == 0) break; char e[100],c[100]; gets(e); //printf("e: '%s'\n", e); int n = strlen(e); c[n] = '\0'; //printf("n: %d\n", n); int i; for (i=0; e[i] != '\0'; i++) { int j = (k*i)%n; int m = (k*j)%n; c[m] = to_char((to_number(e[j])+j)%28); } printf("%s\n", c); /* for (i=0; e[i] != '\0'; i++) { printf("%02d ", i); } printf("\n "); for (i=0; e[i] != '\0'; i++) { printf("%c ", e[i]); } printf("\n"); for (i=0; e[i] != '\0'; i++) { printf("%02d ", to_number(e[i])); } printf("\n"); for (i=0; e[i] != '\0'; i++) { int j = (k*i)%n; printf("%02d ", j); } printf("\n "); for (i=0; e[i] != '\0'; i++) { int j = (k*i)%n; printf("%c ", to_char((to_number(e[j])+j)%28)); } printf("\n"); for (i=0; e[i] != '\0'; i++) { int j = (k*((k*i)%n))%n; printf("%02d ", j); } printf("\n"); */ } return 0; }
std::string cql::cql_uuid_t::to_string() const { std::string result; result.reserve(36); size_t i = 0u; for (const cql_byte_t* it_data = _uuid; it_data != _uuid+_size; ++it_data, ++i) { const size_t hi = ((*it_data) >> 4) & 0x0F; result += to_char(hi); const size_t lo = (*it_data) & 0x0F; result += to_char(lo); if (i == 3 || i == 5 || i == 7 || i == 9) { result += '-'; } } return result; }
int main() { // auto tests int init_size = 3; Queue q; int input [] = {1, 2, 3}; q.enqueue(init_size, input); test(to_char(init_size) + " in queue", init_size, q.count()); q.dequeue(); test(to_char(init_size-1) + " in queue", init_size-1, q.count()); // manual input d7(); system("pause"); return 0; }
static int exponent(char* p0, int expo, int fmtch) { char* p, *t; char expbuf[MAXEXPDIG]; p = p0; *p++ = fmtch; if (expo < 0) { expo = -expo; *p++ = '-'; } else { *p++ = '+'; } t = expbuf + MAXEXPDIG; if (expo > 9) { do { *--t = to_char(expo % 10); } while ((expo /= 10) > 9); *--t = to_char(expo); for (; t < expbuf + MAXEXPDIG; *p++ = *t++) ; } else { /* * Exponents for decimal floating point conversions * (%[eEgG]) must be at least two characters long, * whereas exponents for hexadecimal conversions can * be only one character long. */ if (fmtch == 'e' || fmtch == 'E') { *p++ = '0'; } *p++ = to_char(expo); } return (p - p0); }
void Element::serialize_bson<Document> (std::ostringstream &oss) const { std::ostringstream data_ser; for (const std::pair<std::string, Element> &p : (* (std::static_pointer_cast<Document> (m_data))).m_data) { data_ser << to_char (p.second.m_type) << p.first << X00; p.second.encode (data_ser); } _to_stream (oss, static_cast<int> (5 + data_ser.tellp())); oss << data_ser.str() << X00; return; }
STDMETHODIMP CECR::GetDateShiftRange(BSTR FirmID, LONG Password, LONG* Year1, LONG* Month1, LONG* Day1, LONG* Year2, LONG* Month2, LONG* Day2, LONG* Shift1, LONG* Shift2, LONG* ErrorCode) { LONG Hour, Minute, Second; GetDateTime(FirmID, Year2, Month2, Day2, &Hour, &Minute, &Second, ErrorCode); *Year2 -= 2000; // получим дату закрытия первой смены InitCmd(); // команда to_numeric(109, m_Cmd, 3, m_Len); //GETСSHIFT // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // номер смены to_numeric(1, m_Cmd + m_Len, 4, m_Len); m_RspLen = 24; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) { *Day1 = from_numeric(m_Rsp + 4, 2); *Month1 = from_numeric(m_Rsp + 4 + 2, 2); *Year1 = from_numeric(m_Rsp + 4 + 4, 4) - 2000; } InitCmd(); // команда to_numeric(106, m_Cmd, 3, m_Len); //GETSHIFTNUM // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 4; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) { *Shift1 = 1; *Shift2 = from_numeric(m_Rsp, 4); } return S_OK; }
void Element::serialize_bson<array> (std::ostringstream &oss) const { int index = 0; std::ostringstream data_ser; for (const Element &e : * (std::static_pointer_cast<array> (m_data))) { data_ser << to_char (e.m_type) << std::to_string (index++) << X00; e.encode (data_ser); } _to_stream (oss, static_cast<int> (5 + data_ser.tellp())); oss << data_ser.str() << X00; return; }
// kw: this function was unused, // It's now used and changed to allow more. int BG_ClassTextToClass(char *str) { switch( tolower(str[0]) ) { case 's': case to_char(PC_SOLDIER): return PC_SOLDIER; case 'm': case to_char(PC_MEDIC): return PC_MEDIC; case 'e': case to_char(PC_ENGINEER): return PC_ENGINEER; case 'f': case 'l': //lieutenant // FIXME: remove from missionpack case to_char(PC_FIELDOPS): return PC_FIELDOPS; case 'c': case to_char(PC_COVERTOPS): return PC_COVERTOPS; default: return -1; } }
char* create_pretty_number_ll(const double value) { char* names[] = {"", "k", "M", "G", "T", "P", "E", "Z", "Y"}; char* pretty_number; size_t pretty_number_size; FILE* stream = open_memstream(&pretty_number, &pretty_number_size); long long int a = (long long) value; double b = value - a; int n = floor(log10(a)); for (size_t pos = n; pos >= n/3*3; --pos) { fprintf(stream, "%d", to_char(value, pos)); } fprintf(stream, "."); for (size_t pos = n/3*3-1; pos > n/3*3-2; --pos) { fprintf(stream, "%d", to_char(value, pos)); } fprintf(stream, " %s%s", names[n/3], "B"); fclose(stream); return pretty_number; }
STDMETHODIMP CECR::ContinuePrint(BSTR FirmID, LONG* ErrorCode) { ClearPrintBuffer(); InitCmd(); // команда to_numeric(405, m_Cmd, 3, m_Len); //REPEAT // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); return S_OK; }
void CLocalSetAdd::OnOK() { const int NOFIND=-1; UpdateData(); if ( ! (m_name.Find("'") == NOFIND && m_name.Find(";") == NOFIND && \ m_remark.Find("'") == NOFIND && m_remark.Find(";") == NOFIND && ! m_name.IsEmpty()) ) AfxMessageBox("输入的文字中不能含用单引号及分号等特殊字符"); strSql.Format("Insert into lsq_reside_local ( llocal,lname,lremark) values( \ (select Ltrim(to_char(NVL(max(llocal),0)+1,'009')) from lsq_reside_local),\ '%s','%s' ) ",m_name,m_remark); if( COtherDecharge::WriteSQL(strSql) )AfxMessageBox("新增成功"); else AfxMessageBox("新增失败..."); CDialog::OnOK(); }
VOID CECR::SetClisheOrFooterString(BSTR FirmID, BSTR String, LONG Row, LONG* ErrorCode, BYTE CmdNo) { if(Row > 10) { *ErrorCode = E_SUCCESS; return; } DWORD dwLen, dwSpaces; CHAR lzStringToPrint[MAX_STRING_LEN]; CW2A szString(String); m_ECRList.Win1251ToCP866(szString); ZeroMemory(lzStringToPrint, MAX_STRING_LEN); if (String) { dwLen = (DWORD) strlen(szString); if (dwLen < m_ECRList.GetStringLen()) { dwSpaces = (m_ECRList.GetStringLen() - dwLen) / 2; FillMemory(lzStringToPrint, dwSpaces, 0x20); CopyMemory(lzStringToPrint + dwSpaces, szString, dwLen); } else CopyMemory(lzStringToPrint, szString, m_ECRList.GetStringLen()); } InitCmd(); // команда to_numeric(CmdNo, m_Cmd, 3, m_Len); // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // номер строки to_numeric(Row, m_Cmd + m_Len, 2, m_Len); // высота строки to_numeric(1, m_Cmd + m_Len, 2, m_Len); // данные строки to_bchar(lzStringToPrint, m_Cmd + m_Len, strlen(lzStringToPrint), m_Len); m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if(*ErrorCode == 45) // если ФР блокирован, все равно вернем удачный код завершения, чтобы оболочка могла нормально загрузиться *ErrorCode = E_SUCCESS; }
STDMETHODIMP CECR::GetCashMoney(BSTR FirmID, LONG* ErrorCode, LONG* Money) { InitCmd(); // команда to_numeric(111, m_Cmd, 3, m_Len); //GETSUM // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // регистр to_numeric(23, m_Cmd + m_Len, 3, m_Len); m_RspLen = 16; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) *Money = from_money(m_Rsp, m_RspLen); return S_OK; }
STDMETHODIMP CECR::GetEKLZState(BSTR FirmID, BOOL* IsEKLZLow, LONG* ErrorCode) { *IsEKLZLow = FALSE; // статус ФР InitCmd(); // команда to_numeric(101, m_Cmd, 3, m_Len); //GETSTATUS // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // опрос принтера to_numeric(1, m_Cmd + m_Len, 1, m_Len); m_RspLen = 4; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) *IsEKLZLow = ((m_Rsp[1] & 0x20) == 0x20); return S_OK; }
STDMETHODIMP CECR::GetReceiptNumber(BSTR FirmID, LONG ReceiptType, LONG* ErrorCode, LONG* ReceiptNumber) { InitCmd(); // команда to_numeric(112, m_Cmd, 3, m_Len); //GETCOUNTER // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); // номер счетчика to_numeric(6, m_Cmd + m_Len, 2, m_Len); m_RspLen = 8; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); if (*ErrorCode == E_SUCCESS) *ReceiptNumber = from_numeric(m_Rsp, 8); return S_OK; }
STDMETHODIMP CECR::CancelReceipt(BSTR FirmID, LONG* ErrorCode) { InitCmd(); // команда to_numeric(216, m_Cmd, 3, m_Len); //ABORT // пароль to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); m_RspLen = 0; m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode); ClearPrintBuffer(); bDocOpened = FALSE; if (*ErrorCode == 34) *ErrorCode = E_SUCCESS; return S_OK; }
void print_ptr_rec(ptr x) { /*printf("%u\n", x);*/ if (is_fixnum(x)) { printf("%d", to_fixnum(x)); } else if (x == bool_f) { printf("#f"); } else if (x == bool_t) { printf("#t"); } else if (is_null(x)) { print_null(); } else if (is_char(x)) { printf("%s", beautify(to_char(x))); } else if (is_pair(x)) { printf("("); print_pair(x); printf(")"); } else { printf("#<unknown 0x%08x>", x); } }