# CsharpNlecloud **Repository Path**: youryouth/CsharpNlecloud ## Basic Information - **Project Name**: CsharpNlecloud - **Description**: 封装了新大陆的一些API(C#) - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2020-08-04 - **Last Updated**: 2021-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 更新说明 于2020-8-5号更新
# 使用说明 项目工程需要添加NLECloudSDK的引用 新建一个类库Device,把代码复制,把缺少的引用添加。 封装的API使用了Console,可在项目右键属性->输出类型->改成控制台应用程序 # 初始化Cloud ```csh //传入设备ID. Cloud cloud = new Cloud("90596"); ```
在登录界面中如果使用了UserLogin,那么在其他窗体中,可以如下使用: ```cs Cloud cloud = new Cloud(); cloud.cmds("xxx","xxx"); ... ... ``` # 用户登录 ```csharp ///用户名 ///密码 ///true表示成功,false表示失败 /// bool UserLogin(String userName, String passWord); ``` 例如: ```cs bool flag = cloud.UserLogin("xxxx","xxxx"); ```
# 上传传感数据 ```cs ///sensordata结构体 ///true表示成功,false表示设备不在线或传感器设备出错. /// ///上传传感数据 bool AddSensorData(sensorData sensordata); bool AddSensorDatas(List sensorDatas); ``` 例如: 上传一条数据,先声明结构体sensorData ```cs var data = new sensorData { apiTag = "Lux", time = "2020-08-02 01:01:01", value = "59" }; bool flag = cloud.AddSensorData(data); ``` 上传多条数据 ```cs List data = new List() { new sensorData { apiTag = "Lux", time = "2020-08-02 01:01:01", value = "59" }, new sensorData { apiTag = "Lux", time = "2020-08-02 01:01:01", value = "99" } }; bool flag = cloud.AddSensorDatas(data); ```
# 随机上传传感数据 ```cs /// /// 随机上传传感数据 /// /// 标识符数组 /// 随机最小值 /// 随机最大值 /// 默认5条 /// true表示成功,false表示失败 public bool RandomAddSensorDatas(String[] apiTags, int[] minValue, int[] maxValue, int count=5) ``` 例如: ```cs String[] apiTags = {"Lux","Humidity"}; int[]minValue = {0,10}; int[]maxValue = {1,20}; RandomAddSensorDatas(apiTags,minValue,maxValue); RandomAddSensorDatas(apiTags,minValue,maxValue,10); ```
# 控制命令 ```cs ///传感器标识符 ///数据 ///true表示成功,false表示设备不在线或传感器设备出错. /// bool cmds(String apiTag,object data) ``` 例如: ```cs bool flag = cloud.cmds("Led","1"); ```
# 模糊查询传感数据 ```cs ///传感器标识符 ///排序方式 ///获取传感数据,会上抛异常,使用try..catch /// ///一个列表.value表示数据,time表示时间 /// List> GetSensorDatas(String apiTag,String sort="DESC") ``` 例如: ```cs List> sensorInfos = cloud.GetSensorDatas("Lux"); try{ foreach (Dictionary dictionary in sensorInfos) { Console.WriteLine(dictionary["value"], dictionary["time"]); } }catch(Exception){ Console.WriteLine("无此传感器"); } ```
# 设备模拟在线 ```cs ///设备标识符 ///秘钥 ///true表示成功,false表示设备不在线或传感器设备出错. /// ///设备模拟在线 public bool DeviceOnline(String deviceTag,String secretKey) ``` 例如: ```cs bool flag = cloud.DeviceOnline("SmartHomeLucky", "4094ef2dbebf44b78601a54d2a39c451"); ``` ### 发送数据 ```cs ///sensorData结构体成员 ///true表示成功,false表示设备不在线或传感器设备出错. /// ///设备模拟发送数据 public bool SocketSendData(sensorData sensor) ``` 例如: ```cs var data = new sensorData() { apiTag = "Lux", time = "2020-08-03 08:01:01", value = "400" }; cloud.SocketSendData(data); ```
# 查询单个传感器 ```cs /// /// 查询单个传感器 /// /// /// public String GetSensorInfo(String apiTag) ``` 例如: ```cs cloud.GetSensorInfo("Lux"); ```
# 图表控件 **在nuget包中下载livechart.** 在xaml中声明 ```xml ``` [![aBqBrT.png](https://s1.ax1x.com/2020/08/04/aBqBrT.png)](https://imgchr.com/i/aBqBrT) 在cs中 ```cs /// /// chart.xaml 的交互逻辑 /// public partial class chart : Page { public SeriesCollection SeriesCollection { get; set; } public List Labels { get; set; } private double[] _trend; private double[] temp = { 0,0,0,0,0,0 }; private Cloud cloud = new Cloud(); private String[] apiTags = { "Lux", "Humidity","Temperature" }; public chart() { InitializeComponent(); //实例化一条折线图 SeriesCollection = new SeriesCollection { }; _trend = new double[3]; for (var i = 0; i < apiTags.Length; i++) { LineSeries mylineseries = new LineSeries(); //设置折线的标题 mylineseries.Title = apiTags[i]; //折线图直线形式 mylineseries.LineSmoothness = 0; //折线图的无点样式 mylineseries.PointGeometry = null; //添加横坐标 Labels = new List { "0", "0", "0", "0", "0", "0" }; //添加折线图的数据 mylineseries.Values = new ChartValues(temp); SeriesCollection.Add(mylineseries); _trend[i] = i; } linestart(); DataContext = this; } //连续折线图的方法 public void linestart() { Task.Run(() => { while (true) { read(); Thread.Sleep(2000); //通过Dispatcher在工作线程中更新窗体的UI元素 Application.Current.Dispatcher.Invoke(() => { //更新横坐标时间 Labels.Add(DateTime.Now.ToString()); Labels.RemoveAt(0); //更新纵坐标数据 for(var i = 0; i < apiTags.Length; i++) { SeriesCollection[i].Values.Add(_trend[i]); SeriesCollection[i].Values.RemoveAt(0); } }); } }); } private void read() { for (var i = 0; i < apiTags.Length; i++) { _trend[i] = Convert.ToDouble(cloud.GetSensorInfo(apiTags[i])); } //随机上报数据 List sensorDatas = new List(); var r = new Random(); for (var i = 0; i < apiTags.Length; i++) { sensorData sensor = new sensorData() { apiTag = apiTags[i], value = r.Next(30, 40).ToString(), time = DateTime.Now.ToString() }; sensorDatas.Add(sensor); } cloud.AddSensorDatas(sensorDatas); } ``` [![aBOODf.png](https://s1.ax1x.com/2020/08/04/aBOODf.png)](https://imgchr.com/i/aBOODf)