开发一个新设备
# 进阶
本节将在开始模块中根据现有模板添加设备的基础上,学习如何开发简单协议插件,并通过该协议插件创建设备模板。
# 项目一
# 项目需求
使用C#提供的随机数类Random,模拟物联网设备的实时数据波动情况。
可以通过随机生成指定范围内的整数、小数类型。
通过随机数的奇偶性产生布尔值。
测点上限值为35,恢复上限值为30,下限值为15,恢复下限值为18。
# 操作步骤
新建项目
在本地文件夹中创建名为GwRandomSample,并在该文件夹下新建src子文件夹。
打开Visual Studio选择创建新项目
创建类库项目,其类型为面向.NET Standard和.NET Core的项目。
将项目名称命名为GwRandomSample.STD,并将该项目保存在上述src文件夹下。
点击下一步,选择.NET 6.0版本,创建项目完成
创建入口类。
将默认创建的Class1类重命名为CEquip
重载模板方法
在解决方案资源管理器中右击项目选择管理NuGet程序包。
点击程序包源右侧的设置按钮,在弹出的对话框中点击新增按钮。
输入名称和源,点击更新和确定。
在程序包源下拉框中选择ganweisoft。
在浏览选项卡中找到GWDataCenter程序包。点击该程序包,选择版本为1.4.57,点击安装按钮。
添加GWDataCenter的命名空间引用,并继承CEquipBase类。
重写CEquipBase类提供的模板方法。
public class CEquip : CEquipBase { /// <summary> /// 初始化方法 /// </summary> /// <param name="item"></param> /// <returns></returns> public override bool init(EquipItem item) { return base.init(item); } /// <summary> ///获取数据 /// </summary> /// <param name="pEquip"></param> /// <returns></returns> public override CommunicationState GetData(CEquipBase pEquip) { return base.GetData(pEquip); } /// <summary> /// 获取遥测 /// </summary> /// <param name="r"></param> /// <returns></returns> public override bool GetYC(YcpTableRow r) { return base.GetYC(r); } /// <summary> /// 获取遥信 /// </summary> /// <param name="r"></param> /// <returns></returns> public override bool GetYX(YxpTableRow r) { return base.GetYX(r); } /// <summary> /// 设置值 /// </summary> /// <param name="MainInstruct"></param> /// <param name="MinorInstruct"></param> /// <param name="Value"></param> /// <returns></returns> public override bool SetParm(string MainInstruct, string MinorInstruct, string Value) { return base.SetParm(MainInstruct, MinorInstruct, Value); } }
修改获取遥测方法代码。
GetYC代码
/// <summary> /// 获取遥测 /// </summary> /// <param name="r"></param> /// <returns></returns> public override bool GetYC(YcpTableRow r) { var random = new Random(); switch (r.minor_instruction.ToLower()) { //随机生成整型数据 case "integer": var intResult = random.Next((int)r.yc_min, (int)r.yc_max); SetYCData(r, intResult); break; //随机生成数值 case "decimal": var dbResult = random.Next((int)r.yc_min, (int)r.yc_max - 1) + random.NextDouble(); SetYCData(r, dbResult); break; } return true; }
修改获取遥信方法代码
GetYX代码
/// <summary> /// 获取遥信 /// </summary> /// <param name="r"></param> /// <returns></returns> public override bool GetYX(YxpTableRow r) { var random = new Random(); switch (r.minor_instruction.ToLower()) { //随机生成整数,并判断是否为偶数 case "boolean": var boolResult = random.Next() % 2 == 0; SetYXData(r, boolResult); break; } return true; }
设置项目的生成目录
在解决方案资源管理器中右击项目,选择属性
设置项目的生成路径为D:\IoTCenter\dll目录。
在解决方案资源管理器中右击项目选择编辑项目文件
添加如下节点,避免生成的目录包含.net框架命名。
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
配置设备
登录物联网综合运营管理平台。
点击左侧菜单栏设备配置->模板管理。点击新增按钮
设置名称、故障信息、通讯时间参数,选择驱动文件后点击确定按钮。
配置测点信息
在左侧菜单栏点击设备配置->模板管理
在产品列表中选择随机数
点击遥测量选项卡
点击添加遥测量按钮
输入基本信息输入高级信息,点击确定按钮,完成整数遥测量的添加。
重复以上步骤添加小数遥测量。
同样的方式选择遥信量选项卡,点击添加遥信量按钮,输入基本信息
输入高级信息,点击确定按钮,完成遥信量的添加。
参考开始模块中添加设备的内容,添加随机数设备。
至此开发一个新设备的学习目标已经完成。通过解决项目的四个需求,学习了如何开发一个新设备,以及如何在管理平台中添加新的模板。
上次更新: 12/15/2022, 1:12:31 PM
← 使用APP 如何让设备运行更高效→