Управляйте текстовой информацией при помощи строк

Чтобы использовать текстовые данные для поведения диаграммы управления и управлять текстом, чтобы создать естественный язык выход, используйте строки. Данные о строке доступны только в графиках Stateflow®, которые используют C в качестве языка действия.

Пример данных о строке

В Stateflow string является частью текста, окруженного кавычками ("..." или '...'). Например, этот график берет данные о строке в качестве входа. На основе того входа график производит соответствующую строку выход.

Чтобы задать символ строки, установите его поле Type на string. Stateflow динамически выделяет пространство памяти для этого типа данных.

В качестве альтернативы можно создать данные о строке количество имеющее символов. Задавать символ строки с buffer size n символы, набор его поле Type к stringtype (n). Текст строки может быть короче, чем буфер, но если это превышает buffer size, затем текст в строке является усеченным. Например, если символ output в предыдущем графике задан как stringtype(10), затем его значение в On состояния является усеченным к "All system". В зависимости от параметра конфигурации String truncation checking можно остановить симуляцию и диагностировать усечение данных о строке.

Представьте проверку усечения в виде строкиОписание
errorСимуляция останавливается с ошибкой.
warningСтрока является усеченной. Симуляция продолжает предупреждение.
noneСтрока является усеченной. Симуляция не продолжает ошибки или предупреждения.

Примечание

В отличие от C или C++, Stateflow интерпретирует escape-последовательности как буквенные символы. Например, строка "\n" содержит два символа, обратную косую черту и n, и не символ новой строки.

Расчет со строками

Чтобы управлять данными о строке в диаграмме Stateflow, используйте операторы, перечисленные в этой таблице.

ОператорСинтаксисОписаниеПример
strcpy

dest = src

Присвоения представляют в виде строки src к dest.

Присвойте данные о строке s1 и s2.

s1 = 'hello';
s2 = "good bye";

strcpy(dest,src)

Альтернативный способ выполнить dest = src.

Присвойте данные о строке s3 и s4.

strcpy(s3,'howdy');
strcpy(s4,"so long");

strcat

dest = strcat(s1,...,sN)

Конкатенации строк s1,...,sN.

Конкатенация строк, чтобы сформировать "Stateflow".

s1 = "State";
s2 = "flow";
dest = strcat(s1,s2);

substr

dest = substr(str,i,n)

Возвращает подстроку длины n запуск в i- символ th строки str. Используйте основанную на нуле индексацию.

Извлеките подстроку "Stateflow" от более длинной строки.

str = "Stateflow rule the waves";
dest = substr(str,0,9);

tostring

dest = tostring(X)

Преобразует числовые, булевы, или перечисленные данные, чтобы представить в виде строки.

Преобразуйте числовое значение, чтобы представить в виде строки "1.2345".

dest = tostring(1.2345);

Преобразуйте булево значение, чтобы представить в виде строки "true".

dest = tostring(1==1);

Преобразуйте перечисляемое значение, чтобы представить в виде строки "RED".

dest = tostring(RED);

strcmp

tf = strcmp(s1,s2)

Выдерживает сравнение представляет в виде строки s1 и s2. Возвращает 0 если две строки идентичны. В противном случае возвращает ненулевое целое число.

  • Знак выходного значения зависит от лексикографического упорядоченного расположения входных строк s1 и s2.

  • Величина выходного значения зависит от компилятора, который вы используете. Это значение может отличаться по симуляции и сгенерированному коду.

Строки рассматриваются идентичными, когда у них есть тот же размер и содержимое.

Этот оператор сопоставим с библиотечной функцией C strcmp или C++ функционирует string.compare, В зависимости от компилятора, который вы выбираете для генерации кода. Оператор ведет себя по-другому, чем функциональный strcmp в MATLAB®.

Возвратите значение 0 (строки равны).

tf = strcmp("abc","abc");

Возвратите ненулевое значение (строки не равны).

tf = strcmp("abc","abcd");

s1 == s2

Альтернативный способ выполнить strcmp(s1,s2) == 0.

Возвратите значение true.

"abc" == "abc";

s1 != s2

Альтернативный способ выполнить strcmp(s1,s2) != 0.

Возвратите значение true.

"abc" != "abcd";

tf = strcmp(s1,s2,n)

Возвращает 0 если первый n символы в s1 и s2 идентичны.

Возвратите значение 0 (подстроки равны).

tf = strcmp("abc","abcd",3);

strlen

L = strlen(str)

Возвращает количество символов в строке str.

Возвратите значение 9.

L = strlen("Stateflow");

str2double

X = str2double(str)

Преобразует текст в строке str к значению с двойной точностью.

str содержит текст, который представляет номер. Текст, который представляет номер, может содержать:

  • Цифры

  • Десятичная точка

  • Ведущий + или - знак

  • e предшествование степени 10 масштабных коэффициентов

Если str2double не может преобразовать текст в номер, затем он возвращает NaN значение.

Возвратите значение -12.345.

X = str2double("-12.345");

Возвратите значение 123400.

X = str2double("1.234e5");

str2ascii

A = str2ascii(str,n)

Возвращает массив типа uint8 содержа значения ASCII для первого n символы в str, где n положительное целое число. Использование переменных или выражения для n не поддержан.

Возвратите uint8 массив {72,101,108,108,111}.

A = str2ascii("Hello",5);

ascii2str

dest = ascii2str(A)

Преобразует значения ASCII в массиве A из типа uint8 представлять в виде строки.

Возвращаемая строка "Hi!".

A[0] = 72;
A[1] = 105;
A[2] = 33;
dest = ascii2str(A);

Где использовать строки

Используйте данные о строке на этих уровнях иерархии Stateflow:

  • График

  • Подграфик

  • Состояние

Используйте данные о строке в качестве аргументов для:

  • Состояния активности

  • Условие и действия перехода

  • Графические функции

  • Функции Simulink®

  • Функции таблицы истинности, которые используют C в качестве языка действия

Если вам установили Simulink Coder™, можно использовать данные о строке в симуляции и генерации кода.

Смотрите также

| | | | | | | |

Похожие темы