Sensor Driver SampleのModel

Visual Studio 2010のモデリング機能を使って、Windows Driver KitのSensorSkeltonサンプルを可視化してみた。 まずは、Sensor APIのシステム内の位置づけ。他にWPDやPnPHardware、他のデバイススタックが絡むけど、それらは省略。 次は、クラス図です。 そして処理の流れを書いてみた On…は、アプリがSensor APIをコールしたときに呼ばれるやつ。  

0

Windows 7 Sensor & Locationを使ってみよう Series !!

今までブログにポストしてきた関連項目の目次です。 Windows Mobile 7 Seriesの発表にあやかり、最後にSeriesをつけてみました。(でへ) では早速過去のポストへのリンクを、まとめて一挙公開です。 「Windows 7 Sensor & Locationを使ってみよう!!」シリーズ http://blogs.msdn.com/hirosho/archive/2009/11/22/windows-7-sensor-location-platform-1.aspx先ずは準備を兼ねて肩慣らしの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/26/windows-7-sensor-location-platform-2.aspxManaged Code(Windows API CodepackのSensor)で、センサーを取り出すの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/28/windows-7-sensor-location-platform-3.aspxManaged Code(Windows API CodepackのSensor)で、センサーからデータを取り出すの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/29/windows-7-sensor-location-platform-4.aspx.NET 4のSystem.Device.Locationでロケーションをいぢるの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/12/08/windows-7-sensor-location-platform-5.aspxNative CodeでSensor COM APIごりごり開発、VC++ Native Codeが書けるなんてかっこ良~いの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/12/22/windows-7-sensor-location-platform-6.aspx.NET 4 WPF Chartを使って、取り出したデータを見える化だぁ、の巻ぃ http://blogs.msdn.com/hirosho/archive/2010/02/05/windows-7-api-codepack.aspxサイドスト~リー(番外編):Windows API Codepackに新たな秘密兵器を装着しようぜっ、の巻ぃ http://blogs.msdn.com/hirosho/archive/2010/03/10/neurosky-mindset-windows-7-sensor-api.aspxサイドスト~リー(番外編):Mindsetで頭の中を覗いてみようっ、の巻ぃ 新しくネタが出たら、順次追加の予定なので、偶にチェックしてねっ!!

0

Windows XP Embedded系でのASP.NET利用時のセットアップ

Windows XP Embedded(新しいブランド名ではWindows Embedded Standard)や、それをベースにしたWEPOS、POS Ready等で、ASP.NETを使ってWeb Serviceを実装する時の注意点を説明します。 この記事は、Embedded特有というわけではなく、XPでIISやASP.NETを使う場合全般に当てはまるのですが、まとまった日本語の説明がないのと、組込み向けの製品としてはまだまだXPベースのOSはサポートが続くので、ここで紹介しておきますね。  まず、症状ですが、APS.NETでWebサービス(*.asmxを使用)を作成しデバッグが一通り終わり、IISの本来のWebサイトに配置した際、以下の様なエラーメッセージが出ることがあります。そんな時は、この記事に書かれている対処方法を試してみてください。 Server Error in ‘ServiceDir’ Application. Failed to access IIS metabase. Description: An unhandled exception occurred durling the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Web.Hosting.HostingEnvironmentException: Failed to access…

0

T4 Templateを使ってみよう!

