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

Чтобы указать строковый символ, установите в поле Тип значение string. Поток данных Stateflow динамически выделяет пространство памяти для данных этого типа.
Кроме того, можно создать строковые данные с максимальным количеством символов. Задание символа строки с размером буфера n символы, установите в поле Type значение stringtype(. Текст строки может быть короче буфера, но если он превышает размер буфера, то текст в строке усекается. Например, если символ n)output в предыдущей диаграмме указан как stringtype(10), то его значение в состоянии On усечено до "All system". В зависимости от параметра конфигурации Проверка усечения строки можно остановить моделирование и диагностировать усечение данных строки.
| Проверка усечения строк | Описание |
|---|---|
error | Моделирование прекращается с ошибкой. |
warning | Строка усечена. Моделирование продолжается с предупреждением. |
none | Строка усечена. Моделирование продолжается без ошибок или предупреждений. |
Примечание
В отличие от C или C++, Stateflow интерпретирует escape-последовательности как литеральные символы. Например, строка "\n" содержит два символа, обратную косую черту и n, а не символ новой строки.
Чтобы управлять строковыми данными в диаграмме Stateflow, используйте операторы, перечисленные в этой таблице.
| Оператор | Синтаксис | Описание | Пример |
|---|---|---|---|
strcpy |
| Альтернативный способ выполнения | Назначить строковые данные strcpy(s1,'So long'); strcpy(s2,"Farewell"); strcpy(s3,s2); |
| Присваивает строку | Назначить строковые данные s4 = 'Auf Wiedersehen'; s5 = "Adieu"; s6 = s4; | |
strcat |
| Конкатенация строк | Конкатенация строк для формирования s1 = "State"; s2 = "flow"; dest = strcat(s1,s2); |
substr |
| Возвращает подстроку длины | Извлечь подстроку str = "Stateflow, rule the waves!";
dest = substr(str,0,9); |
tostring |
| Преобразует числовые, логические или перечисляемые данные в строку. | Преобразование числового значения в строку dest = tostring(1.2345); |
Преобразовать логическое значение в строку dest = tostring(1==1); | |||
Преобразовать перечисленное значение в строку dest = tostring(RED); | |||
strcmp |
| Сравнение строк
Строки считаются идентичными, если они имеют одинаковый размер и содержимое. Этот оператор согласуется с функцией библиотеки C | Возвращает значение, равное tf = strcmp("abc","abc"); |
Возвращает ненулевое значение (строки не равны). tf = strcmp("abc","abcd"); | |||
| Альтернативный способ выполнения | Возвращает значение, равное "abc" == "abc"; | |
| Альтернативный способ выполнения | Возвращает значение, равное "abc" != "abcd"; | |
| Прибыль 0 если первый n символы в s1 и s2 идентичны. | Возвращает значение, равное tf = strcmp("abc","abcd",3); | |
strlen |
| Возвращает число символов в строке str. | Возвращает значение, равное L = strlen("Stateflow"); |
str2double |
| Преобразует текст в строку
Если | Возвращает значение, равное X = str2double("-12.345"); |
Возвращает значение, равное X = str2double("1.234e5"); | |||
str2ascii |
| Возвращает массив типа | Вернуть A = str2ascii("Hello",5); |
ascii2str |
| Преобразование значений ASCII в массиве | Возвращаемая строка A[0] = 72; A[1] = 105; A[2] = 33; dest = ascii2str(A); |
Используйте строковые данные на следующих уровнях иерархии Stateflow:
Диаграмма
Поддиаграмма
Государство
Использовать строковые данные в качестве аргументов для:
Действия состояния
Условия и переходные действия
Графические функции
Функции Simulink ®
Функции таблицы истинности, использующие C в качестве языка действий
Если установлен Simulink Coder™, можно использовать строковые данные для моделирования и создания кода.
ascii2str | str2ascii | str2double | strcat | strcmp | strcpy | strlen | substr | tostring