Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: преобразования

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    05.05.2007
    Адрес
    Барнаул->Москва
    Сообщений
    139

    По умолчанию преобразования

    здравствуйте.

    каким образом можно преобразовать число от функции Len (она отдает в десятичном формате) в шестнадцатиричный и затем это значение в виде символов( т.е. 48h - это '48') передать в стринг?
    у меня почему-то стринг пишется в десятичном формате тоже..... делал преобразование для получения Hex кода Ascii символов - такая же песня.

    если можно - примерчик для обоих случаев на St.

  2. #2

    По умолчанию

    Стандартные функции CoDeSys не дают возможности выводить строку в 16-ричном формате. Придется делать самому или поискать библиотечки на форумах - особенно в германии.

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

    По умолчанию

    понятно, владислав, а ссылочку дадите?

  4. #4

    По умолчанию

    Для начала http://www.prolog-plc.ru/
    Сам библиотеками не интересовался.

  5. #5

    По умолчанию

    В лоб число в строку в десятичном виде совсем просто str1 := INT_TO_STRING(x);

    В 16-ый формат так не получится. Я бы написал под это отдельную функцию для преобразования из байта в строку в 16-ом формате:

    FUNCTION Byte_to_hex_str : STRING
    VAR_INPUT
    byIn : BYTE;
    END_VAR
    VAR CONSTANT
    saHEX: ARRAY [0..15] OF STRING(1) := '0','1','2','3','4','5','6','7','8','9','A','B','C ','D','E','F';
    END_VAR

    Byte_to_hex_str := CONCAT(saHEX[SHR(byIn,4)],saHEX[byIn AND 16#0F]);


    Есть очень интересная бесплатная биб-ка для систем автоматизации зданий и не только, вкл. всякие полезные штуки. Надо зайти на сайт OSCAT (он на немецком), в верху в меню жмем oscat.lib 1.6 fur CoDeSys – закачать.
    Последний раз редактировалось Игорь Петров; 22.06.2007 в 19:02.

  6. #6

    Post

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    В лоб число в строку в десятичном виде совсем просто str1 := INT_TO_STRING(x);

    В 16-ый формат так не получится. Я бы написал под это отдельную функцию для преобразования из байта в строку в 16-ом формате:

    FUNCTION Byte_to_hex_str : STRING
    VAR_INPUT
    byIn : BYTE;
    END_VAR
    VAR CONSTANT
    saHEX: ARRAY [0..15] OF STRING(1) := '0','1','2','3','4','5','6','7','8','9','A','B','C ','D','E','F';
    END_VAR

    Byte_to_hex_str := CONCAT(saHEX[SHR(byIn,4)],saHEX[byIn AND 16#0F]);
    В строчке:
    saHEX: ARRAY [0..15] OF STRING(1) := '0','1','2','3','4','5','6','7','8','9','A','B','C ','D','E','F';
    ошибка, необходимо заменить на:
    saHEX: ARRAY [0..15] OF STRING := '0','1','2','3','4','5','6','7','8','9','A','B','C ','D','E','F';

    и + огромное СПАААСИИИБООО!!! ОЧЕНЬ помогло:-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  7. #7

    По умолчанию

    Здравствуйте.
    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    В лоб число в строку в десятичном виде совсем просто str1 := INT_TO_STRING(x);

    В 16-ый формат так не получится. Я бы написал под это отдельную функцию для преобразования из байта в строку в 16-ом формате:

    FUNCTION Byte_to_hex_str : STRING
    VAR_INPUT
    byIn : BYTE;
    END_VAR
    VAR CONSTANT
    saHEX: ARRAY [0..15] OF STRING(1) := '0','1','2','3','4','5','6','7','8','9','A','B','C ','D','E','F';
    END_VAR

    Byte_to_hex_str := CONCAT(saHEX[SHR(byIn,4)],saHEX[byIn AND 16#0F]);
    В строчке:
    saHEX: ARRAY [0..15] OF STRING(1) := '0','1','2','3','4','5','6','7','8','9','A','B','C ','D','E','F';

    Необходимо убрать лишний пробел заменить 'C ' на 'C'.
    Нашел и ткнул носом Цапзап.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  8. #8

    По умолчанию

    Совсем запутался. Задача такая, есть переменная STRING с номером абонента '9051458992', это значение нужно разбить пополам "90514" и "58992" в формате DWORD и отправить на панель Скады. Помогите пожалуйста

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    Цитата Сообщение от bort992 Посмотреть сообщение
    Совсем запутался. Задача такая, есть переменная STRING с номером абонента '9051458992', это значение нужно разбить пополам "90514" и "58992" в формате DWORD и отправить на панель Скады. Помогите пожалуйста
    а запутались то в чем, какие функции использовали
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    Thumbs up

    Petera, спасибо вам!!! А я искал в других библиотеках.
    Последний раз редактировалось bort992; 16.08.2019 в 21:00.

Страница 1 из 3 123 ПоследняяПоследняя

Ваши права

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