このページの記載事項を試すには、Visual Studio 2005 Professional以上が必要です。また、Visual Studio 2005 SDKのインストールもお願いします。Visal Studio 2008でも使用可能です。 先ずは、Visual Studioで新しいプロジェクトを作成しましょう。そして作成したプロジェクトに、拡張子を”tt”として、テキストファイルを新規に追加します。ファイルの名前は、”sample.tt”として話を進めます。ソリューションエクスプローラーでsample.ttを選択し、プロパティを表示してみてください。カスタムツールの項目の値が、”TextTemplatingFileGenerator”に自動的に設定されているのがわかるでしょう。この設定により、sample.ttファイルを変更し保存するたびに、TextTemplatingFileGeneratorによって解釈され、sample.ttの内容に従ったテキストファイルが生成されます。 sample.ttの内容は、T4 Templateで決められた文法に従って記述します。T4 Templateでの記述内容は大きく5種類に分類できます。3種類とは テンプレートに関するDirective宣言 テキスト部分 変数のテキストへの変換  テキストへの変換に必要なロジック メソッドの定義 以下に順番に説明していきましょう。 先ず1番目の「テンプレートに関するDirective宣言」です。テンプレート内で、<#@ directive variable=”value” ・・・#>の形式で書かれた部分がDirective宣言です。Directive宣言は、テンプレートの先頭に位置します(テキスト部分は先に定義されていても良いようです)。Directive宣言は、テンプレートをコントロールする様々な宣言です。例として、DSL Designerで作成したDSL Modelに対するテンプレートの場合は、 <#@ template inherits=”Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation” debug=”true”#><#@ output extension=”.txt” #><#@ DSLName processor=”DSLNameDirectiveProcessor” requires=”fileName=DSLModel.sdfd'” #>の様な記述になります。最初のtemplateは、テンプレートがModelingTextTransformationクラスを継承して定義すること、デバッグモードで実行することを指定しています。二番目のoutputは、このテンプレートを実行したときに生成されるファイルの拡張子を指定しています。3行目の宣言と合わせ、このテンプレートはDSLModel.txtという名前のファイルを生成します。3行目は、このテンプレートにデータを供給するプロセッサーを指定します。DSLNameやDSLNameDirectiveProcessorは、DSLNameの部分がそれぞれのDSLの名前を指定します。DSLNameDirectiveProcessorは、DSLを定義した時に自動的に生成されるクラスです。この3行でfileNameとしてDSLModel.sdfdを指定していますが、これは、このファイルが変更される度に、子の変換テンプレートが実行されることを意味します。他に、使用できるDirectiveには、ImportやIncludeなど多数あります。詳しくは、 MSDN→MSDN Library→Development Tools and Languages→Visual Studio 2005→Visual Studio→Visual Studio SDK→Domain-Specific Language Tools → Creating Domain-Specific Languages →Generating Artifacts Using…

0

DSL Designerで構築したDSL Editorで描いたモデル内容へのアクセス方法

Visula Studio 2005 SDKをVisual Studio 2005(Professional Edition以上)にインストールすると、DSL Toolkitという、独自のモデル(DSL:Domain Specific Language)向けモデルエディタを構築するためのツールが使えるようになります。※DSL ToolkitはVisual Studio 2008ベータ版でも使えます。 独自のモデルエディタの構築方法は、http://www.microsoft.com/japan/msdn/architecture/dsl/default.aspxの最後の方で紹介されている、3つのホワイトペーパー DSL Toolsのライフサイクル全体の作業に関するホワイトペーパー DSL Toolsで作成したグラフィカルデザイナのカスタマイズ方法について DSL Toolsで表現できるグラフィカル表現とモデルの関係について を参考にしてください。では、構築したモデルエディタを使って描いたモデルから、モデルの定義情報を取り出して、様々な別の成果物に変換する方法を紹介していきましょう。 モデルエディタは、モデルの意味を定義する“メタモデル”とモデルの見栄えを定義する“グラフィカル要素”の二つを定義することによって構築することができます。DSL Toolkitでメタモデルを定義すると、モデルにアクセスするためのライブラリが自動的に生成されます。このライブラリを利用することにより、モデルエディタを使って描いたモデルの記述内容を全てプログラマブルに参照することができます。モデルの内容を参照するライブラリは、メタモデルの定義のときに指定した、名前空間で定義されます。その中に、メタモデルのルートモデルのドメインクラスの名前を持つクラスが用意されています。モデルエディタを使って描いた各モデル図の内容は、このルートモデルを通じて参照することが可能です。また、メタモデル上に定義されたドメインクラスは、それぞれメタモデル上で定義されているドメインクラス名と同じ名前のクラスが、自動的に同じ名前空間で生成されています。加えて、メタモデル上で定義されたDomain RelationshipのRole名と同じ名前のプロパティがそのRole名が付いている側のドメインクラスから生成されたクラスに用意されています。例えば、前述のホワイトペーパー1で説明されている例の場合では、名前空間がFabrikam.DSL、ルートモデルがWizardUIPModelという名前になっています。このクラスには、メタモデル上で定義されている、WizardUIPModelとWizardPageElement間のEmbedding RelationshipのWizardUIPModel側に記載された”Elements”というロールに対応した、”Elements”というプロパティがあり、WizardUIPModelのオブジェクトのElementsプロパティをコールすると、WizardUIPModelオブジェクト内で定義されているWizardPageElementオブジェクトのリストを取り出すことができます。これらメタモデル定義から生成されるクラス群は、DSL DesignerでSolutionを作成した際にそのSolution内に用意されるDslプロジェクトのGeneratedCodeフォルダー内に、密かに生成されているDomainClasses.csで定義されています。 では、以上を踏まえ、WizardUIPのモデルエディタで作成されたモデルファイルを読み込み、モデルの記述内容を取り出すサンプルコードを紹介しましょう。モデルファイルの名前を、ModelFile.uipと仮定します。 StringBuffer buf = new StringBuffer();using (Store store = new Store()){    store.LoadDomainModels(        typeof(CoreDesignSurfaceDomainModel),        typeof(WizardUIP)));    using (Transaction t = store.TransactionManager.BeginTransaction(“LoadModel”))    {        WizardUIPModel root = WizardUIPSerializationHelper.Instance.LoadModel(store,”ModelFile.uip”,null,null);        buf.AppendLine(“**** WizardUIP Model Contents ****”);        foreach (…

