Silverlightによる高度なWindows Embedded Compact 7ア...

43
Silverlightによる高度なWindows Embedded Compact 7ア プリケーション開発 株式会社富士通ソフトウェアテクノロジーズ 杉本 拓也、相澤 陽介

Transcript of Silverlightによる高度なWindows Embedded Compact 7ア...

Page 1: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Silverlightによる高度なWindows Embedded Compact 7アプリケーション開発

株式会社富士通ソフトウェアテクノロジーズ

杉本 拓也、相澤 陽介

Page 2: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Agenda

• はじめに

• Windows Embedded Compact 7とSilverlight

• 開発環境

• デモ

Page 3: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

~はじめに~ 組み込みデバイス開発の現状

Page 4: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

組み込みデバイス開発を取り巻く状況

接続性

• クラウド・ネットワーク・他のデバイスとの接続

レガシーな機能

• リアルタイム性・省電力・安定性

開発コストの削減

• ソフトウェア・ハードウェアコスト・開発期間の短縮

新しいユーザインターフェース

• スマートフォンのようなUI・気持ち良い・見栄え良い

Page 5: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

ユーザインターフェース

Hi Resolution Rich UI OpenGL

Animation

Alpha

Blending

Multi Touch Gesture NUI

Page 6: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Windows Embedded Compact 7と Silverlight for Windows Embedded

Page 7: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Silverlight for Windows Embedded

• 新しい開発環境

• 新しいグラフィックアーキテクチャ

• Silverlightを利用したアプリケーション開発・実行環境を追加

• Expression Blend 3によるUIのデザイン

• Visual Studioによるプログラミング

• デザイナーとプログラマーの分業

Page 8: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Windows Embedded Compact 7の開発環境

Platform Builder Smart Device Project

アプリケーション

C++ .NET

C/ C++

C++ XAML

C/C++/MFC/ATL/.NETCF

ハードウェア

Silverlight for Windows Embedded

Windows Embedded CE OS・ドライバ

C/ C++

Microsoft Expression Blend 3

Page 9: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

開発の流れ

Silverlightアプリケーション

XAML file for Silverlight

Visual Studio in C# code

XAML File

Visual Studio “C++” code

Silverlight アプリケーション

Windows Vista / Windows 7のアプリケーション開発 Windows Embedded Compactのアプリケーション開発

Microsoft Expression Blend 3

Page 10: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

10

Page 11: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

デザイナーとプログラマーの分離

デザイン BMP/PNG/JPG/PSD…

リソース化

プログラミング

レビュー

プログラミング

デザイナー プログラマー

•ロジックを考えながらのデザイン •異なるツールによるプロトタイプ •実際のアプリケーションとの差異

•ロジック以外にUIに関するコードの記載 •デザイナーの要求

Page 12: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

デザイナーとプログラマーの分離

デザイン リソース化

プログラミング

レビュー

デザイナー プログラマー

•デザイン・アニメーションはデザイナーが設計・決定

•UI以外の実ロジックのみのコーディング

アニメーション XAML

デザイン プログラミング

Page 13: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

WPF XAML

Silverlight XAML

WPF・Silverlight・for Windows Embedded

Silverlight for Windows

Embedded

Windows Presentation Foundation (WPF) は.NET Framework に含まれるユーザインタフェースサブシステムである。 WPFは、ユーザインタフェースとロジックを明確に区別する一貫したプログラミングモデルを提供する。

Silverlightはアニメーション、ベクターグラフィックスの表示や音声・動画再生などの機能を備える、いわゆるリッチインターネットアプリケーション (RIA) のプラットフォームである。

Silverlight for Windows Embedded Silverlightテクノロジーを利用し.NETの変わりにコードをC++で記載可能

Page 14: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Windows Embedded Compact 7

これまでのアプリケーション開発 • GDI/MFCをベースとしたカスタムコントロール • オーナードロー • 非Winデザインを実装するには多くのコードを実装 • デザイナーとの意識・要求の壁

今後のアプリケーション開発 新しいプラットフォームによってリッチなUI開発が可能に!

Browser TV Music Photo

Page 15: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

サンプルホームスクリーン

Silverlight for Embedded based Sample Home Screen SYSGEN_XRSHELL

Page 16: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

サンプルホームスクリーン

Page 17: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

開発環境の構築

Page 18: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

環境構築

• 開発マシンのハードウェアスペック – 約55 GB以上のハードディスクスペース – 最低

• 1.6 GHz CPU, 384 MB RAM, 1024x768 ディスプレイ, 5400 RPM ハードディスク

– 推奨 • 2.2 GHz以上のCPU, 1024 MB以上の RAM, 1280x1024ディスプレイ,

7200 RPM以上のハードディスク

