.NET Compact Framework 3.5

PDAプログラミングメモ、ということで。windows mobile, pocket pc 関係に .net compact framework を入れて通信プログラミングする。

windows ce を c 言語でがりがり組んでもいいんだけど「遊び」なのだから「お手軽」なほうがよい。となれば、できるならば .net compact framework を使ったほうが良い。当然、PDA に .net のランタイムが入っていないとダメなんだが、このあたりの資料がややこしい。

PDA を選定するにあたって、以下を調べる必要がある。

 * OS: windows mobile/windows ce/windows ce .net など様々
 * CPU: arm/x86/sh3 など .net compact framework のランタイムを入れるときの対象となる。
 * 内蔵メモリ容量

PDA に導入する .net compact framework と様々。
また、OS のバージョンによっては、既に ROM として .net が入っている。

現在手元にある loox/flx3aw は os が pocket pc 2003 なので .net compact framework 1.0 が入っている(はず)なのだが、試しに 3.5 の再頒布可能パッケージを利用してバージョンアップしてみると、

1. .NET Compact Framework 3.5 再頒布可能パッケージ をダウンロード
http://www.microsoft.com/downloads/details.aspx?FamilyID=e3821449-3c6b-42f1-9fd9-0041345b3385&DisplayLang=ja
2. vista にインストールする。
3. C:\Program Files\Microsoft.NET\SDK\CompactFramework\ に v2.0, v3.5 のフォルダができる。
# 既に Visual Studio 2008 pro が入っている場合は、ディレクトリがある。

このフォルダの C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\ 内にある CABファイル(*.cab)が、PDA にインストールするファイルになる。
PDA にインストールするときは、PDA でこの CAB ファイルをファイルエクスプローラで開いてダブルクリックする。すると自動(勝手)にインストールされる。非常にお手軽。

また ActiveSync or Windows Mobile デバイスセンターで同期を取らなければならないのか?と言えば、「そうではない」。単純に PC から CAB ファイルを CF メモリにコピーした後、PDA に差し込みダブルクリックすれば OK。中古で PDA を買うと、クレードルが付いていない時が多いので、この方法でやるとよい。

CAB ファイルの一覧

NETCFv35.ppc.armv4.cab
NETCFv35.wce.armv4.cab
NETCFv35.wce.mipsii.cab
NETCFv35.wce.mipsiv.cab
NETCFv35.wce.sh4.cab
NETCFv35.wce.x86.cab
NETCFv35.wm.armv4i.cab

os 関係
ppc: Pocket PC 向け
wce: Windows CE 向け(と思う)
wm:  Windows Mobilie 向け

cpu 関係
armv4: ARM
mipsii, mipsiv: MIPS
sh4: SH4
x86: 86系
の組み合わせで、PDA に合った cab を入れる。

インストールすると動きをみている限り \winodws の直下にコピーしている。ファイルエクスプローラを使っても該当する DLL は見られない。

cab の中には _setup.xml があって、インストールする DLL が羅列してあります。

おそらく

CustomMarshalers.dll
Microsoft.ServiceModel.Channels.Mail.dll
Microsoft.ServiceModel.Channels.Mail.WindowsMobile.dll
Microsoft.VisualBasic.dll
Microsoft.Windowsce.Forms.dll
Microsoft.WindowsMobile.DirectX.dll
mscorlib.dll
System.Core.dll
System.Data.DataSetExtensions.dll
System.Data.dll
System.dll
System.Drawing.dll
System.Messaging.dll
System.Net.Irda.dll
System.Runtime.Serialization.dll
System.ServiceModel.dll
System.Web.Services.dll
System.Windows.Forms.dll
System.Xml.dll
System.Xml.Linq.dll

合計 1.5MB ぐらい

実際に .net framework v3.5 をインストールするとデータ記憶容量が 4MB 弱消費されます。
まあ、多めのメモリが積んであれば(flx3awは128MBなので誤差に近い?)、それほど負担ではないでしょう。
で、.net framework v3.5 をインストールした後、

1. visual studio 2008 pro を使って「SmartDevice」プロジェクトを作成
2. Release モードでビルド
3. Release モードの exe を CF メモリへコピー
4. PDA で CF メモリから exe を起動

すると、あっさり .net アプリケーションが動きます。

おまけに、先の .net compact framework で作成した exe を PC でダブルクリックします。
すると「.net compact ってエミュレータ上でしか動かないのでは?」に反して、あっさり、vista 上で動いてしまいます。なるほど。PDA 特有の操作や他アプリケーションの連携の場合にはエミュレータを使わないといけないのですが、単体で動くアプリケーションを作る場合ではこれで十分かも。考えてみれば、pc で動かした場合は exe は通常の .net framework 上で動くのかもしれませんね。変にデバイスに依存しない作りであれば pc 上でデバッグ、のほうが楽だと思います。

<エミュレータ上>

エミュレーターで

<PCで直接>

PCで直接起動

■他の参照文献

HPC「フツー」環境構築「手順」 software基本編
http://www.asahi-net.or.jp/~sb6m-uek/mobile/begin720_2.htm

カテゴリー: PDA パーマリンク