0

Try Software Factories on ET Robot Contest!

ETロボコンは、Lego Pathfinderロボットを使って、あらかじめ決められた黒線で描かれたコースを疾走し、走行タイム、課題のクリアを競います。それら実技に加え、走行を制御するソフトウェアの設計内容も審査の対象になるコンテストです。 ソフトウェアはGNUをLego Mindstorms向けに移植した、brickOSというOS上で開発します。コンパイラも当然GNUのコンパイラです。通常は、viやemacs、eclipseなどを使って開発するかとは思いますが、日頃使っているVisual Studioを使いたい方もいるでしょう。加えて、マイクロソフトが提供する、Software Factories実現を支援するDSL DesignerやGAT/GAXといったツール群は、もちろん、Visual Studio 2005で動作します。他にも、各プロジェクトの事情に合わせて、プロジェクトテンプレートのカスタマイズを行いたい開発者もいるでしょう。 ここでは、プロジェクトテンプレートのカスタマイズ方法の説明を兼ねて、brickOS向けクロスコンパイル環境を作り、今後のSoftware Factoriesの様々なプラクティス導入への準備をしましょう。 事前準備:Visual Studio 2005がインストールされていない場合、以下のどちらかをインストールしてください。 Visual Studio 2005 VC# Express Edition Visual Studio 2005 Professional Edition以上(評価版でも可) Cygwin、BrickOSもインストールしてください。インストール方法は、ETロボコン事務局から公開されているドキュメントを見るか、インターネット上で調べてみてください。 説明を簡単にするために、サンプルを作成しました。 URL※注)あくまでもサンプルです。各自の責任において使用してください。※注)中身は非常に簡単なので、後述する方法で自作も可能ですので、是非トライしてみてください。 このサンプルでは、.NET Frameworkのユーティリティも使うので、.NET Framework SDKもインストールする必要があります。 ZIPファイルをダウンロードし、解凍してください。以下の二つのファイルが入っています。 BrickOSConfigSetupDialogInstaller.msi legobrickosapptemplate.vsi 最初のファイルは、Visual Studio上で、プロジェクトを生成する際に、cygwinやbrickOSなどの場所を指定するためのダイアログ表示用クラスをインストールします。二番目のファイルは、Visual Studioにプロジェクトテンプレートをインストールするためのファイルです。拡張子のvsiをzipに変えて解凍すると中に入っているファイルを見ることができます。それぞれダブルクリックしてインストールしてください。プロジェクトテンプレートは、各ユーザーの設定が格納されている %user%\My Document\Visual Studio 2005\Templates\ProjectTemplate の下に、vsiファイルに入っているzipファイルがコピーされます。名前はLegoBrickOSApp.zipです。2つのファイルのインストールが終わったら、Visual Studioを起動してください。 Visual Studioのメニューから、ファイル→新規作成→プロジェクト…を選択し、”新しいプロジェクト”ダイアログが表示されます。テンプレートの項目の”マイテンプレート”のところに、”LegoBrickOSApp”というテンプレートが表示されます。そのテンプレートを選択し、適切なプロジェクト名を付けて、プロジェクトを生成してください。 すると、以下のダイアログが表示されます。   cygwinがインストールされているディレクトリと、brickOSがインストールされているディレクトリを入力してください。テキストボックスの右隣のボタンをクリックすると、グラフィカルにフォルダーを選択できます。一通り設定したらOKボタンをクリックします。インストールしたファイル群は、サンプルのため、署名等がなされていないため、現状では以下のアラートが表示されます。 図のように、ラジオボタンを選択し、OKボタンをクリックしてください。 そうすると、srcフォルダに4つのファイルが格納されたプロジェクトが出来上がります。srcフォルダー以下にソースファイル群を作成します。メニューから、ビルド→プロジェクトのビルドを選択すると、コンパイルが開始され、Lego Mindstormsにダウンロード可能なProject.lxファイルが、binフォルダー直下に作成されます。それを、brickOSのdllツールでダウンロードしてください。※現状のバージョンでは、残念ながら、コンパイル時のエラーが表示されません。Visual Studioのコマンドプロンプトから、プロジェクトが存在するディレクトリで以下のコマンドを実行してください。エラーが表示されます。ここは今後の改善ポイントですねぇ。 %ProjectDir%> msbuild…

