SlideShare a Scribd company logo
1 of 21
CLOOCAチュートリアル
MEXU ON GR-SAKURA
九州大学システムLSI研究センター
久住憲嗣
1
目次
• Clooca上のMEXUツールを使用してGR-SAKURAを制御
する
• MEXUツールはひとつのクラス図とクラスに所属するス
テートマシン図からC++ソースコードを生成する
• 手順
• Clooca上
• アカウントの作成
• MEXUツールのインポート
• プロジェクトの作成
• クラス図の作成
• ステートマシン図の作成
• クラウドコンパイラ上
• ビルド
2
ユーザ登録とログイン
3
以下のようなメールを受信
click!
右上のログイン画面からログイン
ユーザ登録
http://www.clooca.com/ にアクセス
MEXUツールをインポート
4
marketタブを選択
「MEXU」を
クリック
「はじめる」をclick
プロジェクトを作成
5
7) 「ダッシュボード」タブを選択 & 「プロジェクト作成」をclick
8) プロジェクト名を記入
9) プロジェクトが完成
編集を開始
作成されたプロジェクトをクリックすると表示される画面
で「編集する」を押して編集を開始します.
クラス図にクラスを追加
「ModelExplorer」にある「ClassDiagram」をくりっう
「クラス」を選択した後,ダイアグラムをクリックして
ダイアグラムにクラスを追加します.
クラス図にクラスを追加
ダイアグラムにクラスが追加されました.
適当に名前を付けておきましょう.
ステートマシン図
ModelExplorerからStateDiagramをダブ
ルクリックするとステートマシン図が
開く
StateDiagramで使用するツール
状態 遷移 開始状態
ステートマシン図
10
開始擬似状態が
必要
初期状態
状態名はC++の
命名規則に沿っ
ていれば自由に
設定できる
状態遷移を引きイベ
ントを設定
イベント名はC++の
命名規則に沿ってい
れば自由に設定でき
る
ステートにアクションを記述
11
状態を選択してentryアクションを記述
状態遷移が発生した時に一回だけ実行される
アクションはC++で記述
(生成されたコードにそのまま埋め込まれる)
main.hに記載されている関数,変数は利用可能
注意!:
初期状態のentryアクションは起動時に
1回無条件に実行される
インスタンスの生成 / 初期化
Controller controller;
void setup_classes(void) {
pinMode(PIN_LED0, OUTPUT);
}
12
1) Model ExplorerからClassDiagramを選択
2) Propertyのbodyhookに記述
bodyhookの中身
インスタンス群を
生成
setup_classes関数が起動時に一回
だけ呼び出されるので
初期化を行う
イベントの送信
• 送信先.sendEvent(イベントID)
• 送信先
• 送信先インスタンス
• イベントID
• イベントIDは「クラス名_EVENT_イベント名」のマクロで定義される
• bodyhook中で定義したインスタンスは,ステートマシン
図のアクション記述の中で参照可能
13
タイマ
• 以下のコードで指定した時間後に,イベント送信先に,
イベントが送信される
• timer.add(ミリ秒,イベント送信先,イベント名)
• 例:
• timer.add(500, this, Controller_EVENT_fire);
• 500ミリ秒後に自分自身にfireイベントを送信
• イベントは一回のみ送信される
• timer.addR(ミリ秒,イベント送信先,イベント名)
• イベント繰り返し発生する
• (あまりテストされていないので使用注意)
14
ビルド(1) : ランタイムライブラリの
設定
• clooca / MEXU ランタイムライブラリをダウンロード
• https://dl.dropboxusercontent.com/u/6138936/mexu/sakura.zip
• stm.h / stm.cppを動作させる他に必要なランタイムライブラリ
• MEXU.cpp, MEXU.h, main.cpp, main.h
• +α : grsakura.sh, grsakura-inspection.sh
• クラウドコンパイラに上記zipファイルをインポート
• Project_Rootを右クリック→zipファイルインポート
• (モデルによって変化しない)固定部分なので1度のみ実行でOK
15
ビルド(2) : 生成コードのアップロー
ド
• cloocaでソースコードをダウンロード
• zipファイルがダウンロード出来る
• zipファイル中の stm.h / stm.cpp が生成されたコード
• クラウドコンパイラに上記zipファイルをインポート
• Project_Rootを右クリック→zipファイルインポート
• あとは通常と同様
16
loop関数のカスタマイズ
void loop(void) {
eventManager.execute();
/* このあたりに追加 */
}
17
外部デバイスをポーリングしモデルにイベントを送信したい場合
loop関数にコードを追加する
loop関数はmain.cppで定義
eventManager.execute();によりステートマシンを実行
必ず一定時間に一回はこの行を実行する必要あり
追加コードでブロックしてしまわないこと
loop関数のカスタマイズ: SW2の読み出
し
setup関数にpinMode(PIN_SW, INPUT);を追加.
void sw2_polling(void) {
static int button_pushed = 0;
int sw = digitalRead(PIN_SW);
if (sw != button_pushed) {
button_pushed = sw;
if (sw == HIGH) {
extern Controller controller;
controller.sendEvent(Controller_EVENT_pushed);
}
}
}
void loop(void) {
eventManager.execute();
sw2_polling();
}
18
ボタンが押された時にcontrollerに
pushedイベントを送信
モデリング上の注意
• Model ExplorerとDiagramの一貫性が崩れるとコンパイル
がうまくいかない可能性がある
• 特にダイアグラムからモデル要素を削除した場合に発生する
• Model Explorerを見てすでにないモデル要素を探す
• 発見した場合には右クリックして削除する.
19
参考: grsakura.sh (1)
• cloocaで記述したソフトウェアをGR-SAKURAにダウン
ロードするまでを自動化するスクリプト
• Mac OS X上でのみ動作確認済み
• スクリプト中の以下の変数を定義する必要あり
• CLOOCAUSERPASS
• cloocaのユーザ名とパスワードを「:」で区切ったもの
• CLOOCAPROJECTID
• cloocaのプロジェクトID URLから取得
• (次ページに続く)
20
参考: grsakura.sh (2)
• スクリプト中の以下の変数を定義する必要あり(続き)
• WEBCOMAPIKEY
• ウェブコンパイラのキー ヘルプから取得
• WEBCOMPROJECTID
• ウェブコンパイラ上のプロジェクトIDgrsakura-inspect.sh を実行して取得
• 例: sh grsakura-inspect.sh Ab7IatdwWUn8wgJV
• {"projects":[{ "id":"15996" , "name":"2013-07-22-test" }]}
• WEBCOMBINID
• ウェブコンパイラ上のsketch.binのオブジェクトID
• grsakura-inspect.sh を実行して取得
• 例: sh grsakura-inspect.sh Ab7IatdwWUn8wgJV 15996
• {"projects":[{ "id":"15996" , "name":"2013-07-22-test" }]}
• {"structure":[{ "id":"985181" , "name":"gr_build" , "type":"1" },{ "id":"985187" ,
"name":"gr_common" , "type":"1" },{ "id":"985247" , "name":"gr_reference_e.html" ,
"type":"2" },{ "id":"985248" , "name":"gr_reference_j.html" , "type":"2" },{ "id":"1019989" ,
"name":"main.cpp" , "type":"2" },{ "id":"1019990" , "name":"main.h" ,
"type":"2" },{ "id":"985250" , "name":"makefile" , "type":"2" },{ "id":"1019991" ,
"name":"MEXU.cpp" , "type":"2" },{ "id":"1019992" , "name":"MEXU.h" ,
"type":"2" },{ "id":"985251" , "name":"sketch.bin" , "type":"2" },{ "id":"1019993" ,
"name":"stm.cpp" , "type":"2" },{ "id":"1041119" , "name":"stm.h" , "type":"2" }]}
21
APIキー
APIキー
APIキー

