1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EV3RT - C++テンプレート

Last updated at Posted at 2020-06-28

概要

 EV3RTプログラムを、C++でプログラミングするテンプレートファイルです。これはクラス利用を目的としたテンプレートファイルです。
 C++ファイルを利用することで、C言語にはないクラスの概念を利用することができます。ライブラリはC言語のAPIを使用し、クラスはC++の構文を使用します。

GitHub | EV3RT_CPP_Template

ファイル構造

cpp_template
  |- app.cpp
  |- app.h
  |- app.cfg
  |- Makefile.inc
  |- parameters.h

プログラム(必須)

Makefile.incは、自動化の設定ファイルです。

Makefile.inc
APPL_COBJS += 

APPL_CXXOBJS +=

SRCLANG := c++

APPL_COBJSは、C言語のライブラリを指定します。
APPL_CXXOBJSは、C++のライブラリを指定します。

通常タスク

app.cppは、EV3RTプログラムのメインファイルです。

app.cpp
#include "ev3api.h"
#include "app.h"
#include "parameters.h"

void main_task(intptr_t unused) {
}

app.hは、EV3RTプログラムのヘッダーファイルです。

app.h
#ifdef __cplusplus
extern "C" {
#endif

#include "target_test.h"

#ifndef STACK_SIZE
#define STACK_SIZE 4096
#endif

#ifndef TOPPERS_MACRO_ONLY
extern void main_task(intptr_t exinf);
#endif

#ifdef __cplusplus
}
#endif

app.cfgは、プログラムの実行単位であるタスクを生成するためのファイルです。

app.cfg
INCLUDE("app_common.cfg");

#include "app.h"

DOMAIN(TDOM_APP) {
CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, TMIN_APP_TPRI, STACK_SIZE, NULL });
}

ATT_MOD("app.o");

周期タスク

追加予定

プログラム(任意)

parameters.hは、EV3RTのパラメータをマクロ定義したヘッダーファイルです。

parameters.h
//  ポート設定
#ifndef PORT_PARAMETERS_H
//  TODO: モータのポートを指定する
#define tail_motor EV3_PORT_A
#define right_motor EV3_PORT_B
#define left_motor EV3_PORT_C
//  TODO: センサのポートを指定する
#define touch_sensor EV3_PORT_1
#define sonic_sensor EV3_PORT_2
#define color_sensor EV3_PORT_3
#define gyro_sensor EV3_PORT_4
#endif

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?