主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

金宝appの字符串

複数のアプリケーションでテキストを渡して操作する場合は字符串を使用します。たとえば,燃料制御システムをモデル化するときは、燃料レベルを列挙型データを使用してモデル化する代わりに、“低的”“空”のような字符串をを使ます.simulin金宝appk®の字符串はmatlab®の字符串と互換性があります。

金宝appSimulinkの字符串は组み込み组み込み信号データ型です.simulinkエディターには,“strn”(最大长がn文件串)の“字符串”(最大长がない动的な字符串)のように表示さます.Stringの长さのはは1〜32,766文库です。

金宝appsimulinkの字符串信号は本质的に离散です.string信号のサンプル时间が连続である料,モデルのコンパイル时にが生成されます。

金宝appsimulinkでは,字符串のの数や式(“a”+“b”など)を数码数量と同じようますます.string変数の値,文章ベクトルとmatlab字符串のどちらにするもできます.string次数は,ベースワークスペース,モデルワークスペース,およびマスクワークスペースでできでき。

字符串リテラルは,二重引用符(“你好”)または一击用符(“你好”)で囲んで指定します。MATLABの字符串と一致させるには、二重引用符を使用します。string は端子や显示ブロックに二重引用符で囲んで表示されます。

金宝app仿真软件の字符串では,ISO / IEC 8859 - 1文字セットの256文字がサポートされます。これらの文字はUnicodeの最初の256のコードポイントです。金宝app仿真软件では,最初の文字Char(0)(“空”)はサポートされず,この文字が字符串に含まれているとエラーを返します。

文字を表示できない場合,ブロックは実際の情報を格納し,エスケープ文字を付けてその文字に関連付けられた8進数値を出力します。たとえば,这里允许的休息の10次数の制御文档は130です。ブロックでは,この制御文库をエスケープれた8次数の202年\として表示します。ASCII字符串ブロックでは,Unicodeセットの0000 ~ 001 fおよび007 ~ 009 fの範囲のエスケープされた8進数の文字として返します。

このトピックでは,金宝app仿真软件で字符串を使用する方法について説明します。以下の内容が含まれます。

  • 使用可能な字符串ブロックと字符串変換に固有のブロックの一覧

  • 定字符串数を他の字符串ブロックに渡す

  • 字符串内のnull文明

  • 最大長がない字符串

  • Stateflow®との作用

  • 生成コード

  • 制限

このトピックには,弦ブロックの使用方法を示す簡単な例も含まれています。このトピックの例では,ブロック名の表示を有効にします。ブロック名の表示を制御するには,[書式設定]タブで[自動](自動ブロック名の非表示)を選択します。たとえば,string ブロックを使用して、座標データを表示および抽出したり、string 内でパターンを検出したりできます。

モデルで弦弦の操はは,次の表を参照して。

アクション ブロック

uint8ベクトルを字符串信号にします。

ASCII字符串

格式パラメーターと入力信号に基づいて出弦力信号を構成します。

组成字符串

入力串ををスキャン,格式パラメーターで指定された形式によって信号に変換します。

扫描字符串

2つのつの力串ををします。

字符串比较

複数の入力字符串を連結して1つの出力字符串を形成します。

字符串连接

细绳パラメーターで指定された字符串を出力します。

字符串常量

テキスト文字列str中で最初に出現するパターン字符串のインデックスを返します。

字符串中找到

入力字符串の文字数を出力します。

字符串长度

字符串信号をuint8ベクトルに変換します。

字符串到ASCII.

字符串信号を双信号に変換します。

字符串双

字符串信号を单信号に変換します。

字符串单

入力字符串を列挙型信号に変換します。

字符串枚举

字符串信号から部分文字列を抽出します。

划线

入力信号を字符串信号に変換します。

字符串

字符串は仿真软件の金宝app次のブロックでサポートされます。

ブロック メモ

总线分配

非バーチャルとバーチャル。

总线的创造者

非バーチャルとバーチャル。

总线选择器

非バーチャルとバーチャル。

数据存储内存

-

数据存储阅读

-

数据存储写

-

数据类型重复

-

显示

字符串をを二重重引引で囲ん囲んで表示し

-

来自工作区

データの内挿はサポートされません。

转到

-

地面

グラウンド値は(空の字符串)です。

轮廓尺寸

ルートレベルを含みます。

手动变体水槽

-

手动变异来源

-

手动开关