More Related Content

Viewers also liked

Gardner's Multiple Intelligences
Gardner's Multiple IntelligencesGardner's Multiple Intelligences
Gardner's Multiple Intelligencescaseylashaek
 
Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...Baptcare
 
Reinforcement & Punishment
Reinforcement & PunishmentReinforcement & Punishment
Reinforcement & Punishmentcaseylashaek
 
Recommendations play @flipkart
Recommendations play @flipkartRecommendations play @flipkart
Recommendations play @flipkarthava101
 
renewable sources of energy
renewable sources of energyrenewable sources of energy
renewable sources of energyRemar Docor
 

Viewers also liked (8)

Gardner's Multiple Intelligences
Gardner's Multiple IntelligencesGardner's Multiple Intelligences
Gardner's Multiple Intelligences
 
Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...Baptcare Family & Community Services Client Feedback Results September 2012–...
Baptcare Family & Community Services Client Feedback Results September 2012–...
 
Rohit khare
Rohit khareRohit khare
Rohit khare
 
Reinforcement & Punishment
Reinforcement & PunishmentReinforcement & Punishment
Reinforcement & Punishment
 
Rape1
Rape1Rape1
Rape1
 
Recommendations play @flipkart
Recommendations play @flipkartRecommendations play @flipkart
Recommendations play @flipkart
 
Citadelle Gin
Citadelle GinCitadelle Gin
Citadelle Gin
 
renewable sources of energy
renewable sources of energyrenewable sources of energy
renewable sources of energy
 

Similar to 02 cloocaチュートリアル(gr-sakura)

