【云原生】设备云之基于FlexManager的C#SDK开发案例代码
文章目录
- 前言
- 一、C#SDK开发说明
- 1、软件版本
- 2、开发依赖
- 3、引入项目文件
- 二、示例代码
- 1、创建全局变量
- 2、创建IFBoxClientManager、ILogger实例并初始化。
- 3、开启指定盒子所有监控点数据推送
- 4、侦听盒子状态变更事件
- 5、侦听实时数据变更事件
- 6、发起请求并处理返回。
- 7、释放资源
- 总结
前言
上几篇介绍了FlexManager设备云端数据的各种操作,相信大家都有看了。本篇将就怎么使用设备云数据库的数据进行客户端应用C#SDK开发做一下讲解。当然,最基层的设备入云得基本掌握一点自动化的一些相关知识,同学们如果有兴趣可以到我的学习资料里边去学习一波,此处不做重点讲述。本文重点讲述的是基于FlexManager的C#SDK应用开发。
提示:以下是本篇文章正文内容,下面案例可供参考
一、C#SDK开发说明
1、软件版本
1、此 C# SDK 适用于 Visual Studio版本号15.3及以上。
2、此 C# SDK 中为Console程序(.NET Core)。
3、接口返回401均为token过期。需要根据refresh_token调重新登录接口刷新access_token后重试。refresh_token有效期为30天。java demo和C# SDK已处理刷新token流程和signalr重连问题。
2、开发依赖
本案例代码需要引入NuGet依赖包FBoxClientDriver、FBoxClientDriver.Contract。
例如引入FBoxClientDriver包
方式一:
在Visual Studio2017命令行中执行如下语句
PM> Install-Package FBoxClientDriver
方式二:
在Visual Studio2017中导入项目,在NuGet包库中引入依赖包名,如下图所示:
3、引入项目文件
在Visual Studio的界面中,右键单击您的解决方案。
单击添加 -> 现有项目。
在弹出的对话框中,选择C# SDK中项目文件(与),单击打开。FBoxDemo.csProgram.cs
二、示例代码
注意:
数据推送前需要先开点。
案例代码中调用C# SDK方法步骤如下:
1、创建全局变量
2、创建IFBoxClientManager、ILogger实例并初始化。
3、开启指定盒子所有监控点数据推送
4、侦听盒子状态变更事件
5、侦听实时数据变更事件
6、发起请求并处理返回。
7、释放资源
代码示例:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using FBoxClientDriver;
using FBoxClientDriver.Contract;
using FBoxClientDriver.Impl;
using Microsoft.Extensions.Logging;
namespace SDKDEMO
{
//创建配置参数
public class FBoxClientParameters
{
public static string ClientId { get; set; } = ""; //找销售申请
public static string ClientSecret { get; set; } = ""; //找销售申请
public static string UserName { get; set; } = ""; //FlexManager注册
public static string Password { get; set; } = ""; //FlexManager注册
//服务器地址,公有云不变,私有云改为对应服务器地址
public static string IdServer { get; set; } = "https://account.flexem.com/core";
public static string MainServer { get; set; } = "http://fbox360.com";
public static string HdataServer { get; set; } = "http://fbhs1.fbox360.com";
}
public class FBoxDemo : IDisposable
{
private readonly IFBoxClientManager _fbox;
private readonly ILogger<FBoxDemo> _logger;
private readonly string boxNo = "300015050009"; //以这个盒子为例
public FBoxDemo(ILoggerFactory loggerFactory)
{
//创建ICredentialProvider、FBoxClientManager对象并初始化
_logger = loggerFactory.CreateLogger<FBoxDemo>();
ICredentialProvider provider =
new DefaultCredentialProvider(FBoxClientParameters.ClientId,FBoxClientParameters.ClientSecret,FBoxClientParameters.UserName,FBoxClientParameters.Password);
_fbox = new FBoxClientManager(FBoxClientParameters.IdServer,FBoxClientParameters.MainServer,FBoxClientParameters.HdataServer,provider,Guid.NewGuid().ToString("N"), loggerFactory);
//侦听FBox状态变更事件
_fbox.BoxConnectStateChanged += _fbox_BoxConnectStateChanged;
//侦听实时数据变更事件
_fbox.DataMonitorValueChanged += _fbox_DataMonitorValueChanged;
}
private void _fbox_DataMonitorValueChanged(object sender, IList<DataMonitorValueChangedArgs> e)
{
foreach (var dmon in e)
Console.WriteLine($"dmv:{dmon.Uid}:{dmon.Value},{dmon.Status}");
}
private void _fbox_BoxConnectStateChanged(object sender, IList<BoxConnectionStateItem> e)
{
//NewState:1、2是盒子在线状态。0、3为盒子不在线状态,根据盒子状态对盒子进行开点操作
foreach (var stateItem in e)
{
Console.WriteLine($"{stateItem.BoxNo},{stateItem.NewState}");
}
}
public async Task Go()
{
try
{
//初始化SDK,内部建立signalr连接对象,Restart只需全局执行一次。
await _fbox.Restart();
//盒子掉线后,等盒子重新上线后均需要重新开点
await _fbox.StartAllDataMonitorPointsOnBox(new BoxArgs(boxNo)); //开启FBox所有监控点数据推送
//逻辑代码
//例如:
//var groups = await _fbox.GetDataMonitorGroups(new GetDMonitorGroupsArgs()
//{
// BoxNo = boxNo //盒子号
//});
//foreach (var group in groups)
//{
// Console.WriteLine(group.DataMonitorDefinitions); //监控点组下的监控点条目Id
// Console.WriteLine(group.Uid); //监控点组的Id
// Console.WriteLine(group.GroupName); //监控点组的名称
//}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
public void Dispose()
{
_fbox.BoxConnectStateChanged -= _fbox_BoxConnectStateChanged;
_fbox.DataMonitorValueChanged -= _fbox_DataMonitorValueChanged;
_fbox?.Dispose();
}
}
}
在创建IFBoxClientManager实例并初始化时,您需要提供以下参数:
1、为FBox客户端的账号、密码。
2、为找销售申请的开发者账号、密码。
3、和若公有云的话不变,私有云改为对应地址地址。
ClientId ClientSecret Username Password IdServer MainServer HdataServer Username Password ClientId ClientSecret IdServer MainServer HdataServer
总结
以上就是今天要讲的内容,本文仅仅简单介绍了基于FlexManager的C#SDK开发,而FlexManager提供了大量能使我们自己使用云数据创建客户端应用的方式方法,同学们可以多深入了解一下。