2016年

3月

15日

GR-PEACH GR Family 用 ライブラリをVisual Studio 2015の参照(DLL)に追加する方法

このページは、下記の参考ページを元に掲載しています。ご了承願います。

 

GR-PEACH (Visual Studio 2015 C#) の便利な「GR Family 用ライブラリ」が出て来たので使用しようと思ったが「Visual Studio 2015」への参照(DLL)追加方法が良く分からなかったのでまとめました。

GR Family 用ライブラリの紹介

GrFamilyLibrary
.NET Micro Framework Class Library for GR Family Boards
このソリューションは、GRファミリーの .NET Micro Framework用ライブラリです。 (GR-PEACH, GR-SAKURA, センサーボード、接続可能な各種センサーデバイス)
・Peach ・・・ GR-PEACH クラス ・Sakura ・・・ GR-SAKURA クラス
・SensorBoard ・・・ PinKit のセンサーボード(温度、3軸加速度、ブロック端子台) ・NetworkUtility ・・・ 有線LAN の初期化処理 / NTPサーバーから日時同期
・AnalogSensor ・・・ アナログ入力の汎用センサークラス ・LiquidCrystal ・・・ キャラクターディスプレイクラス(HD44780 互換) ・I2CLiquidCrystal ・・・ I2C 接続のキャラクターディスプレイクラス ・Accelerometer_Adxl345 ・・・ I2C 接続の加速度センサー(ADXL345)


対象の .NET Micro Framework のバージョンは、4.3 QFE2 です。


ライブラリ(Libraryフォルダー)、およびライブラリを利用するアプリケーション(TestAppフォルダー)とも、Visual Studio 2015 でビルドできます。


ライブラリのバイナリファイルのみ必要な場合は、DLLsフォルダー内のZIPファイルを解凍することで利用可能です。 ライブラリの利用例は、TestAppフォルダー内の各プロジェクトを参照してください。

温度センサーサーミスター(TempertureTest)の「GR Family 用ライブラリ」の導入例

GR Family 用ライブラリ」の例として、温度センサーサーミスター(TempertureTest)の 「Visual Studio 2015」のソリューションエクスプローラーの参照する欄に「GrFamily.ExternalBoard.SensorBoard」と「GrFamily.MainBoard.Peach」のDLLを追加する例を解説します。ただ追加しただけでは正常にビルドが完了しなかったのでその点についてもまとめています。ビルド完了後の温度センサーで測定した測定値が出力に表示していますので参照願います。

GR ファミリー (GR-PEACH / GR-SAKURA) 用のクラスライブラリを公開されGR-PEACH とGR-SAKURA 用のライブラリも一緒に公開されています。PinKit のセンサーボードのライブラリも入っています。

詳細:「NETMF : GR ファミリー用のクラスライブラリを公開しました」ここを参照願います。

 

GrFamilyLibraryのダウンロード

GrFamilyLibraryは、GitHubからダウンロードします。このライブラリーを使用して説明しています。

https://github.com/netmf-lib-grfamily/GrFamilyLibrary

ダウンロードした「GrFamilyLibrary-master」を解凍して展開しておきます。

GrFamilyLibrary-maste --> TestApp --> SensorBoard --> TempertureTest --> TempertureTest.csproj プロジェクトファイルをクリックします。クリックするとVisual Studio 2015が起動します。

Visual Studio 2015が開いた時のソリューションエクスプローラーの状態です。

C#のソースコードを参照すると「using GrFamily.ExternalBoard;」と「using GrFamily.MainBoard;」が赤いラインエラー表示になっています。

これは、GrFamily.ExternalBoard」,GrFamily.MainBoard」DLLの参照が抜けているためです。

ビルドするには、「GrFamily.ExternalBoard」,GrFamily.MainBoard」の参照を追加する必要があります。[参照]を右クリックし参照の[追加(R)...]を選択クリック

参照をクリックします。

解凍したDLLフォルダーを開きます。

2つの「GrFamily.ExternalBoard.SensorBoard.dll」,「GrFamily.MainBoard.Peach.dll」を追加します。

参照に2つの「GrFamily.ExternalBoard.SensorBoard.dll」,「GrFamily.MainBoard.Peach.dll」が追加されました。

2つの"SensorBoard"," Peach"プロジェクトが参照出来ないと警告が表示されていますが、そのまま一旦全て保存します。

メニューからファイル(F)をクリックし全て保存(L)をクリックします。

ファイル名はそのままで保存(S)をクリックします。

「TempertureTest」のソリューションが出来ていますのでクリックしてVisual Studio 2015を起動させます

TempertureTestが開いた状態です。

2つの"SensorBoard"," Peach"プロジェクトが参照出来ないと警告が表示されていますが、そのままビルドしてみます。

ビルドですが、デフォルトの設定だとエミュレータが起動するようになっているので、プロジェクトのプロパティから GR-PEACH を使うように変更しておきます。

ソリュション名「TempertureTest」マウスで右クリックすると一覧が出ますので一番下のプロパティ(R)をクリックします。

,NET MicroFramworkをクリックします。

正常に GR-PEACH が認識されている場合、TransportをUSB に選択すると GR-PEACH に切り替わるはずです。開始ボタンをクリックしビルドします。

エラー表示が出ビルド出来ませんでした。2つの"SensorBoard"," Peach"の警告エラーが原因でした。

2つのプロジェクト"SensorBoard"," Peach"を削除します。

警告エラーが無い状態になりました。

再度、開始ボタンをクリックしビルドします。

ビルドが始まり出力に温度が表示されます。

出力に温度が表示されていっています。これでビルド完了です。

Visual Studio 2015 C# のソース記述

GR_PEACH_LedColor

 

using System;
using System.Threading;
using GrFamily.ExternalBoard;
using GrFamily.MainBoard;
using Microsoft.SPOT;

namespace TemperatureTest
{
    public class Program
    {
        private Peach _peach;
        private Temperature _temperature;

        private Timer _testTimer = null;

        public static void Main()
        {
            var prog = new Program();
            prog.Run();
        }
        private void Run()
        {
            _peach = new Peach();
            _peach.Button.ButtonPressed += Button_ButtonPressed;

            _temperature = (new SensorBoard()).Temperature;
            _temperature.MeasurementComplete += _temperature_MeasurementComplete;
            _temperature.Interval = 1000;

            _testTimer = new Timer(PollingMeasure, null, new TimeSpan(0, 0, 1), new TimeSpan(0, 0, 1));

            while (true) { }
        }

        private int _testCase = 0;

        private void Button_ButtonPressed(Button sender, Button.ButtonState state)
        {
            _testCase = (_testCase + 1) % 2;

            switch (_testCase)
            {
                case 0:
                    _temperature.StopTakingMeasurements();
                    _testTimer.Change(new TimeSpan(0, 0, 1), new TimeSpan(0, 0, 1));
                    break;
                default:
                    _testTimer.Change(Timeout.Infinite, Timeout.Infinite);
                    _temperature.StartTakingMeasurements();
                    break;
            }
        }

        private void PollingMeasure(object state)
        {
            Debug.Print("Polling : " + _temperature.TakeMeasurement().ToString());
        }

        private void _temperature_MeasurementComplete(Temperature sender, Temperature.MeasurementCompleteEventArgs e)
        {
            Debug.Print("Event : " + e.Temperature.ToString());
        }
    }
}

 

目 次