• OS – Windows XP Service Pack 3 – Windows Vista Service Pack 2 – Windows 7

• その他 – Visual Studio 2008 SP1 (全コンポーネント) – Expression Blend 3 (for Windows Embedded Silverlight Tools) – .NET Framework 3.5

Page 19: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

インストール手順

Visual Studio

2008 SP1

Windows Embedded Compact 7

Expression Blend 3

(optional)

Virtual PC

(optional)

Page 20: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

開発環境(Silverlight for Windows Embedded関連)

Page 21: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

開発環境

• Public\common\sdk\inc,lib

• SYSGEN Variable – SYSGEN_XAML_RUNTIME

– SYSGEN_XAMLMSGBOX

– BSP_XRPLUGIN_DDRAW

– BSP_XRPLUGIN_OPENGL

• Header File – XamlRuntime.h

• Library – xamlruntime.lib

• Sample – %_WINCEROOT%\PUBLIC\COMMON\OAK\XamlRuntime

Effects.

Page 22: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Hardware Recommendations

複雑さ User experience Designer experience

GPU/CPU RAM

プレミアム 密集したUI リッチなアニメーション 流れるようなGUI マルチレイヤー

800x600以上 スクリーンの25%以上のアニメーション 20fps以上のアニメーション Vector/pathの多用

• GPU+Dual 1GHzプロセッサー

512 MB以上

High シンプルなアニメーション

15fps程度のアニメーション GPUで処理できる範囲の効果

• GPU無し+Dual 1GHzプロセッサー

• GPU+1GHzプロセッサー

256 MB以上

スタンダード アニメーション無し アニメーション無し • GPU無し+550MHzプロセッサー

• GPU+550MHzプロセッサー

128 MB以上

Page 23: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

GPU Recommendations for DirectDraw

コンポーネント 推奨

GPUメモリー 20MBのビデオメモリー

BltとFillに対するハードウェアアクセラレート

•下記のハードウェアアクセラレート機能

•AlphaBlend •SRCCOPY •Strech •Fill

Page 24: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

GPU Recommendations for OpenGL API

コンポーネント 推奨

OpenGL API •OpenGL Embedded Systems (ES) 2.0 •OpenGL API コンフォーマンステストの通過(Khronos) •vertex shader •fragment shader

Page 25: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

OpenX関連格納場所

種別 ファイル名 格納場所

各種ライブラリ libGLESv1_CM.lib

libGLESv2.lib

libOpenVG.lib

libEGL.lib

%_WINCEROOT%\public\common\sdk\%_TG

TCPU%\%WINCEDEBUG%

OpenGL ES 1.1 gl.h

glext.h

glplatform.h

%_WINCEROOT%\public\common\sdk\inc\GL

ES

OpenGL ES 2.0 gl2.h

gl2ext.h

gl2platform.h

%_WINCEROOT%\public\common\sdk\inc\GL

ES2

Open VG openvg.h %_WINCEROOT%\public\common\sdk\inc\V

G

EGL 1.4 egl.h

eglext.h

eglplatform.h

%_WINCEROOT%\public\common\sdk\inc\E

GL

Khronos Khronos_types.h %_WINCEROOT%\public\common\sdk\inc

Page 26: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

XAMLRENDERPLUGIN

• 用途

– Silverlight for Windows Embeddedの描画処理をハードウェアアクセラレータを利用するためのプラグイン

• 場所

– %_WINCEROOT%\PUBLIC\COMMON\OAK\XAMLRENDERPLUGIN

• GDI

• Ddraw

• OpenGL

• プラグインの大まかな処理

– 描画サーフェースの作成と管理

– 最終的なディスプレイへのイメージの描画処理

Page 27: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

XAMLRENDERPLUGINから読み解く

• OpenGL

– COpenGLSurface::Initialize

• XRPixelFormat_pixelColor16bpp_R5G6B5

• XRPixelFormat_pixelColor32bpp_A8R8G8B8

• Ddraw

– CDDrawSurface::CreateDDrawSurface

• XRPixelFormat_pixelColor32bpp_A8R8G8B8

• XRPixelFormat_pixelColor32bpp_X8R8G8B8

• XRPixelFormat_pixelColor16bpp_R5G6B5

Page 28: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Windows Embedded Silverlight Tools (WEST)

Page 29: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Windows Embedded Silverlight Tools (WEST)

29

ツール名 概要

Create Platform Builder Subproject…

Expression BlendプロジェクトをPlatform Builderサブプロジェクトに変換

Windows Embedded Event イベントハンドラーを追加

Update Silverlight for Windows Embedded Project…

Expression Blendプロジェクトの変更をPlatform Builderサブプロジェクトに反映

Page 30: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

WEST : Create Platform Builder Subproject… • SilverlightのOS Designへの組み込み

