Suche senden
Hochladen
Xamarin.Formsで鉄道模型を制御してみた
•
3 gefällt mir
•
1,792 views
ayasehiro
Folgen
2015年10月3日 JXUGC#6 東京 セッションのスライドです
Weniger lesen
Mehr lesen
Präsentationen & Vorträge
Melden
Teilen
Melden
Teilen
1 von 30
Empfohlen
JXUGC 13 東京 はじめに
JXUGC 13 東京 はじめに
Yoshito Tabuchi
FlashAir x Bluemixで自動応答
FlashAir x Bluemixで自動応答
ayasehiro
プラレールをもっと楽しく
プラレールをもっと楽しく
ayasehiro
FlashAirとCognitive Servicesでしゃべるデジカメを作ってみた
FlashAirとCognitive Servicesでしゃべるデジカメを作ってみた
ayasehiro
JavaScriptでも鉄道模型
JavaScriptでも鉄道模型
ayasehiro
Xamarin.FormsでもCognitive Servicesを使おう!
Xamarin.FormsでもCognitive Servicesを使おう!
ayasehiro
Xamarinでもクラウドで監視したい!
Xamarinでもクラウドで監視したい!
ayasehiro
Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ
Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ
Kohei Otsuka
Empfohlen
JXUGC 13 東京 はじめに
JXUGC 13 東京 はじめに
Yoshito Tabuchi
FlashAir x Bluemixで自動応答
FlashAir x Bluemixで自動応答
ayasehiro
プラレールをもっと楽しく
プラレールをもっと楽しく
ayasehiro
FlashAirとCognitive Servicesでしゃべるデジカメを作ってみた
FlashAirとCognitive Servicesでしゃべるデジカメを作ってみた
ayasehiro
JavaScriptでも鉄道模型
JavaScriptでも鉄道模型
ayasehiro
Xamarin.FormsでもCognitive Servicesを使おう!
Xamarin.FormsでもCognitive Servicesを使おう!
ayasehiro
Xamarinでもクラウドで監視したい!
Xamarinでもクラウドで監視したい!
ayasehiro
Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ
Xamarin & Google Maps SDKでクロスプラットフォーム地図アプリ
Kohei Otsuka
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
Hironov OKUYAMA
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Yoshito Tabuchi
続Xamarinはじめました
続Xamarinはじめました
Yuya Yamaki
Jxugc#22 lt古川
Jxugc#22 lt古川
F. Syam
Xamarin.Forms概要
Xamarin.Forms概要
Hironov OKUYAMA
Xamarinは辛いよ
Xamarinは辛いよ
Takkiiii
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
irgaly
Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性
Atsushi Nakamura
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
インフラジスティックス・ジャパン株式会社
カメラアプリ開発入門3
カメラアプリ開発入門3
Takashi Ohtsuka
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tips
Daiki Kawanuma
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
Tatsuji Kuroyanagi
Xamarin開発環境の選択
Xamarin開発環境の選択
Miho Kurosawa
Xamarinはじめました
Xamarinはじめました
Yuya Yamaki
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
.NET Compiler Platform
.NET Compiler Platform
信之 岩永
FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!
ayasehiro
Xamarinで作る「オリジナルタイル地図」アプリ
Xamarinで作る「オリジナルタイル地図」アプリ
Kohei Otsuka
Weitere ähnliche Inhalte
Andere mochten auch
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
Hironov OKUYAMA
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Yoshito Tabuchi
続Xamarinはじめました
続Xamarinはじめました
Yuya Yamaki
Jxugc#22 lt古川
Jxugc#22 lt古川
F. Syam
Xamarin.Forms概要
Xamarin.Forms概要
Hironov OKUYAMA
Xamarinは辛いよ
Xamarinは辛いよ
Takkiiii
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
irgaly
Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性
Atsushi Nakamura
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
インフラジスティックス・ジャパン株式会社
カメラアプリ開発入門3
カメラアプリ開発入門3
Takashi Ohtsuka
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tips
Daiki Kawanuma
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
Tatsuji Kuroyanagi
Xamarin開発環境の選択
Xamarin開発環境の選択
Miho Kurosawa
Xamarinはじめました
Xamarinはじめました
Yuya Yamaki
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
.NET Compiler Platform
.NET Compiler Platform
信之 岩永
FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!
ayasehiro
Xamarinで作る「オリジナルタイル地図」アプリ
Xamarinで作る「オリジナルタイル地図」アプリ
Kohei Otsuka
Andere mochten auch
(18)
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
続Xamarinはじめました
続Xamarinはじめました
Jxugc#22 lt古川
Jxugc#22 lt古川
Xamarin.Forms概要
Xamarin.Forms概要
Xamarinは辛いよ
Xamarinは辛いよ
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
カメラアプリ開発入門3
カメラアプリ開発入門3
ゆるふわ Xamarin Tips
ゆるふわ Xamarin Tips
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
Xamarin開発環境の選択
Xamarin開発環境の選択
Xamarinはじめました
Xamarinはじめました
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
.NET Compiler Platform
.NET Compiler Platform
FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!
Xamarinで作る「オリジナルタイル地図」アプリ
Xamarinで作る「オリジナルタイル地図」アプリ
Xamarin.Formsで鉄道模型を制御してみた
1.
Xamarin.Formsで 鉄道模型を制御してみた 2015年10月3日 綾瀬 ヒロ Twitter @ayasehiro 第6回
Japan Xamarin User Group Conference 東京 2015/10/3 1All rights reserved. Copyright(C) 2015 AYASE Hiro
2.
目次 1. 自己紹介 2. 事例紹介(本業) 3.
事例紹介(趣味) ・Xamarin.Formsで作った鉄道模型制御アプリ ・デモ 2015/10/3 2All rights reserved. Copyright(C) 2015 AYASE Hiro
3.
1.自己紹介 2015/10/3All rights reserved.
Copyright(C) 2015 AYASE Hiro 3
4.
1.自己紹介 綾瀬ヒロ(AYASE Hiro)※今日はハンドルネームで Twitter
@ayasehiro 本業 某高速鉄道の輸送管理システムのSE プロマネ アーキテクチャ設計 新規技術検証・新規システムの企画・構想 趣味 プログラミング・電子工作・鉄道模型 スキー・ダイビング・写真 2015/10/3 4All rights reserved. Copyright(C) 2015 AYASE Hiro
5.
1.自己紹介 ご存知の方、いらっしゃいますか? 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 5 偽ペルソナウェアwith”偽春菜” あれ以外の何かwith”偽春菜” 何か。(仮) 何か 伺か ←いまココ 公式サイト: http://usada.sakura.vg/
6.
1.自己紹介 趣味のプログラミング 代表作?『何かon林檎』 2000年頃、ごく一部で流行った Windows用デスクトップマスコットフリーソフト「偽春菜」を REALbasicでMacOS9に移植してました。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 6
7.
1.自己紹介 趣味のプログラミング 代表作?『何かon林檎』 雑誌収録していただきました。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 7
8.
1.自己紹介 自宅の庭にGゲージ鉄道模型を敷設してます。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 8
9.
2.事例紹介(本業) 2015/10/3All rights reserved.
Copyright(C) 2015 AYASE Hiro 9
10.
2.事例紹介(本業) 業務用のiOSアプリを開発することに。 将来的な要員確保と柔軟性 2015/10/3All
rights reserved. Copyright(C) 2015 AYASE Hiro 10 工期:3ヶ月。時間がないので直轄で作った とりあえずiPad向けのみ 社内でObjective-Cを書ける要員が1人確保できた Objective-CでiOSアプリを製作した いつまでもiOSデバイスである保証がない 社内にObjective-C技術者が少ない 社内には、業務システム開発でC#/.NET技術者は多い そうだXamarinどうよ?
11.
2.事例紹介(本業) というわけで、現在、Xamarinの技術検証やってます 管理者として 2015/10/3All
rights reserved. Copyright(C) 2015 AYASE Hiro 11 若手にXamarinの技術検証をやってもらってます 管理者の自分としても、どんなもんか試してみたい 仕事中はプログラミングしている時間はない 趣味でやればいいじゃない ただ、プログラミングしていてもつまらないので 自分の趣味分野において、活用できるものを作ることにしました。 実装比較: Objective-C Xamarin + Storyboard Xamarin.Forms
12.
3.事例紹介(趣味) Xamarin.Formsで作った鉄道模型制御アプリ 2015/10/3All rights reserved.
Copyright(C) 2015 AYASE Hiro 12
13.
3.事例紹介(趣味) 今回作ったもの 「アタッシュケース型Nゲージ鉄道模型ミニレイアウト」 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 13 本日持参! 休憩時間等に ご覧ください
14.
3.事例紹介(趣味) 今回作ったもの 「アタッシュケース型Nゲージ鉄道模型ミニレイアウト」の制御アプリ 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 14 列車の在線位置を表示 各種操作する部分 iOSアプリ Xamarin.Formsで作成
15.
3.事例紹介(趣味) 今回作ったもの 「アタッシュケース型Nゲージ鉄道模型ミニレイアウト」 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 15 マイコン Arduino 共有メモリ モータドライバ モータドライバ PWM 出力 デジタル IO出力 車両のモーター 分岐器線路 フォトカプラ 線路(電流) デジタル IO入力 無線LAN接続 FlashAirのWebAPIを制御アプリからリクエストして 共有メモリを読み書き(ステータス情報を読み込み・更新) ArduinoでFlashAirの共有メモリ上の ステータス情報を周期的に読み込み、 PWM出力・デジタルI/O出力を行う
16.
3.事例紹介(趣味) Xamarin.Formsでの実装方の紹介 在線表示 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 16 ImageをAbsoluteLayoutで同じ座標に 重ねて表示。 ステータス情報(在線センサーの値) をFlashAirから周期的に読み取り、 重ねたImageのOpacityを1.0/0.0と切 り替えて、表示を切り替える 列車の在線位置を表示
17.
3.事例紹介(趣味) 在線表示の実装方の紹介 表示用の透過PNG画像ファイルを作成します。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 17 line0.png line1.png line2.png line3.png line4.png
18.
3.事例紹介(趣味) 在線表示の実装方の紹介 line0.pngのみOpacity=1.0、それ以外はOpacity=0.0とする。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 18 var lineImage = new Image { Source = ImageSource.FromResource(“MyApp.images.line0.png"), Opacity = 1.0, BackgroundColor = Color.White, }; var lineImage1 = new Image { Source = ImageSource.FromResource(“MyApp.images.line1.png"), Opacity = 0.0, }; 〜略〜 var lineImage4 = new Image { Source = ImageSource.FromResource(“MyApp.images.line4.png"), Opacity = 0.0, }; var layoutLineImage = new AbsoluteLayout (); layoutLineImage.Children.Add(lineImage, new Rectangle(0, 10, 600, 400)); layoutLineImage.Children.Add(lineImage1, new Rectangle(0, 10, 600, 400)); 〜略〜 layoutLineImage.Children.Add(lineImage4, new Rectangle(0, 10, 600, 400));
19.
3.事例紹介(趣味) 在線表示の実装方の紹介 1秒周期でステータス情報を読み取り、値に応じてOpacity値を変える。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 19 Device.StartTimer (new TimeSpan (0, 0, 1), () => { Device.BeginInvokeOnMainThread (async () => { string strState = await getFlashairSharedMem(); if(strState.Substring(8, 1) == "1"){ lineImage1.Opacity = 1.0; } else{ lineImage1.Opacity = 0.0; } 〜略〜 if(strState.Substring(11, 1) == "1"){ lineImage4.Opacity = 1.0; } else{ lineImage4.Opacity = 0.0; } }); return true; });
20.
3.事例紹介(趣味) Xamarin.Formsの実装方の紹介 操作用ボタン 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 20 各種操作する部分 2つの方法を試しました (方法1) ImageとButtonを重ねて表示 (方法2) ImageにTapGestureRecognizerを 追加する
21.
var icon_run_speed_up =
new Image { Source = ImageSource.FromResource(“MyApp.images.run_speed_up.png”), Opacity = 1.0, }; var button_speedup = new Button { Opacity = 0.0, }; button_speedup.Clicked += async (sender, e) => { 〜略〜 var str = await setFlashairSharedMem(cmd); }; var layoutSpeed = new AbsoluteLayout (); layoutSpeed.Children.Add(icon_run_speed_up, new Rectangle(XXX, YYY, 120, 120)); layoutSpeed.Children.Add(button_speedup, new Rectangle(XXX, YYY, 120, 120)); 3.事例紹介(趣味) 操作用ボタンのタップ実装方の紹介(方法1) ImageとButtonをAbsoluteLayoutで同じ座標位置に重ねて表示。 ButtonのClickedイベントにタップされたときの処理を記述する。 2015/10/3All rights reserved. Copyright(C) 2015 AYASE Hiro 21
22.
var icon_run_speed_up =
new Image { Source = ImageSource.FromResource(“MyApp.images.run_speed_up.png”), Opacity = 1.0, }; var button_speedup = new Button { Opacity = 0.0, }; button_speedup.Clicked += async (sender, e) => { 〜略〜 var str = await setFlashairSharedMem(cmd); }; var layoutSpeed = new AbsoluteLayout (); layoutSpeed.Children.Add(icon_run_speed_up, new Rectangle(XXX, YYY, 120, 120)); layoutSpeed.Children.Add(button_speedup, new Rectangle(XXX, YYY, 120, 120)); 3.事例紹介(趣味) 操作用ボタンのタップ実装方の紹介(方法1) ImageとButtonをAbsoluteLayoutで同じ座標位置に重ねて表示。 ButtonのClickedイベントにタップされたときの処理を記述する。 2015/10/3All rights reserved. Copyright(C) 2015 AYASE Hiro 22 問題あり! iOSでは、Opacityの定義不要。 Opacity=0.0だとClickedイベント拾えず。 一方… Androidでは、Opacity=0.0必須。
23.
3.事例紹介(趣味) 操作用ボタンのタップ実装方の紹介(方法2) ImageにTapGestureRecognizerを追加して、 Tappedイベントにタップされたときの処理を記述する。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 23 var icon_run_speed_up = new Image { Source = ImageSource.FromResource(“MyApp.images.run_speed_up.png”), Opacity = 1.0, }; var icon_run_speed_up_tgr = new TapGestureRecognizer (); icon_run_speed_up_tgr.Tapped += async (sender, e) => { 〜略〜 var str = await setFlashairSharedMem(cmd); }; icon_run_speed_up.GestureRecognizers.Add(icon_run_speed_up_tgr); var layoutSpeed = new AbsoluteLayout (); layoutSpeed.Children.Add(icon_run_speed_up, new Rectangle(XXX, YYY, 120, 120));
24.
最後に… 2015/10/3All rights reserved.
Copyright(C) 2015 AYASE Hiro 24
25.
最後に 最新作:Gゲージ鉄道模型の遠隔制御システム 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 25 最近、流行り?の WiFiモジュール ESP-WROOM-02 (ESP8266) もちろん Xamarin.Formsで作成 無線LANで 遠隔操縦可能
26.
最後に 最新作:Gゲージ鉄道模型の遠隔制御システム 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 26 ESP8266でGゲージ車両を遠隔制御(LGB 22300) 屋外試運転 https://www.youtube.com/watch?v=S-FcjC__Zq0 ESP8266でGゲージ車両を遠隔制御(LGB 22300) https://www.youtube.com/watch?v=HqhPZ8RPOL4
27.
2015/10/3All rights reserved.
Copyright(C) 2015 AYASE Hiro 27 ご静聴ありがとうございました 利用フォント:「国鉄方向幕書体OTF」 http://makufont.dip.jp/memo/?page_id=1178
28.
参考 そのほか、電子工作ネタは以下で紹介しています。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 28 日経Linux2015年5月号に 特集記事「Arduinoで鉄道模型を自動運転」を寄稿。 MacとArduinoで、鉄道模型を自動運転する装置 Macのソフトは、Xojo(旧REALbasic)で作成。 日経Linux2015年5月号
29.
参考 そのほか、電子工作ネタは以下で紹介しています。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 29 Maker Faire Tokyo 2015の東芝FlashAirブースで 配布された「FlashAir同人誌2」に寄稿しました。 「FlashAirの共有メモリを使い倒せ!」 FlashAir同人誌2
30.
参考 そのほか、電子工作ネタは以下で紹介しています。 2015/10/3All rights
reserved. Copyright(C) 2015 AYASE Hiro 30 東芝FlashAirの開発者向けサイトにて、 ユーザーチュートリアルを寄稿しました。 FlashAir Developers