Чтобы использовать текстовые данные для управления поведением диаграммы и для манипулирования текстом для создания выхода на естественном языке, используйте строки. Строковые данные доступны только в 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