.NET Gadgeteer Tips

.NET Micro Frameowkrk や .NET Gadgeteer対応ボードを実際に使ったハンズオン、頻繁にやっていますが、実施の際、色々とひっかかる点があります。読者の中にも、.NET Gadgeteerボードを購入して、さぁやろう!!と思ったら、「あれ、動かないんですけど…」と止まっている人も何人かいるかと思います。そういう場合は、GHI Electronics社の、Forumに問い合わせたりするのが手っ取り早いのですが、英語は敷居が高いなぁ…と云う方も多いでしょう?

そんなわけで、GHI Electronics社製のFEZシリーズを使っているときに、よく見かける、引っ掛かりポイントと対処法をここにまとめておきます。

その1)ビルドの際、MMP : error MMP0000: 0x80131700 というエラーが発生。
.NET Micro Frameworkのツールが、.NET Framework v3.5ベースで作られていて、開発環境PCに.NET Framework v3.5のランタイムがインストールされていない場合に発生します。
https://netmf.codeplex.com/workitem/221 の、MetaDataProcessor.exe.config をダウンロードし、このファイル名で、以下のフォルダーに格納すれば解決します。

c:¥Program Files(x86)¥Microsoft .NET Micro Framework¥v4.2¥Tools

その2)ボードをUSBで接続した状態で、F5、もしくは、デバッグ開始した際、Iteration 0、・・・と表示され、”Device not found or cannot be opend"になる。
GadgeteerのSDKバージョンにもよるのですが、Visual Studioが正しくボードを認識していないケースがあります。ソリューションエクスプローラーで、プロジェクトを右クリックし、”プロパティ”を選択し、プロパティページで、”.NET Micro Framework”タブを選択します。

Transportを、一旦”USB”から”Emulator”に変更し、再度、”Emulator”から”USB”に変更します。念のため、Deviceもコンボボックスでボードを選択しなおします。これで大概、上手くいきます。
二枚同時にボードをつなぐとうまくいかないので、そんな時は、開発用PCをボード数だけ用意してください。

その3)仮想マシンで動作している開発環境でボードが認識されない
例えば、MAC OS上で、Windowsを仮想マシン上で動かし、Visual Studioで開発しているような場合です。仮想マシンの設定で、USBで接続されているボードを有効になるようUSBを設定してください。この環境でも、.NET Gadgeteerの開発は可能です。

その4)Visual StudioのインストールしたSDKが想定するボードのファームウェアと、ボードのファームウェアのバージョンが一致しない。
デバッグ実行した時に、アプリをボードに配置する際、ボードのファームウェアのバージョンが古い、という、メッセージが、表示されることがあります。新しいSDKをインストールした時などです。そんな時は、

  • Windows 8以降
    検索チャームで、”FEZConfig”と入力し、このアプリを起動
  • Windows 7以前
    スタートボタンから、FEZConfigを起動

して、ボードをUSBで接続します。

右上のDeviceのコンボボックスからUSBを選択し、接続されているボードを選択します。後は、左側の”Firmware Updater”ボタンをクリックすれば、ボードのファームウェアがアップデートされます。

その5) ツールボックスに、SEEED社製の周辺ボードが表示されない。
ずっと前から.NET Gadgeteerボードを購入していて、既にいろんな周辺ボードを購入しているマニアで、最新のSDKにアップデートしたらSEEED社製のボードがツールボックスから消えてしまった!!とお嘆きの方、最新のSDKをインストールした状態で、

https://www.ghielectronics.com/support/netmf/sdk/11/netmf-and-gadgeteer-package-2014-r1

から、SDKをダウンロードして、ZIPファイルを解凍し、Installation Filesフォルダーに格納されている、”Seeed NET Gadgeteer SDK v4.2.exe"を実行してください。ツールボックスに、無事昔からある周辺ボード類が追加されます。

ま、こんなところでしょうか。

 2014/12/18追加事項ということで。

その6) 複数のFEZ Spiderボードを同時にネットワークにつなぐとき。

実は物理アドレスが出荷時、全て同じなので、同一ネットワークに複数同時につなぐと、IPが取れなかったり、変な挙動をします。そんなときは、(本来ならMFDeployを使うべきなのでしょうが…)、以下を試してみてください。

Gadgeteerプロジェクトを一つ作ります。Program.csファイルのProgramクラスのProgramStarted()メソッドの冒頭に、以下のコードを加えて物理アドレスを更新します。勿論、全てのデバイスの物理アドレスが別になるようにルールを決めて更新してください。

ethernetJ11D.NetworkInterface.PhysicalAddress = new byte[] { 0, 33, 3, 0, 2, 1 };   // ※斜体で記載の数字は0-254までの6個の整数値で接続するネット上で一意になるように決める

一度実行すればずっと覚えてくれます。毎回やる必要はありません。今現在の物理アドレスを確認したい場合は、次に紹介するMFDeployというツールで、メニューの”Target”→”Configuration”→”Network”で確認可能

その7)FEZ SpiderでSSL通信をしたいがNOT SUPPORTED EXCEPTIONが発生する。

SSLのSeedが古くなっているのが原因です。”検索”で、MFDeploy というツールを探して起動します。※このツールは、C:\Program Files(x86)\Microsoft .NET Micro Framework/v4.3/Tools の下にあります。

USBでFEZ SpiderをPCに接続して、Deviceのコンボボックスで”USB”を選択すると、接続したボードの名前が表示されます。その状態で、メニューの”Target”→”Manage Device Keys”→”Update SSL Seed”を選択します。Log画面にUpdate Completedと表示されたらOKです。

その8)FEZ SpiderのIP ADRESSがDHCPで取得できない

複数のFEZ Spiderを同一のネットワークに接続している場合、MACアドレスが同じ可能性があります。MACアドレスを確認してみてください。確認、更新は、FEZ Configで行います。

Step 3で更新されます。