Этот пример показывает, как использовать генератор кода, чтобы сгенерировать и рассмотреть код для использования на смешанных языках и смешанных локалях.
Перед использованием этого примера смотрите Интернационализацию и Генерацию кода или Интернационализацию и Генерацию кода (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');