天天看點

【物聯網中間件平台-04】YFIOs驅動開發指南

【物聯網中間件平台-04】YFIOs驅動開發指南

1 YFIOs簡介

YFIOs就是YFSoft I/OServer的簡稱,在物聯網、雲計算時代,一切以資料為中心,不同的傳感器通過不同的方式接入網絡,通過雲計算的方式為不同的終端使用者提供服務。

為了适應這種新形勢的發展,加速和降低各種傳感器、智能子產品的入網代價,以微軟成熟的.NET Micro Framework系統為基礎,打造出物聯網時代的輕量級嵌入式組态系統 —— YFIOs。

詳情請參見《YFIOs技術白皮書》。

2 驅動開發

2.1 YFIOs SDK安裝

請參見文檔《YFIOs安裝指南》。

2.2建立驅動項目

【物聯網中間件平台-04】YFIOs驅動開發指南

選擇YFIOs Driver模闆進行驅動開發。

2.3代碼模闆

【物聯網中間件平台-04】YFIOs驅動開發指南
  public DriverInfo GetDriverInfo()

    {

        DriverInfoinfo = new DriverInfo();

        //驅動名稱

        info.Name = this.Name;

        //版本号

        info.Ver = "V1.0.0";

        //說明

        info.Explain = "虛拟序列槽裝置";

        //開發者

        info.Developer = "yefan";

        //開發日期

        info.Date = "2011-10-18";

        //自動化标志

        //0 bit 0 - 系統為你初始化通信接口 1 - 由驅動程式本身完成通信接口初始化

        //1 bit 0 - 無操作                  1 - 由驅動程式本身完成IO變量添加

        //2~31 bit 備用   

        info.AutoFlag = 0;

        //ConnMode-Manufacturer-DeviceType是驅動的唯一辨別

        //通信方式

        info.ConnMode = DeviceConnMode.SerialPort;

        //制造商

        info.Manufacturer = "YFSoft";

        //裝置的類型

        info.DeviceType = "VirtualDevice";

        //端口配置

        info.PortAddrExplain = "序列槽号:";

        info.PortAddrValue = "COM1|COM2|COM3|COM4|COM5|COM6|COM7|COM8";

        info.PortConfigExplain = "序列槽參數:";

        info.PortConfigValue = "9600,n,8,1";

        //裝置配置

        info.DeviceAddrExplain = "";

        info.DeviceAddrValue = "";

        info.DeviceConfigExplain = "";

        info.DeviceConfigValue = "";

        info.ItemExplain = new string[1];

        info.ItemValue = new string[1];

        info.ItemExplain[0] = "資料類型:";

        info.ItemValue[0] = "V|CommState";

        returninfo;

    }
           

代碼模闆會自動生成如上代碼。

這是一個虛拟序列槽裝置的模闆,可以根據實際傳感器的特點和接口進行相關參數配置。

2.4 Hello world

我們在OnRun函數裡,添加如下代碼:

 public int OnRun(Devicedv, IOperate op, objectarg)

 {

        if(dv.DebugMode != 0) op.Print(MessageType.SysDebug,"OnRun", this.Name);

        op.Print(MessageType.Information, "HelloWorld!!!", this.Name);

        return0;

 }
           

2.5 驅動測試

2.5.1 驅動編譯加載

編譯上述代碼,把YFIOsDriver1binDebugle目錄下的YFIOsDriver1.dll和YFIOsDriver1.pe檔案拷貝到C:Program Files (x86)YFIOsYFIOsManagerDriver目錄。

然後運作YFIOsManager.exe軟體。

【物聯網中間件平台-04】YFIOs驅動開發指南

在驅動清單中,可以看到剛編寫的驅動資訊(如上圖所示)。

2.5.2 添加使用者裝置

【物聯網中間件平台-04】YFIOs驅動開發指南

單擊樹形控件 中的【使用者裝置】項,輕按兩下清單控件中的【建立…】選項,則彈出使用者裝置窗體。

我們選擇序列槽驅動下的VirtualDevice驅動,也就是我們剛編寫的那個驅動。

我們命名為“HelloDevice”,序列槽号我們選擇COM3,然後儲存。

2.5.3 配置項目屬性

單擊樹形控件中的【項目屬性】選項,輕按兩下清單控件中配置資料,則彈出如下界面,預設情況下,使用者調試、普通資訊、系統調試資訊選項是沒有勾選的。

【物聯網中間件平台-04】YFIOs驅動開發指南

我們勾選所有的選項。

2.5.4 項目部署調試

儲存項目後,單擊【調試】->【部署】菜單(或單擊部署圖示)進行項目部署。

【物聯網中間件平台-04】YFIOs驅動開發指南

2.5.5 項目運作

單擊【調試】->【啟動】菜單(或單擊啟動圖示)讓項目開始運作。

【物聯網中間件平台-04】YFIOs驅動開發指南

從資訊輸出視窗中,可以看到,驅動已經正确加載,也輸出了 Hello World!!!

3 驅動調試

雖然編寫的驅動可以在YFIOsManager通過資訊輸出的方式進行調試,但是如果驅動比較複雜,這種調試方法還是不太理想。

是以我們建構一個TinyIOsEmulator,在Visual Studio2010環境裡進行驅動調試。

由于YFSoft.DriverTest是一個标準的.NET MicroFramework程式,是以調試的時候,需要把系統設定為.NETMicro Framework系統模式。

【物聯網中間件平台-04】YFIOs驅動開發指南

確定PF9和GND連接配接。

3.1 建構TinyIOsEmulator

【物聯網中間件平台-04】YFIOs驅動開發指南

TinyIOsEmulator項目裡需要引用我們剛剛建立的驅動。

測試的主要代碼如下:

 public class YFIOsEmulator

    {

        YFIOSios = new YFIOS();

        Devicedevice = new Device();

        public void Run()

        {

            IDrivermd = TestVirtualDevice();

            md.OnLoad(device, ios.operate, null);

            while (true)

            {

                md.OnRun(device, ios.operate, null);

                Thread.Sleep(3000);

            }

        }

 

        public IDriver TestVirtualDevice()

        {

            device.PortAddr = 1;

            device.PortConfig = "9600,n,8,1";

            device.DebugMode = 0;

            device.DeviceAddr = 0;

            device.DeviceConfig = "";

            device.IOItems = new ArrayList();

            OpenPort(device, ios.operate);

            returnnew YFIOsDriver1();

        }

 }
           

3.2 單步調試

【物聯網中間件平台-04】YFIOs驅動開發指南

從上圖可以看出,在VisualStudio開發環境裡,我們已經可以進行調試了,并且調試視窗也輸出了Hello world!!!資訊。

4額外說明

本篇文章僅僅是一篇驅動開發入門的文章,要編寫一個比較複雜的驅動,還需要深入學習各種開發知識。

高階驅動開發相關的内容如下:

(1)      驅動裝置變量設計;

(2)      驅動裝置讀寫;

(3)      驅動擴充配置面闆開發;

(4)      驅動代碼引用第三庫;

(5)      驅動YFIOBC操作;

(6)      政策直接調用驅動;

5相關資源

1、.NET Micro Framework 官方網址

http://www.microsoft.com/netmf/default.mspx

2、.NET Micro Framework官方部落格

http://blogs.msdn.com/netmfteam/

3、中文部落格

http://blog.csdn.net/yefanqiu http://www.cnblogs.com/yefanqiu

4、葉帆科技

http://www.sky-walker.com.cn/

5、物聯網中間件技術開發論壇

http://www.yfios.net

繼續閱讀