数量型弦弦型型现出者在ははれません.stringががあるある合,ブロックではサイズ最大大串串か动的な弦串ををます。

Matlab功能

-

合并

-

模型

-

多端口切换

数量型弦弦型型现出者在ははれません.stringががあるある合,ブロックではサイズ最大大串串か动的な弦串ををます。

外港

ルートレベルを含みます。

探针

-

信号编辑器

データの内挿はサポートされません。

信号规范

-

子系统(すべてのバリエーション)

-

开关

数量型弦弦型型现出者在ははれません.stringががあるある合,ブロックではサイズ最大大串串か动的な弦串ををます。

终止功能

-

《终结者》

-

变异来源

-

变体模型

-

变体子系统

-

宽度

-

金宝app字符串とStateflow

テキストデータを使用ししの动作提供します。详细については,字符串をを用ししテキストテキスト情情料(州流)を参照してください。

定字符串数

字符串定数を指定するににはは,字符串常量ブロックブロック使使。常数ブロックは字符串を受け入れないので使用しないでください。字符串常量ブロックで,“你好!”のように,文字列を二重引用符で囲んで[文字列]パラメーターに入力します。これは,常数ブロックの[定数値]パラメーターで数码分数を追するするのとです。

金宝appの字符串と零文字

金宝app仿真软件の字符串については,弦の終端が自動的に処理されます。字符串の末尾に零終端子は使用しないでください。金宝app仿真软件では,字符串内に零文字が含まれていることを検出するとエラーを生成します。金宝app仿真软件でのシミュレーションとコード生成の実行時,字符串は次のように処理されます。

  • シミュレーション時は,モデルのシミュレーションが実行されます。ほかに必要な処理はありません。

  • Cコードの生成時は,ソフトウェアによって字符串の末尾に零終端子が追加されます。たとえば,弦のバッファーサイズが10で実際の字符串の値が“ab”であれば,生成コードの3番目の文字が零終端子になります。

字符串データ型

字符串ブロックでは,たとえば字符串型を出力するするなど,必要に応じて字符串データ型を応じててます。ますしingはももない指定しなくても。最大文なくないない串のことない动词的な字符串とと呼び。

字符串ををサポートするブロックで,次次方法で字符串データ型をを作物成でき。

  • 金宝app仿真软件ブロックの[信号属性]タブにある[出力データ]パラメーターまたは[データ型)パラメーターパラメーター使使。

    • 最大文字数を指定せずに字符串データ型を作成するには,字符串を指定します。これにより,動的な文字列が作成されます。

    • 最大文字数を指定して字符串データ型を作成するには,たとえばOne hundred.であればstringtype (100)のようにに力し.stringデータ型はmatlabコマンドラインで关联stringtype.を使用して作成することもできます。

  • 关节set_param.を使用してOutDataTypeStrパラメーターを指定します。次に例を示します。

    set_param (gcb, OutDataTypeStr”、“stringtype(100)”)

    最大长が100文章のののののののます型ののですですですですですですですですですですですですはははははstrはははははははれstrstrstrstrstrstrstrstrstrstrれstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstr字ははははははstrstrstrstrstrstrstrstrstrstrstrstrれstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstrstr字字strstrstr

たとえば,字符串常量ブロックで[出力データ]パラメーターをstringtype (31)に設定して字符串を作成すると,str31の字符串データ型が作用成さますます.31はこの弦この许容される最大文字数号。

バスオブジェクトの字符串

バスエディターを使用して字符串を受け入れるようバスオブジェクトの要素を構成するには,バス要素の[データ型)パラメーターで,字符串型を入力します。たとえば,最大文字数が 10 文字の string データ型を指定するには、stringtype (10)とと力します。それに合わせて[モード]パラメーターが更新されます。可変長の動的な信号を指定するには,このフィールドに字符串バスをにととと要素数码串ののバスオブジェクトのののわせ作作作作者用所在成作作任作作作者のエディターバスオブジェクトとの作物金宝appsimulink.busオブジェクトの作用成と指定を参照してください。

字符串と生成コード

字符串および生成されたCコードとC ++コードについては,次の注意事項を検討します。

动词な弦データデータにに关键词と生成されたCコードの違い

動的な字符串データ型を使用するブロックのシミュレーションは,生成されたCコードと次のように異なります。

  • シミュレーション中の字符串データ型をもつ信号のサイズは動的です。言い換えると,弦のサイズは0 ~ 32766の間で変化する可能性があります。ただし,生成されたCコードでは,弦は固定サイズのchar_T配列として保存されます。したがって,生成されたCコードでは,弦のサイズは固定バッファーサイズにより制限されます。追加の文字はソフトウェアによって切り詰められ,最後(たとえば,字符串连接ブロックの出力時)に零終端子が挿入されます。

  • 字符串の不変要素(パラメーターまたは信号)がCスタイルスタイル二重引用符で囲まれ弦串として生成され。

  • 字符串データ型をもつ信号の既定のバッファーサイズは256バイト(最大255の8ビットASCII文字)です。バッファーサイズを変更するには,動的サイズ文字列のバッファーサイズ(バイト)(金宝app仿真软件编码器)コンフィギュレーションパラメーターを使用します。

  • 各字符串信号のモデル全体の設定をオーバーライドするには,stringtype (N)を信号のデータ型として使用します。このデータ型をもつ信号には,生成されたCコードのN + 1バイトのバッファーが割り当てられますます(n文字に1つのの子を追加)。

  • シミュレーションと动的动作がstd :: string.オブジェクトとして字符串が保存される場合,シミュレーションと生成されたC ++コードの間に違いはありません。

C ++コードの生成字符串ライブラリ

C ++コード生成には、嵌入式编码器™のライセンスをもつERTベースのターゲット用にstd :: string.ライブラリが提供されています。詳細については,使用标准c++字符串库生成字符串块代码(嵌入式编码)を参照してください。

字符串データ型の変換

字符串データ型と他のデータ型の間の変換は,数据类型转换代わりに,次,次のでき列変换ます。

変換 ブロック

字符串信号をascii文章を保持てuint8ベクトル信号に

字符串到ASCII.

UINT8ベクトル信号を字符串信号に

ASCII字符串

字符串信号を数码信号双重データデータ型

字符串双

字符串信号を数値信号单データ型に

字符串单

字符串信号を列挙型信号データ型に

字符串枚举

入力信号を字符串信号に

字符串

字符串をasciiに変换しから串に戻す

  1. 次のブロックをモデルに追加します。

    • 字符串常量

    • 字符串到ASCII.

    • ASCII字符串

    • 2つの显示ブロック

  2. ブロックを次のように接続します。

  3. 字符串常量ブロックブロック,字符串として“你好!”とと力します。

  4. 字符串到ASCII.ブロックで,弦の最大サイズを10に変更します。

  5. モデルをシミュレートし,显示ブロックの内容を確認します。

    • Display1に,対応するASCIIに変換された你好!たとえば値値が表示されれたとえば,72Hに対応するasciiのの値,33!!に対応するASCIIの値です。

    • Display1で,字符串の最大长である10までの残りのスペースが0(null文件)ででられます。

    • 显示に,ASCII字符串ブロックでasciiコードから字符串に再変换された后の你好!が表示されます。

字符串をを列挙データ型型に変换

  1. 次のブロックをモデルに追加します。

    • 字符串常量

    • 字符串枚举

    • 显示

  2. ブロックを次のように接続します。

  3. 字符串常量ブロックで,“你好!”などの弦をを力し。

  4. 次のように,基本串という名前のs金宝appimulink列挙型クラスクラスを作物BasicStrings.mというファイル名で现处于のフォルダーに保存し。

    < Simulink. classdef Bas金宝appicStringsIntEnumType枚举Hello(0) Red(1) Blue(2) end结束
  5. 字符串枚举ブロックで,列挙型クラスを枚举:BasicStringsとと力します。

  6. モデルをシミュレートし,显示ブロックの内容を確認します。

座标データの表示と抽出

この例では,组成字符串ブロックと扫描字符串ブロックを使用して,一連のデータを地理座標として書式設定して出力する方法を示します。组成字符串ブロックと扫描字符串ブロックはCの関数のscanfprintfに基づいており,概念的には関数Sprintf.と関数sscanfに似ています。主な違いは,それらの関数では配列を操作するのに対し,これらのブロックでは配列を操作しないことです。字符串ブロックの書式設定済み文字の詳細については,组成字符串および扫描字符串を参照してください。

