Сгенерируйте и рассмотрите код со смешанными языками и смешанными локалями

Этот пример показывает, как использовать генератор кода, чтобы сгенерировать и рассмотреть код для использования на смешанных языках и смешанных локалях.

Перед использованием этого примера смотрите Интернационализацию и Генерацию кода или Интернационализацию и Генерацию кода (Embedded Coder).

Настройка модели rtwdemo_unicode использует системный конечный файл Embedded Coder (R) ert.tlc. Чтобы видеть поддержку интернационализации и локализации с Simulink Coder®, сконфигурируйте модель, чтобы использовать системный конечный файл grt.tlc. Пример указывает на поддержку, которая характерна для Embedded Coder® (например, шаблоны генерации кода).

Настройка модели задает файлы и настройки, которые управляют, как генератор кода обрабатывает локализацию для:

  • C и API-интерфейсы C++

  • Файлы шаблона генерации кода (CGT) (требует Embedded Coder®),

  • Файлы Компилятора выходного языка (TLC), которые применяют индивидуальные настройки кода (требует Embedded Coder®),

Откройте модель rtwdemo_unicode в качестве примера.

Метки в модели появляются на нескольких языках (арабский, китайский, английский, немецкий и японский язык) и различные символы Unicode.

model = 'rtwdemo_unicode';
open_system(model);

Проверьте настройки локали

Проверьте, что установка локали для вашего MATLAB совместима с вашим компилятором. См. документацию для своей операционной системы или следующую документацию MATLAB:

Проверьте модель для использования внешних символов

чтобы проверить модель для символов, которые генератор кода не может представлять в кодировании набора текущего символа модели, используйте модель Check проверки Simulink® Model Advisor для внешних символов.

1. Откройте Model Advisor в Simulink®. Выберите Analysis> Model Advisor> Model Advisor. Или в Командном окне введите:

modeladvisor('rtwdemo_unicode')

2. Расширьтесь продуктом.

3. Расширьте Simulink.

4. Выберите модель Check для внешних символов

5. Нажмите Run This Check.

6. Рассмотрите результаты. Появляются несколько предупреждений. Проверьте, что символы в модели могут быть представлены в кодировании набора текущего символа.

7. Закройте Model Advisor.

Файлы шаблона генерации кода

Чтобы использовать файл шаблона генерации кода с unicode символами при генерации кода, завершитесь, эти шаги (требует Embedded Coder®). В противном случае перейдите к следующему разделу.

1. Откройте диалоговое окно Configuration Parameters.

2. Перейдите Генерации кода> панель Шаблона. Модель сконфигурирована, чтобы использовать файл шаблона генерации кода rtwdemo_unicode.cgt. Тот файл добавляет комментарии в верхнюю часть файлов сгенерированного кода. Для генератора кода, чтобы применить замены escape-последовательности для файла .cgt, включите замены путем определения:

<encodingIn = "encoding-name">

3. Откройте файл /toolbox/rtw/rtwdemos/rtwdemo_unicode.cgt.

edit rtwdemo_unicode.cgt

4. Найдите строку кода, которая включает замены escape-последовательности для набора символов, кодирующего UTF-8.

<encodingIn = "UTF-8">

5. Закройте файл /toolbox/rtw/rtwdemos/rtwdemo_unicode.cgt.

Сгенерированный шаблон настройки файла

Чтобы использовать шаблоны настройки файла с unicode символами при генерации кода, завершитесь, эти шаги (требует Embedded Coder®). В противном случае перейдите к следующему разделу.

Можно задать индивидуальные настройки к файлам сгенерированного кода при помощи кода TLC. Файлы TLC поддерживают пользовательскую кодировку по умолчанию только. Чтобы произвести международный пользовательский сгенерированный код, который является портативным, используйте 7-битный набор символов ASCII.

1. Откройте диалоговое окно Configuration Parameters.

2. Перейдите Генерации кода> панель Шаблона. Модель сконфигурирована, чтобы использовать файл настройки кода example_file_process.tlc. Тот файл настраивает сгенерированный код непосредственно перед тем, как генератор кода пишет файлы кода. Например, файл добавляет, что исходный файл C, соответствующий, включают файл и операторы #define и #include.

3. Откройте файл /toolbox/rtw/rtwdemos/example_file_process.tlc.

edit example_file_process.tlc

4. Прежде, чем сгенерировать код, не прокомментируйте следующую строку кода:

% %% %assign ERTCustomFileTest = TLC_TRUE

5. Закройте файл /toolbox/rtw/rtwdemos/example_file_process.tlc.

Сгенерируйте код С

Сгенерируйте код С и отчет генерации кода.

evalc('rtwbuild(''rtwdemo_unicode'')');

Рассмотрите сгенерированный код

Для символов, которые не находятся в текущем кодировании набора символов MATLAB®, генератор кода использует замены escape-последовательности, чтобы представить символы правильно в отчете генерации кода.

1. Если отчет генерации кода для модели rtwdemo_unicode не открыт в Командном окне, введите:

coder.report.open('rtwdemo_unicode')

2. Рассмотрите сгенерированный код в rtwdemo_unicode.c и rtwdemo_unicode.h. Имена элементов модели появляются в комментариях к коду, как замена называет на локальном языке.

3. Откройте Отчет Трассируемости. Отчет поддерживает информацию о трассируемости, даже когда имя содержит символы, которые не представлены в текущем кодировании. Имена элементов модели появляются в отчете, как замена называет на локальном языке.

4. Прокрутите вниз к и щелкните по ссылке участка кода для первого Графика (State 'Selection' <S2>:23). Представление отчета изменяется, чтобы показать соответствующий код в rtwdemo_unicode.c.

5. В комментарии к коду щелкните по ссылке <S2>:23. Окно модели показывает график в новой вкладке.

6. В окне модели щелкните правой кнопкой по тому графику. Выберите C/C ++ Code> Navigate to C/C ++ Code. Представление отчета изменяется, чтобы показать именованный постоянный раздел кода для того графика.

7. Закройте отчет генерации кода, Model Advisor и модель. В Командном окне введите:

coder.report.close();
bdclose('all');

Сгенерируйте код С++

Сгенерируйте Код С++ и отчет генерации кода.

1. Откройте модель.

model = 'rtwdemo_unicode';
open_system(model);

2. Измените Параметры конфигурации> Генерация кода> Язык к C++. Или в Командном окне введите:

set_param('rtwdemo_unicode','TargetLang','C++');

3. Измените упаковку интерфейса Configuration Parameters> Code Generation> Interface> Code на C++ class. Или в Командном окне введите:

set_param('rtwdemo_unicode','CodeInterfacePackaging','C++ class');

4. Сгенерируйте Код С++ и отчет генерации кода.

evalc('rtwrebuild(''rtwdemo_unicode'')');

5. Чтобы видеть поддержку интернационализации и локализации, рассмотрите сгенерированный код. Смотрите Анализ Сгенерированный код.

6. Закройте отчет генерации кода и модель. В Командном окне введите:

coder.report.close();
bdclose('all');