ホーム 院内・スタッフ紹介 診療時間・アクセス フォトギャラリー
0574-27-6355

院長のメモ帖

2016年5月19日 木曜日

Arduino開発はVisualStudioとVisualMicroで決まり

最近、狂犬病ワクチンやフィラリア、病院のすぐ横に交差点が新設されたりなんかしたおかげで、ずいぶん忙しくなってますが、時間を見つけてはArduino開発にいそしんでおります。

Arduinoは、標準でフリーの開発環境Arduino IDEを提供していますが、よくできているとはいえしょせん非商用IDE。Visual Studioの洗練度、機能性には及ぶべきもありません。
なんといっても私はVisual Basicの時代からずっとMicrosoftの開発環境におせわになっており、良くも悪くもVisual Studioに染まっています。
一時期Android開発をしようかと思ってEclipseやAndroidStudioなんかも試用してみましたが、全然開発できませんでした...

しかし、Arduino開発には、Visual MicroというVisual Studio用の拡張モジュールが存在しており、開発過程のほぼすべてをVisual Studio上でこなすことができます。
これは、革命的にマイコン開発を効率化してくれます。しかも、フリー版が存在するので無料です。

開発環境をセットアップするのも非常に簡単です。

まず、Arduino IDEをインストール、セットアップします。Visual MicroそのものにはArduino用SDKとか入っておらず、Arduino IDEを参照する形をとっています。
逆に言えば、Arduino IDEで対応するハードウェアやライブラリは、すべてVisual Microから参照できるのでほぼ100%の互換性があります。

つづいて、Visual Studioがなければこれをインストール。そしてVisual Studioの「ツール」-「拡張機能と更新」からVisual Microを検索してインストールするだけです。

私はArduino開発用のソリューションを一つ作って、ここで複数のプロジェクトを立ち上げ開発しています。
ここには当然.NETのC#プロジェクトとかも入れることができますので、たとえばPCとArduinoを連携させるようなプログラムもワンストップで構築できます。
H8のときは、日立のIDEを使ってましてそれなりによくできたIDEだとは思ったのですが、やっぱり慣れる手間もかかりますし、しばらく開発してなくて戻ってきたときに流儀を忘れていてコツをつかみなおすのに時間を取られたりして、肝心の開発が全然進まなかったりしてましたが、これからはそのような心配とも無縁になります。
そしてなにより、Team Foundation Onlineを使えるのがうれしいです。

もう、WindowsからArduino開発するなら、Visual Microで決まりですね!

投稿者 美濃加茂市のIT獣医師 近藤 博 | 記事URL | コメント(0)

2016年5月15日 日曜日

C#プログラマへのC/C++の罠

ずいぶん、前回の記事から時間が開いてしまいましたが、除湿器の方は一応の完成をしていて、運用状態に持ち込めています。
この件についても製作記事をまとめたいところですが、今回はちょっと違う切り口で...

Arduinoの開発はVisual StudioにVisual Microを組み込んでC/C++で開発していますが、C#との違いになれるまでずいぶんあほな間違いを犯しました。
数年前にH8Tinyで開発したときにある程度C++をマスターしたつもりでしたがもうすっかり忘れてました。
CもMS-DOSの時代はポインターを使ったプログラムもばりばり書いてたはずですが、やっぱり結構忘れています...

そう、プログラミング言語も慣れが重要です。どっぷりC#に浸かりきってしまい初心者なバグを連発しています。

まず、最初にやらかしたのはinclude文、というかヘッダファイルの書き方。CPPとhの使い分けが全然思い出せませんでした。
変数の宣言の先頭にexternをつけて、headに記載し、どこか一か所のCPPで実体を定義するという、C時代なら当たり前にやっていたところからつまづきました。
あらためて、1か所で定義すればOKなC#のありがたみを感じました。

それから、アクセス修飾子にinternalがない!
これは、C#にはあるモジュールの概念がないからどうしようもないのですが、internal classを作れないと、外からはいじらせたくないけど関連するクラス間のデーター共有のためのローカルクラスが作れない...
まあ、気にせずにグローバルに定義するとか、名前空間をうまく利用すればいいのでしょうが...

それからforeach構文に相当する、for( : )構文。こんなの昔なかったけど、CPP2011から使えるようになったんですね。とてもありがたいです。
でも、なんでこんな構文なんだろう。JavaやC#にあわせて素直にforeachにすればいいと思うんですが、キーワードを極力増やさないためなんでしょうか。

逆にC#にはなくて、便利だと思った機能の筆頭に関数内のstatic変数。
C#だとclass内のprivateフィールドで対応するしかないですが、特定の関数でしか使わない変数をクラス全体で共有しなくちゃならないのは、スコープがでかすぎます。

他にもいろいろ躓いたり頷いたりしてますが、順調にarduino開発にのめりこんでいます。
前述の除湿器のほかにも、検査キット用タイマー(キッチンタイマーみたいなものですが、あらかじめ院内で使う検査キットの時間をプリセットしてある)も作って、フィラリア検査の効率化に寄与しております。




投稿者 美濃加茂市のIT獣医師 近藤 博 | 記事URL | コメント(0)