Показано с 1 по 5 из 5

Тема: Строку в 2 DWORD

  1. #1
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    979

    По умолчанию Строку в 2 DWORD

    День добрый, форумчане!

    Столкнулся с такой простой, на первый взгляд, задачей. А, на второй, не смог решить.

    Касса мне возвращает номер фискального накопителя (ФН) в виде строки из 16 символов. Например, 9876543219876543.
    Для формирования QR-кода на индикаторе мне нужно передать этот номер на индикатор. Но индикатор принимает номер ФН в виде LWORD (2 DWORD).
    Соответственно, нужно преобразовать String[16] в LWORD или 2 DWORD.

    На CDS V3 это одна строчка STRING_TO_LWORD. Но 2-й кодесис не работает с LWORD.

    Попробовал следующий алгоритм:
    1. string_to_real
    2. результат пункта 1 делю на 2^32
    3. результат деления - это старший DWORD, остаток от деления - это младший DWORD.

    Но беда в том, что уже пункт 1 приводит к потери знаков в номере ФН, так как real в 32 бита имеет в мантисе 7 знаков, а остальное отбрасывается.

    Вообщем, кто знает как выполнить такое преобразование, если контроллер работает только с 32-х битными целыми?

  2. #2
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    979

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    чешское, светлое
    Куда высылать?

  3. #3
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    979

    По умолчанию

    Цитата Сообщение от saii Посмотреть сообщение
    А так не проще?

    Код:
    FUNCTION str_to_w64 : ARRAY[0..1] OF DWORD
    VAR_INPUT
    	str : STRING(16);
    END_VAR
    VAR
    	str1 : STRING(8);
    	str2 : STRING(8);
    END_VAR
    
    str_to_w64[0] := STRING_TO_DWORD(LEFT(str, len(str) - 8));
    str_to_w64[1] := STRING_TO_DWORD(RIGHT(str, 8));
    Так вы буквально 2 dwordа получаете, а нужно все же LWORD.
    Сравните, что дает функция Валенка и что ваша.

  4. #4

    По умолчанию

    Сравните, что дает функция Валенка и что ваша.
    А Вы пробовали сравнить?

    Так вы буквально 2 dwordа получаете, а нужно все же LWORD.
    А как Вы получите LWORD, если среда его не поддерживает?

    Сравните, что дает функция Валенка и что ваша.
    Не вижу принципиальных различий. Профиль функций одинаков. Только входящий STRING короче.

    P.S. Не нравиться не ешьте... Мое дело предложить - Ваше отказаться.

  5. #5

    По умолчанию

    Согласен, погорячился, был не прав... упустил некоторые мелочи

Похожие темы

  1. СПК и СП DWORD
    от Пьер в разделе СПК2хх
    Ответов: 1
    Последнее сообщение: 07.09.2020, 18:07
  2. Как добавить строку в EDITOR_MODE?
    от Sergeyi7 в разделе ПЛК63/73
    Ответов: 0
    Последнее сообщение: 03.09.2020, 15:19
  3. функция строку в массив
    от PavelGO в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 19.04.2017, 18:06
  4. DWORD + DWORD
    от Технос в разделе Панели оператора (HMI)
    Ответов: 19
    Последнее сообщение: 24.08.2016, 11:24
  5. Имя переменной в строку и обратно
    от Papagun78 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 03.09.2015, 16:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •