万博1manbetx字符串

当你想传递和处理文本使用多个应用程序的字符串。例如,造型燃料控制系统的时候,而不是使用列举数据,燃料水平的模型,你可以像使用字符串“低”要么“空”。万博1manbetxSimulink的®字符串与MATLAB兼容®字符串。

万博1manbetxSimulink的字符串是一个内置的信号数据类型。他们出现在Simulink编辑器万博1manbetx“海峡ñ(例如,字符串的最大长度ñ字符)或“串”表示没有最大长度(动态字符串字符串)。串长度的范围可以从1至32,766个字符。

万博1manbetxSimulink中串信号是离散。如果你的串信号具有连续采样时间,模型生成在编译时错误。

万博1manbetxSimulink的治疗字符串变量和表达式,如“A” +“B”,它把数值变量相同的方式。一个字符串变量的值既可以是一个字符向量和一个MATLAB字符串。字符串变量可以在库,模型和口罩工作空间存在。

字符串文字用双引号指定(“你好”)或单引号('你好')。为了与MATLAB字符串一致,使用双引号。字符串出现在港口,并在显示用双引号阻止。

万博1manbetxSimulin万博1manbetxk的字符串支持ISO / IEC 8859-1字符集的256个字符。这些字符都是Unicode的前256个代码点。万博1manbetxSimulink万博1manbetx的不支持的第一个字符炭(0)(“NULL”),并返回如果字符串包含此字符错误。

当一个字符不能被显示时,块存储的实际信息,并且输出与用于字符相关联的八进制值转义字符。例如,对于十进制值的控制字符BREAK许可HERE是130。块显示为八进制逃脱这个控制字符\ 202。该ASCII字符串来块返回作为以Unicode设定范围0000至001F和007F-009F转义八进制字符。

本主题介绍了如何使用字符串Simulink中,其中包括:万博1manbetx

  • 可串块和块特定的字符串转换的列表

  • 传递字符串常量到其他串块

  • 字符串中的空字符

  • 没有最大长度的字符串

  • 用Stateflow的相互作用®

  • 生成的代码

  • 限制

本主题还包括简单的例子说明如何使用字符串块。本主题中的例子启用区块名称的显示。为了控制块名称的显示,在格式选项卡,选中汽车>隐藏自动闭塞名。例如,你可以使用字符串块来显示和提取坐标数据,并在字符串中寻找模式。

要在模型字符串的工作,使用该表:

行动

转换UINT8矢量为字符串信号。

ASCII字符串来

构成基于所述输出信号串格式参数和输入信号。

撰写串

扫描输入字符串并将其转换成信号通过每规定的格式格式参数。

扫描字符串

比较两个输入串。

字符串比较

串联输入串,以形成一个输出字符串。

字符串拼接

输出字符串指定由参数。

字符串常量

返回图案字符串的第一个出现的索引文本字符串海峡

查找字符串

输出在输入字符串中的字符数。

字符串长度

将一个字符串转换信号到UINT8矢量。

字符串ASCII

将字符串转换信号的双信号。

字符串双

将字符串转换信号,单信号。

字符串单

转换输入字符串为一个枚举信号。

字符串枚举

从字符串中提取信号串。

子串

将输入信号转换为串信号。

为String

这些Simu万博1manbetxlink模块支持串。万博1manbetx

笔记

总线分配

非虚拟和虚拟化。

公交车造物主

非虚拟和虚拟化。

总线选择

非虚拟和虚拟化。

数据存储内存

-

数据存储读取

-

数据存储写

-

数据类型重复

-

显示

显示用双引号的字符串。

-

从工作区

不支持数据的插值。万博1manbetx

-

地面

地面值“”(空字符串)。

运行轨迹

包括root级别。

手动变水槽

-

手动变源

-

手动开关

没有混合的数字和字符串类型。如果有多个字符串,该块使用字符串的最大尺寸或动态串。

合并

-

模型

-

多端口交换机

没有混合的数字和字符串类型。如果有多个字符串,该块使用字符串的最大尺寸或动态串。

外港

包括root级别。

探测

-

信号编辑器

不支持数据的插值。万博1manbetx

信号规格

-

子系统(所有的变化)

-

开关

没有混合的数字和字符串类型。如果有多个字符串,该块使用字符串的最大尺寸或动态。

终止功能

-

终结者

-

变异源

-

派生模型

-

变体子系统

-

宽度

-

万博1manbetx字符串和Stateflow的

要使用文本数据来控制图的行为和处理文本,以创建Stateflow的自然语言输出,在C动作语言图表使用的字符串。Stateflow中为运营商提供操作字符串。欲了解更多信息,请参阅管理语篇信息通过使用字符串(Stateflow的)。