– メニューから[Create Platform Builder Subproject…]を選択

– ウィザードに従って、 Expression BlendプロジェクトをPlatform Builderサブプロジェクトに変換

– ソリューションエクスプローラーのSubprojectを右クリックし、[Add Existing Subproject]を選択

– 先に変換したサブプロジェクトを選択

Page 31: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

WEST : Windows Embedded Event

• イベントハンドラの追加が可能

Page 32: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

WESTからの主な出力物

• VSプロジェクト一式

• ソース

– WinMain.cpp

– App.cpp, App.h

– MainPage.cpp, MainPage.h

– XXX.rc, resource.h

– StdAfx.h, StdAfx.cpp

Page 33: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Stdafx.h

// Windows Header Files:

#include <windows.h>

// Xaml Runtime Header Files

#include <XamlRuntime.h>

#include <XRDelegate.h>

#include <XRPtr.h>

#include <XRCustomControl.h>

Page 34: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

WinMain.cpp

#include "stdafx.h" #include "App.h" // ============================================================================ // WinMain // // Description: Set the window creation parameters for this application. // // Parameters: hInstance - Handle to the current instance of the application. // hInstPrev - This parameter is always NULL. // lpCmdLine - Command line for the application, excluding the program name. // nCmdShow - Specifies how the window is to be shown. // ============================================================================ INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hInstPrev*/, LPWSTR /*lpCmdLine*/, int /*nShowCmd*/) { App AppInstance; HRESULT hr = AppInstance.Initialize(hInstance); if(SUCCEEDED(hr)) { hr = AppInstance.Run(); } return AppInstance.GetWinMainResultCode(); }

Page 35: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

App.cpp(1)

//======================================================

// InitializeComponent

//

// Description: Load the Application resource dictionary if one exists.

//======================================================

HRESULT App::InitializeComponent()

{

XRXamlSource appXaml(GetHInstance(), IDR_SILVERLIGHTAPPLICATION1_APP);

HRESULT hr = m_pApplication->LoadResourceDictionary(&appXaml,NULL);

return hr;

} // InitializeComponent

Page 36: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

App.cpp(2)

//========================================================== // OnStartup // // Description: OnStartup is called after the visual host is created. // and before the message loop is entered. //========================================================== HRESULT App::OnStartup() { HRESULT hr = S_OK; IXRFrameworkElementPtr pRoot; hr = m_pVisualHost->GetRootElement(&pRoot); if (SUCCEEDED(hr)) { // TODO: Add one time initialization code here. } return hr; } // OnStartup

Page 37: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

App.cpp(3)

//========================================================== // CreateHost // // Description: Create the visual host. // // Parameters: pCreateParams - The parameters used for creating the // visual host's window //========================================================== HRESULT App::CreateHost(XRWindowCreateParams* pCreateParams) { XRPtr<IXRCustomUserControl> pControl; HRESULT hr = E_FAIL; hr = m_pApplication->CreateObject(__uuidof(MainPage),&pControl); if (SUCCEEDED(hr)) { hr = m_pApplication->CreateHostFromElementTree(pControl, pCreateParams, &m_pVisualHost); } return hr; }

Page 38: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

App.cpp(4)

#pragma region RegisterUserControls Generated Code // ============================================================================ // RegisterUserControls // // Description: Register all XRCustomUserControl implemenations here. // WARNING: DO NOT EDIT THIS ALWAYS-GENERATED FUNCTION // ============================================================================ HRESULT App::RegisterUserControls() { HRESULT hr = S_OK; static PFN_XRCUC_REGISTER pfn[] = { &MainPage::Register, }; for (int i=0; i<_countof(pfn) && SUCCEEDED(hr); i++) { hr = pfn[i](); if (FAILED(hr)) { RETAILMSG(1,(L"RegisterUserControls failed.")); } } return hr; } // RegisterUserControls // ============================================================================ // WARNING: DO NOT EDIT THIS ALWAYS-GENERATED FUNCTION // ============================================================================ #pragma endregion RegisterUserControls Generated Code

Page 39: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

Demo

Page 40: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

その他注意事項

Page 41: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

注意事項・その他

• アプリケーションのスタックサイズ

– デフォルト64Kでは足りない場合がある

• Imaging関連のカタログ追加

– SYSGEN_IMAGING(BMP/JPG/ICO/PNG/GIF)の追加を忘れずに

• Silverlightとの相違点

– http://msdn.microsoft.com/en-us/library/ee501848(v=WinEmbedded.70).aspx

Page 43: Silverlightによる高度なWindows Embedded Compact 7ア …download.microsoft.com/download/C/4/A/C4A73DB0-2210-4652-A648... · • Public\common\sdk\inc,lib • SYSGEN Variable

© 2011 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.