1 YFIOs简介
YFIOs就是YFSoft I/OServer的简称,在物联网、云计算时代,一切以数据为中心,不同的传感器通过不同的方式接入网络,通过云计算的方式为不同的终端用户提供服务。
为了适应这种新形势的发展,加速和降低各种传感器、智能模块的入网代价,以微软成熟的.NET Micro Framework系统为基础,打造出物联网时代的轻量级嵌入式组态系统 —— YFIOs。
详情请参见《YFIOs技术白皮书》。
2 驱动开发
2.1 YFIOs SDK安装
请参见文档《YFIOs安装指南》。
2.2新建驱动项目
选择YFIOs Driver模板进行驱动开发。
2.3代码模板
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软件。
在驱动列表中,可以看到刚编写的驱动信息(如上图所示)。
2.5.2 添加用户设备
单击树形控件 中的【用户设备】项,双击列表控件中的【新建…】选项,则弹出用户设备窗体。
我们选择串口驱动下的VirtualDevice驱动,也就是我们刚编写的那个驱动。
我们命名为“HelloDevice”,串口号我们选择COM3,然后保存。
2.5.3 配置项目属性
单击树形控件中的【项目属性】选项,双击列表控件中配置数据,则弹出如下界面,默认情况下,用户调试、普通信息、系统调试信息选项是没有勾选的。
我们勾选所有的选项。
2.5.4 项目部署调试
保存项目后,单击【调试】->【部署】菜单(或单击部署图标)进行项目部署。
2.5.5 项目运行
单击【调试】->【启动】菜单(或单击启动图标)让项目开始运行。
从信息输出窗口中,可以看到,驱动已经正确加载,也输出了 Hello World!!!
3 驱动调试
虽然编写的驱动可以在YFIOsManager通过信息输出的方式进行调试,但是如果驱动比较复杂,这种调试方法还是不太理想。
因此我们构建一个TinyIOsEmulator,在Visual Studio2010环境里进行驱动调试。
由于YFSoft.DriverTest是一个标准的.NET MicroFramework程序,所以调试的时候,需要把系统设置为.NETMicro Framework系统模式。
确保PF9和GND连接。
3.1 构建TinyIOsEmulator
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 单步调试
从上图可以看出,在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://www.cnblogs.com/yefanqiu
4、叶帆科技
5、物联网中间件技术开发论坛