Excel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasia
Excel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasiaExcel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasia
Excel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasiaTakeshi Komiya
 
Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信
Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信
Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信QlikPresalesJapan
 
Qlik What's New - May 2023 リリースの新機能のご紹介
Qlik What's New - May 2023 リリースの新機能のご紹介Qlik What's New - May 2023 リリースの新機能のご紹介
Qlik What's New - May 2023 リリースの新機能のご紹介QlikPresalesJapan
 
TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介
TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介
TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介QlikPresalesJapan
 
TMCN tech-cafe Vol.01 Day3資料
TMCN tech-cafe Vol.01 Day3資料TMCN tech-cafe Vol.01 Day3資料
TMCN tech-cafe Vol.01 Day3資料Akira Hatsune
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させるYuto Takei
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方Harada Kazuki
 
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011Masahito Zembutsu
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider貴志 上坂
 
4.総合演習(1)
4.総合演習(1)4.総合演習(1)
4.総合演習(1)openrtm
 
開発未経験の私がBotをつくってみた
開発未経験の私がBotをつくってみた開発未経験の私がBotをつくってみた
開発未経験の私がBotをつくってみたAika Yamazaki
 
130711 02
130711 02130711 02
130711 02openrtm
 
Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoTakao Tetsuro
 
クラウド・コンピューティングの普及に伴うMSPの現状と課題
クラウド・コンピューティングの普及に伴うMSPの現状と課題クラウド・コンピューティングの普及に伴うMSPの現状と課題
クラウド・コンピューティングの普及に伴うMSPの現状と課題Masahito Zembutsu
 
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data MovementのセットアップQlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data MovementのセットアップQlikPresalesJapan
 
SICE 2020 Rtm tutorial 2_online_ja
SICE 2020 Rtm tutorial 2_online_jaSICE 2020 Rtm tutorial 2_online_ja
SICE 2020 Rtm tutorial 2_online_jaopenrtm
 
Amazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システムAmazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システム駿哉 吉田
 
Decentralized layer2 network ION
Decentralized layer2 network IONDecentralized layer2 network ION
Decentralized layer2 network IONTakao Tetsuro
 

Similar to 02 cloocaチュートリアル(gr-sakura) (20)

Excel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasia
Excel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasiaExcel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasia
Excel 方眼紙撲滅委員会 活動報告 2013.9 #yapcasia
 
Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信
Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信
Qlik Cloud レポーティング新機能~Excel 形式のレポートを配信
 
Qlik What's New - May 2023 リリースの新機能のご紹介
Qlik What's New - May 2023 リリースの新機能のご紹介Qlik What's New - May 2023 リリースの新機能のご紹介
Qlik What's New - May 2023 リリースの新機能のご紹介
 
TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介
TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介
TECH TALK 2022-02-15 Qlikアプリやデータソースのトレーサビリティを抽出する「Qlik Lineage Connector」の紹介
 
TMCN tech-cafe Vol.01 Day3資料
TMCN tech-cafe Vol.01 Day3資料TMCN tech-cafe Vol.01 Day3資料
TMCN tech-cafe Vol.01 Day3資料
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方
 
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
"NAZE? NANI? CloudStack" on OSC Sendai 2011 / May 21 2011
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
 
4.総合演習(1)
4.総合演習(1)4.総合演習(1)
4.総合演習(1)
 
OpenCV→Swift3.0.1
OpenCV→Swift3.0.1OpenCV→Swift3.0.1
OpenCV→Swift3.0.1
 
開発未経験の私がBotをつくってみた
開発未経験の私がBotをつくってみた開発未経験の私がBotをつくってみた
開発未経験の私がBotをつくってみた
 
130711 02
130711 02130711 02
130711 02
 
Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour Tokyo
 
クラウド・コンピューティングの普及に伴うMSPの現状と課題
クラウド・コンピューティングの普及に伴うMSPの現状と課題クラウド・コンピューティングの普及に伴うMSPの現状と課題
クラウド・コンピューティングの普及に伴うMSPの現状と課題
 
.NET Micro Framework / .NET Gadgeteer
.NET Micro Framework / .NET Gadgeteer.NET Micro Framework / .NET Gadgeteer
.NET Micro Framework / .NET Gadgeteer
 
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data MovementのセットアップQlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
 
SICE 2020 Rtm tutorial 2_online_ja
SICE 2020 Rtm tutorial 2_online_jaSICE 2020 Rtm tutorial 2_online_ja
SICE 2020 Rtm tutorial 2_online_ja
 
Amazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システムAmazon EKSによるスケーラブルなCTR予測システム
Amazon EKSによるスケーラブルなCTR予測システム
 
Decentralized layer2 network ION
Decentralized layer2 network IONDecentralized layer2 network ION
Decentralized layer2 network ION
 

02 cloocaチュートリアル(gr-sakura)