字符串常量

要指定字符串常量,使用字符串常量块。不要使用不变块,不接受字符串。在里面字符串常量块,用双引号,如输入字符串“你好!”在里面参数。这是一样的,在加上一个数字常数恒值参数常数块。

万博1manbetx字符串和NULL字符

万博1manbetxSimulink的字符串自动处理字符串的终止。在字符串的结尾不要使用空终止符。如果S万博1manbetximulink的检测字符串中的空字符的任何地方,它会产生一个错误。万博1manbetx仿真和代码生成过程中的Simulink把手字符串如下:

  • 在模拟过程中,该模型模拟。你不需要做别的事情。

  • 在C代码生成,该软件添加一个空终止字符串的结尾。例如,如果字符串缓冲区大小是10和真正的字符串值是“AB”于所生成的代码中的第三个字符是一个空终止。

字符串数据类型

必要时,串块创建和使用的字符串的数据类型,例如,当一个块输出一个字符串类型。你可以不指定字符的最大长度创建的字符串。我们把字符串没有字符作为动态字符串的最大长度。

要为块创建字符串数据类型支持字符串,您可以:万博1manbetx

  • 使用输出数据类型要么数据类型在参数信号属性一个Simulin万博1manbetxk模块的选项卡。

    • 要创建的字符没有最大长度的字符串数据类型,指定。此操作将创建一个动态的字符串。

    • 创建具有字符的最大长度,例如字符串数据类型100,输入stringtype(100)。您也可以使用stringtypeMATLAB命令行上函数来创建字符串数据类型。

  • 使用set_param与功能OutDataTypeStr参数,例如:

    set_param(GCB, 'OutDataTypeStr', 'stringtype(100)')

    该函数创建具有100个字符的最大长度的字符串数据类型的对象。串类型长度的范围可以从1至32,766个字符以下。

例如,使用字符串常量阻止创建带有一个字符串输出数据类型参数集stringtype(31)创建的字符串数据类型str31。图31是串可具有的最大字符数。

在总线对象的字符串

要配置总线对象的元素,以接受使用母线编辑器串,在数据类型总线元件的参数,输入字符串类型。例如,为了指定一个字符串数据类型的字符,其最大长度为10,输入stringtype(10)。该模式参数相应更新。指定与可变长度的动态信号,输入在这个领域里。您可以创建总线元件混合使用数字和字符串总线对象。有关使用母线编辑器创建总线对象和元素的详细信息,请参阅创建和指定Simulink.Bus对象万博1manbetx

字符串和生成的代码

考虑到这些笔记字符串和生成CC ++码。

仿真和生成的差异C代码动态字符串数据类型

