マニアックな話題続きで申し訳ありませんが、、、
以前書いた「LEGO MINDSTORMS NXT グレーブック」という本の中でfantomをDLLにして、HSPから呼び出すという方法を紹介していました。
あの時はDLLを作成するために、MSの「Visual C++ 2005 Express Edition」 を使っていたのですが、今では「2005」ではなく「2008」という最新版に置き換わっています。そこで、2008でもちゃんと動くのか確認してみました(結論から言うと問題なくできます)。
こちらはインストールの様子です。
「vcsetup.exe」を実行すると、WEB経由でインストールしてくれます。
.Net関連のまったく不要なファイルまで大量に入れてくれるので、とんでもなく時間がかかります。Visual CやVisual BASICがタダで手に入るなんて、昔を比べると夢のような話です。
2005の時は、プラットフォームSDKというものを追加でインストールして、裏ワザ的にDLLが作れるように細工を施していましたが(本でもその手順を紹介しました)、2008からは不要になったようです。該当するファイルを見たところ、すでにライブラリが登録されていました。
これで一安心かと思ったんですが、新規作成-プロジェクトでDLLを選択したら謎のエラーが出てしまいました。
自分の場合、さらにWindows SDKをインストールしてみたら、先ほどの謎のエラーが消えました。まったく不要なファイルがさらに大量に入ってしまいました。結局、原因はよくわかりませんでした。
2005で作成したプロジェクトは専用のウィザードで2008用に変換します。
そうしてできたのがこちらのファイルです。
ついでといっては何ですが、DLLにファイルの読み書き用の関数を追加してみました。
これでNXT内にパソコンからファイルを送信したり、受信したりすることができます。
DLLの呼び出し側(パソコン側)のサンプルプログラムです。HSPで作成してみました。実行すると、program.txtという名前のテキストファイルがNXTインテリジェントブロックに転送されます。
dlltest.hspをダウンロード
受信側(NXT側)のテキストファイルを見るためのプログラムです。
Nxcで作成してみました。NxcをプログラムするためにはBricx Command Centerの最新版をサイトから入手してください(無料です)。
list.nxcをダウンロード
↓実行後の様子です。テキストファイルをNXTの液晶画面で見ることができました。