★【 My Biz Blog 】★

興味のあるビジネス情報を伝えていきます♪
(IoT,Azure,Windows 10, etc...)

MQTT(1)

2014-09-19 03:15:08 | IoT,M2M
CodeZineというWebサイトに、

『IoT時代を支えるプロトコル「MQTT」』という

解説記事が掲載されていました。

⇒記事はこちら



先日開催されたWindows Embedded Community Dayでも、

MVPの古賀さんが解説されていましたが、

遅ればせながら、最近ちゃんとMQTTについて理解しようと、

いろいろと記事を読み漁ってます。


ワイヤレスM2Mだと携帯通信網を使用するケースが多々あるんですが、

そこで従量制だった場合にやはり通信量が気になってくるので、

軽量なプロトコルも必要だなぁ・・・と。

いまさらですが(汗)。


まぁ、実際のところは通信頻度やらデータ圧縮やら省電力やら

いろいろと考えないといけないポイントがあって、

プロトコルだけの単純な話じゃないんですが。



Web上の記事では、Pythonを使ったデモをよく見かけますが、

Windows Embeddec Compactだと、.NETCFアプリで使える

MQTT Clientのライブラリが、CodePlexにアップされています。

⇒ページはこちら


まずはこれを動かしてみようかと思うのですが、

例によって自分はC++でアプリを組みたいので、

他プラットフォームのC++版Clientを移植してみようかな。




OSイメージのみでデバイスにEthernetダウンロード

2014-09-14 00:58:12 | Windows Embedded CE/Compact
OSイメージ(nk.bin)をPlatform BuilderがインストールされたVisual Studioで開くことができて、

ファイルやレジストリ初期値を確認することができることは

これまでの開発経験で知っていましたが、

それだけではなくて、OSイメージをEthernet経由でデバイスにダウンロードさせて

起動できることを最近知りました。

そう、OSイメージのプロジェクトファイル無しで。



もちろん、デバイス側がVisual Studio経由でのEthernetブートに対応している必要がありますが。



プロジェクトファイルといった開発用のファイルがなくても、

nk.binがあればOSイメージを確認できるっていいですね。



手順も単純で、Visual Studio起動させて、

ファイルメニューで[開く]->[プロジェクト/ソリューション]を選択して、

ファイル選択ダイアログで任意のnk.binを選択して、

開いたらTARGETメニューからAttachを選択。

以降は通常の開発でのEthenetブートの手順と同じ。


OSイメージ開発用のプロジェクトファイルがないと、

Ethernetダウンロードとかできないと思っていたので、

これはちょっと衝撃的でした(^_^;)







リモートでのデバイスアタッチに失敗した後の復帰方法

2014-09-08 00:55:16 | Windows Embedded CE/Compact
原因はわかっていませんが、とりあえず対処方法だけ・・・。


Windows Embedded Compact 2013で、

リモート(Ethernet経由)でデバイスにOSイメージを送り込む時に、

対象のデバイスからBootMeパケットを送信させている状態で

Visual Studio 2013のTARGETメニューから[Attach]を選択し、

対象デバイスを選択しますが、

その直後になぜか接続が切れ、OSイメージが転送できず、

さらにVisual Studio側で以下のメッセージが表示される場合があります。





このメッセージが出ると、Visual Studio側の操作ができません・・・。

⇒Visual Studio側で何か操作しようとすると、上記の画面が表示され、

 この画面を閉じ、再度操作しようとするとまた上記画面が出る・・・。


この現象が出たら、タスクマネージャーを起動し、

[Platform Builder Windows Embedded Compact Service Host]を

強制的に終了させてください。





終了させても、再度サービスは起動して表示されますが、

これでVisual Studio側の操作ができるようになっているはずです。

Visual Studioが操作できるようになったら、再度Attach操作を行ってみてください。

Minimal Shellのカスタマイズ(2)

2014-09-06 02:03:49 | Windows Embedded CE/Compact
以前の記事で、Minimal Shellにメニューを追加しましたが、

今回は背景画像を変える方法。


背景画像はRegistryでは変更できなくて、

Minimal Shellの画像ファイルを変更してビルドしてやる必要があります。


①ソースコードを適当なフォルダ(例えばC:\WINCE800\others)にコピーする。

 Minimal Shellのソースコードは以下のフォルダにあります。

 C:\WINCE800\public\shell\oak\MinShell


②OSイメージのプロジェクトのSubprojectにコピーしたMinimal Shellを追加

③sourcesファイルを書き換え

 ・RELEASETYPEをLOCALに変更

 ・_ISVINCPATHを追加し、必要なヘッダファイルが格納されたフォルダを指定

  $(_WINCEROOT)\public\common\sdk\incなど

 ・TARGETLIBSのLibファイルの指定を修正。

  $(_COREDLL) ⇒ $(SG_OUTPUT_ROOT)\sdk\lib\$(_CPUINDPATH)\coredll.libなど


④背景画像(desktop.bmp)を変更

 表示したい画像をdesktop.bmpという名前にして、既存のファイルを上書きするか、

 minshell.rc内のIDB_DESKTOP BITMAPに定義されているファイル名を変更するかしてください。


⑤レジストリの追加

 以下の内容がレジストリに含まれるようにしてください。

 [HKEY_LOCAL_MACHINE\init]
"Launch80"="minshell.exe"
"Depend80"=hex:1e,00, 3c, 00


⑥カタログでMinimal Shellを指定していたら、チェックを外してください。

⑦OSをビルド。


すると、たとえばこんな感じで背景画像を変更できます(笑)。











WEC2013のShell系API

2014-09-05 19:51:44 | Windows Embedded CE/Compact
WEC2013でExplorerシェルはなくなりましたが、

Shell APIは使えると思っていたのですが、

libの一部がなくなっている模様。

というか、APIは存在するけど、アプリに公開されていない・・・

というのが正しいのかも。



たとえば、「SHFileOperation」関数は

Ceshell.libをインポートすれば使えると思っていたけど、

そもそもこのCeshell.libが見当たらない。



Publicの以下のフォルダに、ソースコードは存在していました。

C:\WINCE800\public\shell\oak\shellapis\ceshell\api

なので、最終的にはどこかのDLLに含まれているとは思うんですが・・・。



含まれているDLLがわかれば、

最悪GetProcAddressで関数を動的に呼び出せるけど、

できればやりたくないなぁ・・・。



WEC7以前のソースコードを移植する際には、

こういったLibのチェックも必要ですね。