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

Чтобы задать строковый символ, установите его Type поле равным string. Stateflow динамически выделяет пространство памяти для этого типа данных.
Также можно создать строковые данные с максимальным количеством символов. Чтобы задать символ строки с buffer size n символов, установите его Type поле на stringtype . Текст строки может быть короче буфера, но если он превышает buffer size, то текст в строке обрезается. Для образца, если символ (n)output на предыдущем графике задано как stringtype(10), затем его значение в состоянии On обрезается до "All system". В зависимости от параметр конфигурации <reservedrangesplaceholder0> можно остановить симуляцию и диагностировать усечение строковых данных.
| Проверка усечения строк | Описание |
|---|---|
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