组成字符串ブロックは,複数の串入力と数値入力の組み合わせから字符串を構成します。[形式]パラメーターを使用して,入力ごとの出力を書式設定します。入力ごとに書式演算子が1つ対応します。各書式演算子はパーセント記号%GydF4y2Baで始まり,その后に変换文章が続きます。たとえば%Fは固定小数点出力を生成します。字符串出力の補足として、出力に表示する追加の文字を書式仕様に加えることもできます。

  1. 次のブロックをモデルに追加します。

    • 6つの常数

    • 1つの组成字符串

    • 1つの扫描字符串

    • 7つの显示

  2. 常数ブロックの定数値を次のように変更してブロックを接続します。

  3. 组成字符串ブロックの[書式設定]パラメーターで,书记仕様を次のにに力します。

    '%g°%g''%f“n,%g°%g''%f”w'
    • 書式演算子の%G%Fは,数码变力を浮に点値に変换しししししししししししししししししししし%G%Fをコンパクトにしたですです。

    • 度記号(°),N, W,および'は,出力字符串に表示する補足文字列です。

    组成字符串ブロックは,出力を入力順に結合し,各入力を書式演算子に基づいて書式設定し,補足文字列を追加して,字符串を出力します。字符串は指定どおり書式設定されるとともに二重引用符()ででれます。

  4. 扫描字符串ブロックの[書式設定]パラメーターで,书记仕様を次のにに力します。

    '%g°%g''%f“n,%g°%g''%f”w'
    • 書式演算子の%G%Fは,数码变力を浮に点値に変换しししししししししししししししししししし%G%Fをコンパクトにしたですです。

    • 度記号(°),N, W,および'は,出力字符串に表示する補足文字列です。

    扫描字符串ブロックは,入力を読み取り,変換仕様で指定された書式に従って変換して,その結果をスカラーとして返します。このブロックは,各出力を変換仕様に従って書式設定します。変換指定子の直前または直後にある指定テキストは無視されます。

字符串内内のパターンのの

字符串内でパターンを検出するには,字符串中找到ブロックブロック使使。

  1. 次のブロックをモデルに追加します。

    • 2つの字符串常量

    • 字符串中找到

    • 1つの显示

  2. ブロックを次のように接続します。

  3. 1つ目の字符串常量ブロックで,“喂!再见!”などの弦をを力し。

    このブロックを字符串中找到ブロックのstr入力端子に接続すると,この字符串内から字符串中找到ブロックでパターンが検索されます。

  4. 2つ目の字符串常量ブロックで,“再见!”など,最初の字符串常量の字符串内から検索する字符串(またはパターン)を入力します。

    このブロックを字符串中找到ブロックの入力端子に接続すると,このパターンがstrの入力から検索されます。

  5. モデルをシミュレートし,显示ブロックブロックの内容を确认しします例でで,ブロックに文库Gの位置である7.が表示されます。

字符串の抽出

ソース字符串から字符串を抽出するには,划线ブロックブロック使使ます。このこの例で,字符串内内のパターンのので説明したモデルを使用します。

  1. 划线ブロックをモデルに加加します。

  2. 划线ブロックで,[' idx 'から末尾までの字符串を出力)パラメーターを選択します。このパラメーターを設定すると,idx端子の入力の位置から字符串の末尾までの字符串が抽出されます。

  3. 新しいブロックを次のよう接続接続します。

  4. モデルをシミュレートし,显示ブロックブロックの内容を确认ししこの例では,idxから字符串のの末尾までを抽出した部字列列“再见!”が表示されます。

キーワードの後に続くテキストの取得

この例では,金宝app仿真软件の字符串ブロックを使用した基本的な字符串の操作を示します。

次のようなモデルをシミュレートします。

このこのモデルについて以ををしししし

  • 字符串常量ブロックを使用して,“开头中间结尾”“中间”という2つつ弦を作物成します。

  • 最初に出现する“中间”を探し(idx),最初の文字の位置(11)を“中间”の長さに加えます(7.)。これには字符串中找到ブロックと字符串长度ブロックブロック使使。

  • “开头中间结尾”から,“中间”の末尾以降の部分文字列(idx +字符串长度= 18)である字符串“结束”を抽出します。これには划线ブロックブロック使使。

  • “结束”の計算された値を実際の字符串“结束”ととししこのこの戻り値はブールブール“1”にになり。これこれに字符串常量ブロックと字符串比较ブロックブロック使使。

  • ブール値“1”を対応する字符串の“真正的”に変換します。これには字符串ブロックブロック使使。

モデル全体で文字の位置を表示するには,字符串中找到ブロックと字符串长度ブロックのの力のそれぞれに显示ブロックを1つずつ追加して,シミュレーションを実行します。

字符串を使用するための既存モデルの変更

