Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Как получить ASCII-код символа в Codesys?

  1. #1

    Question Как получить ASCII-код символа в Codesys?

    Мне нужно получить байтовый код символа в Codesys (на языке ST). Как это сделать?
    Например, в C++ все довольно просто:
    int c = 'h';
    А в Codesys как?
    т.е. есть строка:
    sTmp: STRING(10) := '12345678';
    мне нужно получить 5-й символ:
    IF sTmp[4] = 5 THEN .... - ошибка!

  2. #2

    По умолчанию

    FUNCTION CODE : BYTE
    VAR_INPUT
    STR : STRING(STRING_LENGTH); (*Строка*)
    POS : INT; (*Позиция*)
    END_VAR
    VAR
    PT : POINTER TO BYTE;
    END_VAR

    IF pos < 1 OR pos > LEN(str) THEN
    CODE := 0;
    RETURN;
    ELSE
    PT := ADR(STR) + INT_TO_DWORD(pos - 1);
    CODE := pt^;
    END_IF;
    Почитайте про библиотеку Oscat

  3. #3

    По умолчанию

    Цитата Сообщение от Николай Суриков Посмотреть сообщение
    Почитайте про библиотеку Oscat
    Ругается, что не определено STRING_LENGTH

  4. #4

    По умолчанию

    VAR_GLOBAL CONSTANT
    STRING_LENGTH : INT := 250;
    END_VAR

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

    По умолчанию

    В библиотеках оскат есть функция code, она возвращает код символа.

    Но можно просто навести указатель на нужный байт.

  6. #6

    По умолчанию

    Спасибо, получилось!

  7. #7

    Question как скопировать одну строку в другую по символьно?

    Еще вопрос по работе со строками.
    Код:
    s1 : STRING := "12345678';
    s2 : STRING := '';
    x : INT;
    
    FOR x := 0 TO LEN( s1 ) DO
      ...
      s2 := CONCAT( s2, s1[x] );
    END_FOR
    по идее на выходе s2 должна быть копией s1, но там коды символов вместо самих символов.
    я так понимаю, что s1[x] нужно перевести в строку?
    как исправить?

  8. #8

    По умолчанию

    а чем
    Код:
    s2 := s1;
    не нравится?

  9. #9
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,059

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Еще вопрос по работе со строками.
    Код:
    s1 : STRING := "12345678';
    s2 : STRING := '';
    x : INT;
    
    FOR x := 0 TO LEN( s1 ) DO
      ...
      s2 := CONCAT( s2, s1[x] );
    END_FOR
    по идее на выходе s2 должна быть копией s1, но там коды символов вместо самих символов.
    я так понимаю, что s1[x] нужно перевести в строку?
    как исправить?
    Какую именно задачу вы пытаетесь решить и какой у вас контроллер?

  10. #10

    По умолчанию

    Цитата Сообщение от saii Посмотреть сообщение
    а чем
    Код:
    s2 := s1;
    не нравится?
    не нравится тем, что это цикл парсинга строки! И я привел проблемный фрагмент, остальное заменив многоточием

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

Похожие темы

  1. Свойства символа
    от Александр N в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 05.07.2019, 13:22
  2. Получить данные
    от Дмитрий2840 в разделе Другие SCADA системы
    Ответов: 6
    Последнее сообщение: 21.05.2019, 12:00
  3. Добавление символа на мнемосхему
    от ALEXSP в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 26.11.2015, 08:43
  4. Из ASCII
    от Scream в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 18.05.2013, 10:32
  5. Тиражирование объекта и символа
    от VinSS в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 18.01.2013, 09:56

Ваши права

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