0

Software Factories Initiative for Embedded

皆さん、Software Factoriesをご存じですか?Software Factoriesは、マイクロソフトが2005年に提唱した次世代開発方法論です。Software Factoriesは、ソフトウェアプロダクトライン開発の一種で、モデル駆動型開発、アーキテクチャフレームワーク、ガイダンスオートメーションこれまで、ITシステムの開発向けにSoftware Factories普及啓発活動がおこなわれてきましたが、昨年の12月から、組込み向けにSoftware Factoriesを適用する活動を進めています。 日本は組込みソフトウェア開発のメッカであり、組込みソフトウェア開発に関する膨大なノウハウが蓄積されています。また、本活動は日本独自の活動であり、日本の知見者の皆さんと一緒に、組込みへのSoftware Factories適用方法を検討、実践し、世界に向けて発信していきたいと考えております。この活動を通じて、組込みソフトウェア開発の生産性と品質の向上、及び、組込みソフトウェア技術者の地位向上の一助になればと思っております。 Software Factoriesに関する情報は、http://www.microsoft.com/japan/msdn/architecture/sf/default.aspxをご覧ください。このブログでも、詳細や組込み向けの説明を行っていく予定です。 組込みソフトウェア開発へのSoftware Factories適用方法は、MAAC(Microsoft Architect Advisory Council) 組込みWGという集まりで、ソフトウェアプロダクトラインや、モデル駆動型開発、開発プロセス等の、知見者や実践されている方々の協力の下、進めています。活動に興味のある方は、ご一報ください。 組込みソフトウェアは、携帯電話などのモバイル端末から、家電、セットトップボックス、カラオケ、POS、自動車、OA機器、FA機器、・・・など非常に多岐にわたっています。将来的には、各事業領域のSoftware Factoryを考えていく予定ですが、まずは”シンプルな例題で実践し公開可能な事例を作ろう”ということで、今年はETロボコン2007(http://www.etrobo.jp)の場を借りて、Software Factoriesを実践しています。ETロボコン2007には、マイクロソフトからも1チーム参加の予定です。活動の経過や、結果は順次公開していく予定ですので、乞うご期待。 実は・・・私はETロボコン2007のモデル部門の審査員でもあります。地区大会は全て現地に行きますので、会場ではお気軽に声をおかけくださいませ。    

0