zoukankan      html  css  js  c++  java
  • 【物联网中间件平台04】YFIOs驱动开发指南

    文档名称

    YFIOs驱动开发指南

    版本

    V1.0.0

    作者

    叶帆

    日期

    2012-12-25

    历史

    文档列表

    http://www.sky-walker.com.cn/MFRelease/YF_document_list.pdf

    1 YFIOs简介

    YFIOs就是YFSoft I/O Server的简称,在物联网、云计算时代,一切以数据为中心,不同的传感器通过不同的方式接入网络,通过云计算的方式为不同的终端用户提供服务。

    为了适应这种新形势的发展,加速和降低各种传感器、智能模块的入网代价,以微软成熟的.NET Micro Framework系统为基础,打造出物联网时代的轻量级嵌入式组态系统 —— YFIOs

    详情请参见《YFIOs技术白皮书》。

    2 驱动开发

    2.1 YFIOs SDK安装

    请参见文档《YFIOs安装指南》。

    2.2新建驱动项目

     

    选择YFIOs Driver模板进行驱动开发。

    2.3代码模板

      

     

       public DriverInfo GetDriverInfo()
    
        {
    
            DriverInfo info = 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";
    
            return info;
    
        }

    代码模板会自动生成如上代码。

    这是一个虚拟串口设备的模板,可以根据实际传感器的特点和接口进行相关参数配置。

    2.4 Hello world

    我们在OnRun函数里,添加如下代码:

     public int OnRun(Device dv, IOperate op, object arg)

     {

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

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

            return 0;

     }

    2.5 驱动测试

    2.5.1 驱动编译加载

    编译上述代码,把YFIOsDriver1\bin\Debug\le目录下的YFIOsDriver1.dll和YFIOsDriver1.pe文件拷贝到C:\Program Files (x86)\YFIOs\YFIOsManager\Driver目录。

    然后运行YFIOsManager.exe软件。

     

    在驱动列表中,可以看到刚编写的驱动信息(如上图所示)。

    2.5.2 添加用户设备

     

    单击树形控件 中的【用户设备】项,双击列表控件中的【新建…】选项,则弹出用户设备窗体。

    我们选择串口驱动下的VirtualDevice驱动,也就是我们刚编写的那个驱动。

    我们命名为“HelloDevice”,串口号我们选择COM3,然后保存。

    2.5.3 配置项目属性

    单击树形控件中的【项目属性】选项,双击列表控件中配置数据,则弹出如下界面,默认情况下,用户调试、普通信息、系统调试信息选项是没有勾选的。

     

    我们勾选所有的选项。

    2.5.4 项目部署调试

    保存项目后,单击【调试】->【部署】菜单(或单击部署图标)进行项目部署。

     

    2.5.5 项目运行

    单击【调试】->【启动】菜单(或单击启动图标)让项目开始运行。

     

     从信息输出窗口中,可以看到,驱动已经正确加载,也输出了 Hello World!!!

    3 驱动调试

    虽然编写的驱动可以在YFIOsManager通过信息输出的方式进行调试,但是如果驱动比较复杂,这种调试方法还是不太理想。

    因此我们构建一个TinyIOsEmulator,在Visual Studio 2010环境里进行驱动调试。

    由于YFSoft.DriverTest是一个标准的.NET Micro Framework程序,所以调试的时候,需要把系统设置为.NET Micro Framework系统模式。

     

    确保PF9和GND连接。

    3.1 构建TinyIOsEmulator

     

    TinyIOsEmulator项目里需要引用我们刚刚创建的驱动。

    测试的主要代码如下:

        public class YFIOsEmulator
    
        {
    
            YFIOS ios = new YFIOS();
    
            Device device = new Device();
    
            public void Run()
    
            {
    
                IDriver md = 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);
    
                return new YFIOsDriver1();
    
            }
    
     }

    3.2 单步调试

     

    从上图可以看出,在Visual Studio开发环境里,我们已经可以进行调试了,并且调试窗口也输出了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

     

    YFIOs/YFHMI免费试用

    从2012-12-21起YFIOs和YFHMI将开展为期半年的免费试用活动,符合申请条件的用户,将依次获取YFIOs和YFHMI的试用机会。

    申请表下载:http://sky-walker.com.cn/MFRelease/document/yfios_yfhmi_application.doc

  • 相关阅读:
    史上最走心的Webpack4.0中级教程——配置之外你应该知道事
    javascript基础修炼(11)——DOM-DIFF的实现
    一统江湖的大前端(7)React.js-从开发者到工程师
    express中间件系统的基本实现
    js中如何在不影响既有事件监听的前提下新增监听器
    Zabbix的应用(6)----常见错误
    Ansible初级应用
    一个好用的小工具 thefuck
    使用python读取word文件里的表格信息
    01010_Eclipse中项目的jar包导入与导出
  • 原文地址:https://www.cnblogs.com/yefanqiu/p/2843947.html
Copyright © 2011-2022 走看看