新闻ので弦弦でをのにに加入,既存のモデルを更新闻て弦て使使でき.stringを使使する,モデルが素なりするれ,理论。

たとえば,古いモデルでは,列挙データ型型使し,モデルででをたり,モデル渡したりするする表したりましましましましsldemo_fuelsysの例では,复数の领域に定をしてテキストとと操ましたた。

sldemo_fuelsys / fuel_rate_control / control_logicでは,州流チャートは列挙型データ使使しし燃料レベルを示し示します示し示し示し

sldemo_fuelsys / fuel_rate_control / airflow_calcでは,燃料が少ないかどうか検出するには,モデルで枚举常数ブロックと关系操作符ブロックブロック使使。

ただし,次を設定して,字符串常量ブロックおよび字符串比较ブロックを使用できます。

  • 字符串常量[文字列]パラメーターをに設定する。

  • 字符串比较ブロックを使用して,がモデルの別の部分からのものかどうかを検出する。

列挙型の定数のすべてのインスタンスを削除するのではなく,列挙型の定数と一緒に字符串を使用できます。この方法では,弦を使用するようモデルを徐々に移行できます。sldemo_fuelsys / fuel_rate_control / fuel_calc / feedforward_fuel_rateでは,多端口切换ブロックは4つの列挙型データ入力を受け入れます。

(fuel_mode)端子が字符串を出力している場合,その字符串を列挙データ型に変換して,このモデル内の常数ブロックから出力を使用できます。

n mea GPSテキストメッセージの解析

この例では,金宝app仿真软件®字符串ブロックを使用してn mea GPS形式のテキストメッセージを解析する方法を説明します。

概要

このモデルは,金宝app仿真软件®で提供される字符串データ型とブロックを使用して入力テキストメッセージを読み取り,数値およびテキストデータを抽出する方法を示しています。

メッセージヘッダーの読み取りと列挙型への変換

金宝app仿真软件®には,弦を対応する列挙値に変換する字符串枚举ブロックが用意されています。このモデルでは,ヘッダー文字列“元”がNMEASentence。元に変換されます。

扫描字符串ブロックを使用したテキストメッセージの解析

テキストテキストメッセージを解析するするつのつのは,扫描串ブロックを使使をです。このこのは,cおよびmatlab®の关关节SSCANFと同様に动作し。

固定フィールド幅のテキストメッセージの解析

テキストメッセージに各データフィールドの固定幅がある場合,仿真金宝app软件®はインデックス別の字符串を分割するブロックを提供します。字符串が分割された後,各フィールドを個別に処理できます。

金宝appの字符串の制限

以下の机能は现されていん。

カテゴリ 制限の説明 回避方法

字符串配列

字符串配列配列はサポートサポートれれ

字符串はスカラーとしてのみ使用します。

Unicode文字

金宝appSimulinkの字符串では,Unicodeセット全体ははサポートれれ

金宝app仿真软件の字符串では,ISO / IEC 8859 - 1文字セットの256文字(基本拉丁とLatin - 1补充)がサポートされます。これらの文字はUnicodeの最初の256のコードポイントです。

Matlab系统MATLAB的s函数,stateflow matlabチャート

これらのブロックで作物,串はではません。

-

常数初始条件

これらのブロックは字符串では機能しません。

字符串常量ブロックブロック使使。

开关ブロック,多端口开关ブロック,切换盒ブロック,如果ブロックブロック制御势

开关ブロックの制御制御力は弦をません。

これらのブロックのデータ入力を使用します。

金宝app仿真软件。信号金宝appSimulink.Parameter.

金宝app仿真软件。信号ブロックと金宝appSimulink.Parameter.ブロックでは,弦はサポートされません。

-

数据类型转换ブロック

字符串へへの変换変换やからからの変换数据类型转换ブロックは使用しないでください。

文字列変換ブロックを使用します。

记录包含字符串元素的非横向总线

如果非虚拟总线包含字符串元素,则无法记录整个虚拟总线。您仍然可以记录非字符串元素。

到工作区ブロック

到工作区をを用して字符串を読み込みます。

出力端子の使してログを行。

到文件ブロック

到文件をを用して字符串を読み込みます。

-

范围ブロック,频谱分析仪ブロック,ロジックアナライザーアプリ

范围ブロック,频谱分析仪ブロック,およびロジックアナライザーアプリで,弦は表示され。

显示仿真数据检查,または顺序查看器をStateflowで使用します。

功能

字符串函数ではデータ型はサポートされません。

-

参考

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

关键词トピック