在使用动态字符串数据类型块的模拟从产生不同C代码在这些方面:

  • 与信号数据类型有在仿真期间动态尺寸。换言之,一个字符串的大小可在0和32766之间变化。然而,在生成的C码,编码器存储字符串作为固定大小的图表阵列。因此,一个字符串的大小是由一个固定的缓冲器大小的限制产生于C码。该软件截短额外字符被截断,并且在端部插入一个空终止(例如,在输出字符串拼接块)。

  • 所述译码器产生的字符串不变量(参数或信号)作为C式的双引号字符串。

  • 用于字符串的数据类型的信号缺省缓冲区大小为256个字节(含有至多255个8位ASCII字符)。为了改变这一缓冲区大小,使用动态大小的字符串的缓冲区的大小(字节)(万博1manbetx编码器的Simulink)配置参数。

  • 要覆盖模型范围设置为一个单独的串信号,使用stringtype(ñ作为信号的数据类型。与此数据类型信号被分配的一个缓冲器ñ+1在生成的字节C代码(ñ字符加上一个空终止)。

  • 有模拟和产生的没有什么区别C ++当字符串存储为代码的std :: string具有相同的动态行为为模拟对象。

C ++代码生成字符串库

对于C ++代码生成,的std :: string库可用于与嵌入式编码™许可基于ERT-目标。欲了解更多信息,请参阅生成代码字符块通过使用标准的C ++字符串库(嵌入式编码)。

字符串数据类型转换

你不能使用数据类型转换块转换成字符串数据类型为其他数据类型,反之亦然。相反,使用这些字符串转换块。

转换

串信号到UINT8矢量信号,同时保留ASCII字符

字符串为ASCII

UINT8矢量信号到串信号

ASCII字符串来

串信号到数字信号的双倍数据类型

字符串双

串信号到数字信号单个数据类型

字符串单

串信号枚举信号数据类型

字符串要枚举

输入信号串信号

为String

字符串转换为ASCII和返回字符串

  1. 这些块添加到模型:

    • 字符串常量

    • 字符串ASCII

    • ASCII字符串来

    • 显示

  2. 连接块,如图所示。

  3. 在里面字符串常量块,输入一个字符串,如“你好!”

  4. 在里面字符串ASCII块,最大字符串大小更改为10。

  5. 模拟模型,观察的内容显示块。

    • Display1节目你好!转化成其对应的ASCII码。例如,72是ASCII等价的H33是ASCII等价的

    • Display1已经用零(空字符)填充剩余的空间为10的最大字符串长度。

    • 显示屏显示你好!之后ASCII字符串来块重新转换的ASCII码为字符串。

字符串转换为枚举数据类型

  1. 这些块添加到模型:

    • 字符串常量

    • 字符串枚举

    • 显示

  2. 连接块,如图所示。

  3. 在里面字符串常量块,输入一个字符串,如“你好!”

  4. 创建一个名为Sim万博1manbetxulink的枚举类BasicStrings并将其存储在文件名当前文件夹BasicStrings.m, 例如:

    classdef BasicStrings 
                    
  5. 在里面字符串枚举块,输入枚举类如枚举:BasicStrings

  6. 模拟模型,观察的内容显示块。

显示和提取坐标数据

这个例子展示了如何格式化和输出一组数据,使用地理坐标撰写串扫描字符串块。基于Cscanf函数的printf功能方面,撰写串扫描字符串块是在概念上类似的sprintfsscanf的功能,与主例外是那些功能与阵列,其中所述块不工作。有关字符串格式化块字符的更多信息,请参阅撰写串扫描字符串

撰写串块构建从多个字符串和数值输入组合的字符串。使用格式参数来格式化每个输入的输出,一个操作者的格式为每个输入。每种格式驾驶员提供一个百分号开始,%GydF4y2Ba,接着通过转换字符,例如,%F产生定点输出。为了补充串组输出,还可以额外的字符添加到格式规范出现在输出中。

  1. 这些块添加到模型:

    • 不变

    • 撰写串

    • 扫描字符串

    • 显示

  2. 更改不变块来示出的那些常量值和连接块。

  3. 在里面格式参数为撰写串块,输入这些格式规范:

    '%克°%G' '%F “N,%克°%G '' %F” W'
    • %G%F格式化运算符将数字输入浮点值。%G是一个更紧凑%F

    • 度符号(°),N,W,和是补充字符串在输出字符串显示量。

    撰写串块组合以输入顺序输出,格式化每个输入根据其格式操作,增加了额外的字符串,并输出该串,格式化为引导和由双引号所包围()。

  4. 在里面格式参数为扫描字符串块,输入这些格式规范:

    '%克°%G' '%F “N,%克°%G '' %F” W'
    • %G%F格式化运算符将数字输入浮点值。%G是一个更紧凑%F

    • 度符号(°),N,W,和是补充字符串在输出字符串显示量。

    扫描字符串块读取其输入,转换根据由转换规格指定的格式,然后返回结果作为标量。块根据其转换规范格式化的每个输出。它之前或转换符后立即忽略指定的文本。

查找字符串中的模式

要查找的字符串的模式,使用查找字符串块。

  1. 这些块添加到模型:

    • 字符串常量

    • 查找字符串

    • 显示

  2. 连接块,如图所示。

  3. 在第一字符串常量块,输入一个字符串,如“你好再见!”

    连接这个块的海峡输入端口查找字符串块使查找字符串块来寻找这个字符串的模式。

  4. 在第二字符串常量块,输入的字符串(或图案)在第一至寻找字符串常量字符串,如“再见!”

    连接这个块的块装置的输入端口,所述查找字符串看起来从这种模式海峡输入。

  5. 模拟模型,观察的内容显示块。对于此示例,该块显示7,这是字母的位置G

提取字符串

为了从源字符串的字符串,使用子串块。此示例使用中所描述的模型查找字符串中的模式

  1. 添加子串块到模型中。

  2. 在里面子串块,选择输出字符串从“IDX”到端参数。设置该参数提取从在IDX端口到字符串的末尾位置的输入的字符串。

  3. 连接新的块,如图所示。

  4. 模拟模型,观察的内容显示块。对于此示例,该块显示“再见!”,这是子串的起始提取IDX到字符串的结尾。

获取文本继关键字

此示例示出了使用的Simulink串块基本的字符串操作。万博1manbetx

对于一个模型,如下所示,模拟它。

观察该模型:

  • 创建两个字符串,“开始的中端”“中间”使用字符串常量块。

  • 查找第一次出现“中间”IDX),并增加第一个字母的位置(11)至长度“中间”7)。它使用查找字符串字符串长度块。

  • 从提取物“开始的中端”从年底开始的子“中间”IDX +串长度= 18),其是字符串“结束”。它使用子串块。

  • 比较的计算值“结束”与实际的字符串“结束”,它返回布尔值“1”。它使用字符串常量字符串比较块。

  • 布尔值转换“1”对应的字符串,“真正”。它使用为String块。

