Показано с 1 по 10 из 22

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    В лоб число в строку в десятичном виде совсем просто 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 в 18:02.

  2. #2

    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

  3. #3

    По умолчанию

    Здравствуйте.
    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    В лоб число в строку в десятичном виде совсем просто 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

  4. #4

    По умолчанию

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

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

    По умолчанию

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

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

  6. #6

    Thumbs up

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

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,170

    По умолчанию

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

    Функции из standart.lib
    LEFT
    RIGHT
    и два раза STRING_TO_DWORD

    Код:
    PROGRAM PLC_PRG
    VAR
    	strNumber: STRING(10);
    	loDWORD: DWORD;
    	hiDWORD: DWORD;
    END_VAR
    loDWORD:= STRING_TO_DWORD(RIGHT(strNumber, 5));
    hiDWORD:= STRING_TO_DWORD(LEFT(strNumber, 5));
    Последний раз редактировалось petera; 16.08.2019 в 20:38.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Ваши права

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