要看到整个模型的人物的位置,添加一个显示块每对的所述输出查找字符串字符串长度块和模拟。

改变现有的模式来使用字符串

除了在新车型使用字符串,您可以更新现有的模型使用字符串。使用字符串可以简化模型,使之更容易理解。

例如,在老款车型,你可能使用枚举数据类型来表示或模型传递文本。该sldemo_fuelsys例如列举在多个领域常量来工作,文本数据。

sldemo_fuelsys / fuel_rate_control / airflow_calc中,状态流图表的用途列举数据,以指示燃料的水平。

sldemo_fuelsys / fuel_rate_control / airflow_calc,以检测如果燃料是低的,该模型使用枚举常关系运算符块。

相反,你可以使用字符串常量字符串比较阻挡由设置:

  • 字符串常量参数

  • 使用字符串比较块来检测是否从模型的另一部分的到来。

而不是删除枚举常量的所有实例,您可以与枚举常量一起使用字符串。这样做可以让你的模型逐步迁移到使用字符串。在sldemo_fuelsys / fuel_rate_control / fuel_calc / feedforward_fuel_rate中,多端口交换机块接受四个明确数据输入。

如果fuel_mode端口输出字符串,可以说字符串转换为一个枚举数据类型的工作从输出不变块在这个模型中。

解析NMEA GPS短信

这个例子显示了如何解析使用的Simulink串块NMEA GPS格式的文本消息。万博1manbetx

概观

这个模型显示了如何使用由提供的Simulink字符串数据类型和块来读取输入的文本消息和提取数字和文本数据。万博1manbetx

阅读邮件标题,并转换为枚举

万博1manbetx的Simulink提供了字符串至枚举块将字符串转换成相应的枚举值。在此模型中,头字符串“元”被转换成NMEASentence.RMB。

使用扫描字符串块解析文本消息

解析文本消息的一种方法是使用扫描字符串块。它的工作原理类似于C和MATLAB®sscanf函数。

固定字段宽度解析文本消息

当文本消息具有固定的宽度,每个数据字段,提供的Simulink块分割由索引的字符串。万博1manbetx字符串被拆后,每场可以分开处理。

万博1manbetx字符串限制

这些功能目前不支持:万博1manbetx

类别 限制说明 解决方法

String数组

字符串数组不被支持。万博1manbetx

使用字符串只能作为标量。

Unicode字符

万博1manbetxSimulink的字符串不支万博1manbetx持整个Unicode集。

万博1manbetxSimulin万博1manbetxk的字符串支持ISO / IEC 8859-1字符集(基本拉丁语和拉丁语1补充)的256个字符。这些字符都是Unicode的前256个代码点。

MATLAB系统MATLAB S-功能,Stateflow的MATLAB图表

这些块创建的自定义模块不支持字符串。万博1manbetx

-

不变初始条件

这些块不处理字符串。

采用字符串常量块。

交换机,多端口交换机的控制输入,开关情况,并且如果块

的控制输入端开关块不接受字符串。

使用这些块的数据输入。

万博1manbetxSimulink.Signal万博1manbetxSimulink.Parameter

万博1manbetxSimulink.Signal万博1manbetxSimulink.Parameter块不支持字符串。万博1manbetx

-

数据类型转换

不要使用数据类型转换块转换为或字符串。

使用字符串转换块

包含字符串元素非虚总线记录

如果非虚拟总线包含一个字符串元件,整个虚拟总线不能被记录。你仍然可以登录的非字符串元素。

为了工作区

使用Load串为了工作区

登录使用输出端口。

到文件

使用Load串到文件

-

范围频谱分析仪块,逻辑分析仪的应用

范围频谱分析仪块和逻辑分析仪应用程序不显示字符串。

使用显示中,仿真数据检查, 或者序列浏览器在Stateflow中。

S-功能

S-功能不支持字符串数据类型。万博1manbetx

-

万博1manbetxSimulink的实时™

通过应用程序创建万博1manbetxSimulink的实时使用C ++作为目标语言错误的。

使用C作为目标语言。

也可以看看

|||||||||||||

相关话题