using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using UnityAsync; using Best.HTTP; using Best.HTTP.JSON; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Newtonsoft.Json.Linq; using UnityEngine; using UnityEngine.Networking; using Unity.VisualScripting; using static System.Net.WebRequestMethods; public class HttpHelper : MonoBehaviour { public Action OnSWYJRefresh; public static bool useAes = false; public static HttpHelper _Instance; public static Dictionary _devicesIdDatas = new Dictionary(); public const int timeOut = 3; class DYServerAddress { public string YZTServerAddress; public string YZTServerPYAddress; public string Server_UploadPath; public string ModbusSeverAddress; public string ObsSeverAddress; public string ObsSeverM3U8Address; } void ChangeServerAddress() { if (System.IO.File.Exists(Application.streamingAssetsPath + "/serverPath.json")) { string serverAddressContent = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/serverPath.json"); Debug.Log(serverAddressContent); DYServerAddress address = JsonConvert.DeserializeObject(serverAddressContent); ServerAddress.YZTServerAddress = address.YZTServerAddress; ServerAddress.YZTServerPYAddress = address.YZTServerPYAddress; ServerAddress.Server_UploadPath = address.Server_UploadPath; ServerAddress.ModbusSeverAddress = address.ModbusSeverAddress; ServerAddress.ObsSeverAddress = address.ObsSeverAddress; ServerAddress.ObsSeverM3U8Address = address.ObsSeverM3U8Address; } } private async void Awake() { _Instance = this; ChangeServerAddress(); if (GlobalData.pageIndex == PageIndex.Page1 || GlobalData.pageIndex == PageIndex.Page2 || GlobalData.pageIndex == PageIndex.Page3) { Debug.Log("HttpInitYZTData"); //可以并行,无需等待 InitYZTData(); } if (_devicesIdDatas.Count < 1) { await GetSensorList(); } if (GlobalData.pageIndex == PageIndex.Page1) { SendBuYuan_GetSensorData(); SendTaoKou_GetSensorData(); GetBuYuanDevicesGroupInfo(); GetTaoKouDevicesGroupInfo(); } if (GlobalData.pageIndex == PageIndex.Page1) { Debug.Log("InitXHGKData"); //可以并行,无需等待 InitXHGKData(); //已完成迁移 } if (GlobalData.pageIndex == PageIndex.Page1) { Debug.Log("HttpInitGCJKData"); //可以并行,无需等待 InitGCJKData(); } if (GlobalData.pageIndex == PageIndex.Page1) { Debug.Log("HttpInitXHDDData"); //可以并行,无需等待 InitXHDDData(); } if (GlobalData.pageIndex == PageIndex.Page1) { Debug.Log("HttpInitRKZYData"); //可以并行,无需等待 InitRKZYData(); } if (GlobalData.pageIndex == PageIndex.Page1 || GlobalData.pageIndex == PageIndex.Page2) { Debug.Log("HttpInitSWYJData"); //可以并行,无需等待 InitSWYJData(); } if (GlobalData.pageIndex == PageIndex.Page1 || GlobalData.pageIndex == PageIndex.Page2) { Debug.Log("HttpInitGCYWData1"); //可以并行,无需等待 InitGCYWData1(0); } if (GlobalData.pageIndex == PageIndex.Page1 || GlobalData.pageIndex == PageIndex.Page2 || GlobalData.pageIndex == PageIndex.Page3) { Debug.Log("HttpInitFloorGateData"); InitFloorGateData(); } if (GlobalData.pageIndex == PageIndex.Page2) { Debug.Log("HttpInitDPSWData"); InitDPSWData(); } if (GlobalData.pageIndex == PageIndex.Page2) { Debug.Log("HttpInitGCYWData2"); InitGCYWData2(); } if (GlobalData.pageIndex == PageIndex.Page2) { Debug.Log("HttpInitYJSJData2"); InitYJSJData2(); } } private async Task InitGCYWData2() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetInspectionStatistics); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("大屏运维数据联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.InspectionStat = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("大屏运维数据联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("大屏运维数据联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/inspectionStatistics.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); GlobalData.InspectionStat = JsonConvert.DeserializeObject>(www.text); www.Dispose(); } } private async Task InitYJSJData2() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetAlertData); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("大屏预警数据联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.alertData = JsonConvert.DeserializeObject(dataToken.ToString()); GlobalData.alertData.success = true; } else { Debug.LogWarning("大屏预警数据联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("大屏预警数据联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/alertData.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); Debug.Log(www.text); GlobalData.alertData = JsonConvert.DeserializeObject(www.text.ToString()); GlobalData.alertData.success = true; Debug.Log(GlobalData.alertData.alerts.threeLineWarnings[0].title); www.Dispose(); } } private async Task InitFloorGateData() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetFloodGateData); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("大屏闸口数据联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.floorGateData = JsonConvert.DeserializeObject(dataToken.ToString()); GlobalData.floorGateData.success = true; } else { Debug.LogWarning("大屏闸口数据联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("大屏闸口数据联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/floodGateStatusData.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); Debug.Log(www.text); GlobalData.floorGateData = JsonConvert.DeserializeObject(www.text.ToString()); GlobalData.floorGateData.success = true; www.Dispose(); } } private async Task InitDPSWData() { GlobalData.locationWeatherData = new List(); bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetHydrologicalData + "?projectType=1"); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("大屏水文数据联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { LocationWeatherData data1 = JsonConvert.DeserializeObject(dataToken.ToString()); GlobalData.locationWeatherData.Add(data1); } else { Debug.LogWarning("大屏水文数据联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("大屏水文数据联网不成功,读本地缓存数据,原因:" + e.ToString()); } UnityWebRequest requestData1 = UnityWebRequest.Get(ServerAddress.APIGetHydrologicalData + "?projectType=2"); requestData1.timeout = timeOut; await requestData1.SendWebRequest(); try { if (requestData1.result != UnityWebRequest.Result.Success) { Debug.LogWarning("大屏水文数据联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { JObject jsonObject = JObject.Parse(requestData1.downloadHandler.text); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { LocationWeatherData data2 = JsonConvert.DeserializeObject(dataToken.ToString()); GlobalData.locationWeatherData.Add(data2); } else { Debug.LogWarning("大屏水文数据联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("大屏水文数据联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/hydrologicalData.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); Debug.Log(www.text); GlobalData.locationWeatherData = JsonConvert.DeserializeObject>(www.text.ToString()); www.Dispose(); } } public async void InitYZTData() { await InitYZTData1(); //已完成迁移 InitYZTData_BY_Obs(); //已完成迁移 InitYZTData_TK_Obs(); //新增 InitYZTData3(); //已完成迁移 } public async Task InitYZTData1() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetWaterManagerProject); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (true) { Debug.LogWarning("YZTLayer联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.layerUnitDatas = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("YZTLayer联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("YZTLayer联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/layerUnitDatas.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); GlobalData.layerUnitDatas = JsonConvert.DeserializeObject>(www.text); www.Dispose(); } for (int i = 0; i < GlobalData.layerUnitDatas.Count; i++) { if (GlobalData.layerUnitDatas[i].type == LayerUnitType.JK) { try { GlobalData.obsCameraLib.Add(GlobalData.layerUnitDatas[i].name, GlobalData.layerUnitDatas[i].namePri); } catch (Exception e) { GlobalData.obsCameraLib.Add(GlobalData.layerUnitDatas[i].name + "_Plus", GlobalData.layerUnitDatas[i].namePri); } } } } public async Task InitYZTData_BY_Obs() { bool successInternet = true; string sendUrl = ServerAddress.API_GetDevicesInfo; sendUrl += "/34020000001180000001/channels?page=1&count=100"; Debug.Log(sendUrl); UnityWebRequest requestData = UnityWebRequest.Get(sendUrl); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("补元监控数据联网不成功,原因:返request不成功:" + requestData.error); successInternet = false; } else { Debug.Log("补元监控数据返回:"+requestData.downloadHandler.text); string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "0") { GlobalData.obsDatas_by = new List(); ServerObsDatas serverObsDatas = JsonConvert.DeserializeObject(dataToken.ToString()); for (int i = 0; i < serverObsDatas.list.Count; i++) { ObsData obsData = new ObsData(); obsData.name = serverObsDatas.list[i].name; if (GlobalData.obsCameraLib.TryGetValue(obsData.name, out var value)) { obsData.targetName = value; } // if (i > 0) // { // obsData.url = // "http://www.chatgpt918.top:9080/rtp/34020000001180000001_34020000001310000001/hls.m3u8"; // } // else // { //obsData.url = await GetObsUrl(serverObsDatas.list[i].deviceId,serverObsDatas.list[i].channelId); //Debug.Log("!!!:"+obsData.url); //obsData.url = ServerAddress.ObsSeverM3U8Address + string.Format("/rtp/{0}_{1}/hls.m3u8", serverObsDatas.list[i].deviceId, serverObsDatas.list[i].channelId); //} obsData.type = obsType.BuYuanObs; obsData.deviceId = serverObsDatas.list[i].deviceId; obsData.channelId = serverObsDatas.list[i].channelId; obsData.status = serverObsDatas.list[i].status; GlobalData.obsDatas_by.Add(obsData); } } else { Debug.LogWarning("补元监控数据联网不成功,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("补元监控数据联网不成功,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/ObsDatas_BY.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); Debug.Log($"缓存数据:{www.text}"); GlobalData.obsDatas_by = JsonConvert.DeserializeObject>(www.text); www.Dispose(); } } public async Task InitYZTData_TK_Obs() { bool successInternet = true; string sendUrl = ServerAddress.API_GetDevicesInfo; sendUrl += "/34020000001180000002/channels?page=1&count=100"; Debug.Log(sendUrl); UnityWebRequest requestData = UnityWebRequest.Get(sendUrl); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("套口监控数据联网不成功,原因:返request不成功:" + requestData.error); successInternet = false; } else { Debug.Log("套口监控数据返回:"+requestData.downloadHandler.text); string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "0") { GlobalData.obsDatas_tk = new List(); ServerObsDatas serverObsDatas = JsonConvert.DeserializeObject(dataToken.ToString()); for (int i = 0; i < serverObsDatas.list.Count; i++) { ObsData obsData = new ObsData(); obsData.name = serverObsDatas.list[i].name; if (GlobalData.obsCameraLib.TryGetValue(obsData.name, out var value)) { obsData.targetName = value; } //obsData.url = await GetObsUrl(serverObsDatas.list[i].deviceId,serverObsDatas.list[i].channelId); //ServerAddress.ObsSeverM3U8Address + string.Format("/rtp/{0}_{1}/hls.m3u8", serverObsDatas.list[i].deviceId, serverObsDatas.list[i].channelId); //} obsData.type = obsType.TaoKouObs; obsData.deviceId = serverObsDatas.list[i].deviceId; obsData.channelId = serverObsDatas.list[i].channelId; obsData.status = serverObsDatas.list[i].status; GlobalData.obsDatas_tk.Add(obsData); } } else { Debug.LogWarning("套口监控数据联网不成功,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("套口监控数据联网不成功,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/ObsDatas_TK.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); Debug.Log($"缓存数据:{www.text}"); GlobalData.obsDatas_tk = JsonConvert.DeserializeObject>(www.text); www.Dispose(); } } public async Task GetObsUrl(string deviceId,string channelId) { string result = ""; string cmdUrl = ServerAddress.API_PlayStart; cmdUrl += $"/{deviceId}/{channelId}"; Debug.Log($"send:{cmdUrl}"); UnityWebRequest requestData = UnityWebRequest.Get(cmdUrl); await requestData.SendWebRequest(); if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning($"获取监控播放地址不成功,原因:返request不成功:" + requestData.downloadHandler.text); } else { Debug.Log(requestData.downloadHandler.text); string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; ObsPlayUrlData urlData = JsonConvert.DeserializeObject(dataToken.ToString()); result = urlData.hls; Debug.Log("获取到监控播放路径:"+result); } requestData.Dispose(); return result; } public async Task InitYZTData3() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetWaterHotPoint); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("YZTLayer联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.hotPointDatas = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("YZTLayer联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("YZTLayer联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/hotPoints.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); GlobalData.hotPointDatas = JsonConvert.DeserializeObject>(www.text); Debug.Log(GlobalData.hotPointDatas.Count); www.Dispose(); } } public async Task InitXHGKData() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetGetProjectMilestones); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("XHGKLayer联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // ȡdata ֶε ֵ JToken dataToken = jsonObject["data"]; //Debug.Log(dataToken.ToString()); JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.dsjContents = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("XHGKLayer联网不成功,读本地缓存数据,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("XHGKLayer联网不成功,读本地缓存数据,原因:" + e.ToString()); } requestData.Dispose(); if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/dsj.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); GlobalData.dsjContents = JsonConvert.DeserializeObject>(www.text); www.Dispose(); } } public async Task InitGCJKData() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetGeQXZData); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("水文站联网不成功,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.qXZDatas = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("水文站联网不成功,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("水文站联网不成功,原因:" + e.ToString()); } requestData.Dispose(); successInternet = true; UnityWebRequest requestData1 = UnityWebRequest.Get(ServerAddress.APIGetGeSWZData); await requestData1.SendWebRequest(); try { if (requestData1.result != UnityWebRequest.Result.Success) { Debug.LogWarning("水文站联网不成功,原因:返request不成功"); successInternet = false; } else { JObject jsonObject = JObject.Parse(requestData1.downloadHandler.text); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.sWZDatas = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("水文站联网不成功,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("水文站联网不成功,原因:" + e.ToString()); } requestData1.Dispose(); } public async Task InitXHDDData() { WWW www = new WWW(Application.streamingAssetsPath + "/scheduling.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); GlobalData.schedulingData = JsonConvert.DeserializeObject(www.text); www.Dispose(); } public async Task InitRKZYData() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetGetMovePlans); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (true) { Debug.LogWarning("RKZYLayer联网不成功,读本地缓存数据,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.allServerMovePlans = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { successInternet = false; Debug.LogWarning("XHGKLayer联网不成功,读本地缓存数据,原因:返序列化失败"); } } } catch (Exception e) { successInternet = false; Debug.LogWarning("RKZYLayer联网不成功,读本地缓存数据,原因:" + e.ToString()); } if (!successInternet) { WWW www = new WWW(Application.streamingAssetsPath + "/moveplan.json"); await new UnityAsync.WaitUntil(() => { return www.isDone; }); GlobalData.allServerMovePlans = JsonConvert.DeserializeObject>(www.text); www.Dispose(); } } public async Task InitSWYJData() { InitSWYJData0(); await InitSWYJData1(); await InitSWYJData2(); OnSWYJRefresh?.Invoke(); } public async Task InitSWYJData1() { var devicesInfo = _devicesIdDatas["上游水位计"]; string sw1Result = await GetSingleDevicesInfo(2, devicesInfo.dataGid.ToString(), devicesInfo.dataSid.ToString(), "d", 10000); try { GetSingleDevicesRequest tempData = JsonConvert.DeserializeObject(sw1Result); if (tempData != null) { bool findData = false; foreach (var VARIABLE in GlobalData.BuYuanShuiWeiDataList) { if (VARIABLE.name.Equals("补元上游水位")) { VARIABLE.value = float.Parse(tempData.data[0].avgS1); VARIABLE.datas = tempData.data.ToArray(); findData = true; } } if (!findData) { GlobalData.BuYuanShuiWeiDataList.Add(new ShuiWeiData() { name = "补元上游水位", targetName = "BY_ShuiWei_Up", value = float.Parse(tempData.data[0].avgS1), type = shuiWeiType.BuYuanShuiWei, datas = tempData.data.ToArray() }); } } } catch (Exception e) { Debug.LogWarning("补元上游水位不成功,原因:" + e.ToString()); } var devicesInfo1 = _devicesIdDatas["下游水位计"]; string sw2Result = await GetSingleDevicesInfo(2, devicesInfo1.dataGid.ToString(), devicesInfo1.dataSid.ToString(), "d", 100000); try { GetSingleDevicesRequest tempData = JsonConvert.DeserializeObject(sw2Result); if (tempData != null) { bool findData = false; foreach (var VARIABLE in GlobalData.BuYuanShuiWeiDataList) { if (VARIABLE.name.Equals("补元下游水位")) { VARIABLE.value = float.Parse(tempData.data[0].avgS1); VARIABLE.datas = tempData.data.ToArray(); findData = true; } } if (!findData) { GlobalData.BuYuanShuiWeiDataList.Add(new ShuiWeiData() { name = "补元下游水位", targetName = "BY_ShuiWei_Down", value = float.Parse(tempData.data[0].avgS1), type = shuiWeiType.BuYuanShuiWei, datas = tempData.data.ToArray() }); } } } catch (Exception e) { Debug.LogWarning("补元下游水位不成功,原因:" + e.ToString()); } string dayResult = await GetSingleDevicesInfo(2, devicesInfo.dataGid.ToString(), devicesInfo.dataSid.ToString(), "d", 6); try { GetSingleDevicesRequest tempData = JsonConvert.DeserializeObject(dayResult); GlobalData.buYuanShuiWei_day = new ShuiWeiBianHuaData(); GlobalData.buYuanShuiWei_day.name = new string[tempData.data.Count]; GlobalData.buYuanShuiWei_day.value = new double[tempData.data.Count]; for (int i = 0; i < tempData.data.Count; i++) { GlobalData.buYuanShuiWei_day.name[i] = tempData.data[i].timeGroup; GlobalData.buYuanShuiWei_day.value[i] = double.Parse(tempData.data[i].avgS1); } } catch (Exception e) { Debug.LogWarning("获取6天平均数据不成功,原因:" + e.ToString()); } string monthResult = await GetSingleDevicesInfo(2, devicesInfo.dataGid.ToString(), devicesInfo.dataSid.ToString(), "d", 90); try { GetSingleDevicesRequest tempData = JsonConvert.DeserializeObject(monthResult); GlobalData.buYuanShuiWei_month = new ShuiWeiBianHuaData(); GlobalData.buYuanShuiWei_month.name = new string[tempData.data.Count]; GlobalData.buYuanShuiWei_month.value = new double[tempData.data.Count]; for (int i = 0; i < tempData.data.Count; i++) { GlobalData.buYuanShuiWei_month.name[i] = tempData.data[i].timeGroup; GlobalData.buYuanShuiWei_month.value[i] = double.Parse(tempData.data[i].avgS1); } } catch (Exception e) { Debug.LogWarning("获取6月平均数据不成功,原因:" + e.ToString()); } string hourResult = await GetSingleDevicesInfo(2, devicesInfo.dataGid.ToString(), devicesInfo.dataSid.ToString(), "h", 6); try { GetSingleDevicesRequest tempData = JsonConvert.DeserializeObject(hourResult); GlobalData.buYuanShuiWei_hour = new ShuiWeiBianHuaData(); GlobalData.buYuanShuiWei_hour.name = new string[tempData.data.Count]; GlobalData.buYuanShuiWei_hour.value = new double[tempData.data.Count]; for (int i = 0; i < tempData.data.Count; i++) { GlobalData.buYuanShuiWei_hour.name[i] = tempData.data[i].timeGroup; GlobalData.buYuanShuiWei_hour.value[i] = double.Parse(tempData.data[i].avgS1); } } catch (Exception e) { Debug.LogWarning("获取6小时平均数据不成功,原因:" + e.ToString()); } } public async Task InitSWYJData2() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetGeSWData); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("水位高度联网不成功,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.swDatas = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("水位高度联网不成功,原因:返序列化失败"); successInternet = false; } for (int i = 0; i < GlobalData.BuYuanShuiWeiDataList.Count; i++) { StationData stationData = new StationData(); stationData.LGTD = 113.910187f; stationData.LTTD = 30.1765823f; stationData.STNM = GlobalData.BuYuanShuiWeiDataList[i].name; stationData.upz = GlobalData.BuYuanShuiWeiDataList[i].name.Contains("上") ? GlobalData.BuYuanShuiWeiDataList[i].value : -1; stationData.dwz = GlobalData.BuYuanShuiWeiDataList[i].name.Contains("下") ? GlobalData.BuYuanShuiWeiDataList[i].value : -1; GlobalData.swDatas.Add(stationData); } } } catch (Exception e) { successInternet = false; Debug.LogWarning("水位高度联网不成功,原因:" + e.ToString()); } } public async Task InitSWYJData0() { bool successInternet = true; UnityWebRequest requestData = UnityWebRequest.Get(ServerAddress.APIGetThreeLevel); requestData.timeout = timeOut; await requestData.SendWebRequest(); try { if (requestData.result != UnityWebRequest.Result.Success) { Debug.LogWarning("三线水位联网不成功,原因:返request不成功"); successInternet = false; } else { string postResult = requestData.downloadHandler.text; if (useAes) { postResult = AESCrypto.Decrypt(postResult); } JObject jsonObject = JObject.Parse(postResult); // 提取data字段的值 JToken dataToken = jsonObject["data"]; JToken codeToken = jsonObject["code"]; if (codeToken.ToString() == "200") { GlobalData.threeLevelShuiWeiDatas = JsonConvert.DeserializeObject>(dataToken.ToString()); } else { Debug.LogWarning("三线水位联网不成功,原因:返序列化失败"); successInternet = false; } } } catch (Exception e) { successInternet = false; Debug.LogWarning("三线水位联网不成功,原因:" + e.ToString()); } } public async Task SendBuYuan_GetSensorData() { UnityWebRequest www = UnityWebRequest.Get(ServerAddress.API_BuYuan_GetSensorData); await www.SendWebRequest(); try { if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning("获取补元闸门设备数据不成功,原因:返request不成功:" + www.downloadHandler.text); } else { GlobalData.buYuanSensorData = JsonUtility.FromJson(www.downloadHandler.text); } } catch (Exception e) { Debug.LogWarning("获取补元闸门设备数据不成功,原因:" + e.ToString()); } www.Dispose(); } public async void GetBuYuanDevicesGroupInfo() { Debug.Log("获取补元所有渗压记"); Debug.Log(_devicesIdDatas.Count); //获取所有渗压记 //GetDevicesData tempData = new GetDevicesData(); //tempData.idsList = new List(); foreach (var device in _devicesIdDatas.Values) { if (device.stationName.Equals("补元") && device.sensorType.Equals("渗压计")) { GlobalData.BuYuanShuiYaDataList.Add(new ShuiYaData() { name = device.sensorName, value = device.realtimeValue1, type = shuiYaType.BuYuanShuiYa, targetName = $"BY_{device.sensorName}" }); } } Debug.Log("添加补元渗压记:"+ GlobalData.BuYuanShuiYaDataList.Count); Debug.Log("获取补元所有位移记"); //获取所有位移记 foreach (var device in _devicesIdDatas.Values) { if (device.stationName.Equals("补元") && device.sensorType.Equals("静力水准仪")) { GlobalData.BuYuanWeiYiDataList.Add(new WeiYiData() { name = device.sensorName, value =device.realtimeValue1, type = weiYiType.BuYuanWeiYi, targetName = $"BY_{device.sensorName}" }); } } Debug.Log("添加补元位移记:"+ GlobalData.BuYuanWeiYiDataList.Count); } public async void GetTaoKouDevicesGroupInfo() { Debug.Log("获取套口所有渗压记"); //获取所有渗压记 foreach (var device in _devicesIdDatas.Values) { if (device.stationName.Equals("套口") && device.sensorType.Equals("渗压计")) { GlobalData.TaoKouShuiYaDataList.Add(new ShuiYaData() { name = device.sensorName, value = device.realtimeValue1, type = shuiYaType.TaoKouShuiYa, targetName = $"TK_{device.sensorName}" }); } } Debug.Log("添加套口渗压记:"+ GlobalData.TaoKouShuiYaDataList.Count); Debug.Log("获取套口所有位移记"); //获取所有位移记 foreach (var device in _devicesIdDatas.Values) { if (device.stationName.Equals("补元") && device.sensorType.Equals("静力水准仪")) { GlobalData.TaoKouWeiYiDataList.Add(new WeiYiData() { name = device.sensorName, value =device.realtimeValue1, type = weiYiType.TaoKouWeiYi, targetName = $"TK_{device.sensorName}" }); } } Debug.Log("添加套口位移记:"+ GlobalData.TaoKouWeiYiDataList.Count); } public async Task SendTaoKou_GetSensorData() { UnityWebRequest www = UnityWebRequest.Get(ServerAddress.API_TaoKou_GetSensorData); await www.SendWebRequest(); try { if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning("获取套口闸门设备数据不成功,原因:返request不成功:" + www.downloadHandler.text); } else { GlobalData.taoKouSensorData = JsonUtility.FromJson(www.downloadHandler.text); Debug.Log($"获取套口闸门设备数据:{GlobalData.taoKouSensorData.data.Count}"); } } catch (Exception e) { Debug.LogWarning("获取套口闸门设备数据不成功,原因:" + e.ToString()); } www.Dispose(); } // /// // /// 获取补元硬件组数据 // /// // /// // /// // public async Task Devices(GetDevicesData sendData) // { // string cmdUrl = ServerAddress.API_BuYuan_GetDevicesGroupInfo; // string tempStr = JsonConvert.SerializeObject(sendData); // var sendByte = System.Text.Encoding.UTF8.GetBytes(tempStr); // UnityWebRequest www = new UnityWebRequest(cmdUrl, "POST"); // www.uploadHandler = new UploadHandlerRaw(sendByte); // www.downloadHandler = new DownloadHandlerBuffer(); // www.SetRequestHeader("Content-Type", "application/json"); // await www.SendWebRequest(); // if (www.result != UnityWebRequest.Result.Success) // { // Debug.LogWarning($"获取设备数据不成功,原因:返request不成功:" + www.downloadHandler.text); // } // string result = www.downloadHandler.text; // www.Dispose(); // return result; // } /// /// 获取设备的最近N条记录 /// /// /// /// /// public async Task GetSingleDevicesInfo(int type, string gid, string sid, string timeUnit, int count) { string cmdUrl = ServerAddress.API_BuYuan_GetSingleDevicesInfo; cmdUrl += $"?dataFrom={type}&dataSid={sid}&dataGid={gid}&timeUnit={timeUnit}&number={count}"; UnityWebRequest www = new UnityWebRequest(cmdUrl, "Get"); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning("获取设备数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } /// /// 获取设备最近几天的平均数据 /// /// /// /// /// public async Task GetSingleDevicesInfo_day(int channelId, int deviceId, int count) { string cmdUrl = ServerAddress.API_BuYuan_GetSingleDevicesInfo_avg; GetSingleDeviceData_AvgType sendData = new GetSingleDeviceData_AvgType(); sendData.ChannelID = channelId; sendData.DeviceID = deviceId; sendData.AvgType = "day"; sendData.N = count; string tempStr = JsonConvert.SerializeObject(sendData); var sendByte = System.Text.Encoding.UTF8.GetBytes(tempStr); UnityWebRequest www = new UnityWebRequest(cmdUrl, "POST"); www.uploadHandler = new UploadHandlerRaw(sendByte); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning("获取设备天平均数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } /// /// 获取设备最近几小时的平均数据 /// /// /// /// /// public async Task GetSingleDevicesInfo_hour(int channelId, int deviceId, int count) { string cmdUrl = ServerAddress.API_BuYuan_GetSingleDevicesInfo_avg; GetSingleDeviceData_AvgType sendData = new GetSingleDeviceData_AvgType(); sendData.ChannelID = channelId; sendData.DeviceID = deviceId; sendData.AvgType = "hour"; sendData.N = count; string tempStr = JsonConvert.SerializeObject(sendData); var sendByte = System.Text.Encoding.UTF8.GetBytes(tempStr); UnityWebRequest www = new UnityWebRequest(cmdUrl, "POST"); www.uploadHandler = new UploadHandlerRaw(sendByte); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning("获取设备小时平均数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } /// /// 获取设备最近几个月的平均数据 /// /// /// /// /// public async Task GetSingleDevicesInfo_month(int channelId, int deviceId, int count) { string cmdUrl = ServerAddress.API_BuYuan_GetSingleDevicesInfo_avg; GetSingleDeviceData_AvgType sendData = new GetSingleDeviceData_AvgType(); sendData.ChannelID = channelId; sendData.DeviceID = deviceId; sendData.AvgType = "month"; sendData.N = count; string tempStr = JsonConvert.SerializeObject(sendData); var sendByte = System.Text.Encoding.UTF8.GetBytes(tempStr); UnityWebRequest www = new UnityWebRequest(cmdUrl, "POST"); www.uploadHandler = new UploadHandlerRaw(sendByte); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning("获取设备月平均数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } /// /// 0 补元 1套口 /// /// public async Task InitGCYWData1(int type) { Debug.Log($"获取B08GCYW 数据:{(type==0?"补元":"套口")}"); GlobalData.B08_Type = type; string jsonStr; try { jsonStr = await B08_API_data(ServerAddress.API_B08_dataStatis, type); Debug.Log("API_B08_dataStatis" + jsonStr); GlobalData.B08DataStatis = JsonConvert.DeserializeObject(jsonStr); } catch (Exception e) { Debug.LogWarning("获取API_B08_dataStatis数据不成功,原因:" + e.ToString()); } try { jsonStr = await B08_API_data(ServerAddress.API_B08_inspectResult, type); Debug.Log("API_B08_inspectResult" + jsonStr); GlobalData.B08InspectResult = JsonConvert.DeserializeObject(jsonStr); } catch (Exception e) { Debug.LogWarning("获取API_B08_inspectResult数据不成功,原因:" + e.ToString()); } try { jsonStr = await B08_API_data(ServerAddress.API_B08_projectExamine, type); Debug.Log("API_B08_projectExamine" + jsonStr); GlobalData.B08ProjectExamine = JsonConvert.DeserializeObject(jsonStr); } catch (Exception e) { Debug.LogWarning("获取API_B08_projectExamine数据不成功,原因:" + e.ToString()); } try { jsonStr = await B08_API_data(ServerAddress.API_B08_event, type); Debug.Log("API_B08_event" + jsonStr); GlobalData.B08Event = JsonConvert.DeserializeObject(jsonStr); } catch (Exception e) { Debug.LogWarning("获取API_B08_event数据不成功,原因:" + e.ToString()); } try { jsonStr = await B08_API_data(ServerAddress.API_B08_questionStatis, type); Debug.Log("API_B08_questionStatis" + jsonStr); GlobalData.B08QuestionStatis = JsonConvert.DeserializeObject(jsonStr); } catch (Exception e) { Debug.LogWarning("获取API_B08_questionStatis数据不成功,原因:" + e.ToString()); } try { jsonStr = await B08_API_data(ServerAddress.API_B08_inspectType, type); Debug.Log("API_B08_inspectType" + jsonStr); GlobalData.B08InspectType = JsonConvert.DeserializeObject(jsonStr); GlobalData.B08TaskListInfos = new B08_TaskListInfoData[GlobalData.B08InspectType.data.Length]; for (int i = 0; i < GlobalData.B08InspectType.data.Length; i++) { string tempResult = await B08_API_TaskInfo(type,i); Debug.Log($"B08_API_TaskInfo type={i}:" + tempResult); GlobalData.B08TaskListInfos[i]= JsonConvert.DeserializeObject(tempResult); } } catch (Exception e) { Debug.LogWarning("获取API_B08_inspectType数据不成功,原因:" + e.ToString()); } } public async Task B08_API_data(string cmdUrl, int type) { if (type == 0) { cmdUrl += "1794245918999351298"; } else if(type==1) { cmdUrl += "1798366756789653505"; } UnityWebRequest www = new UnityWebRequest(cmdUrl, "Get"); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning($"获取{cmdUrl}数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } public async Task B08_API_TaskInfo(int type,int xunjian_type) { string cmdUrl = ServerAddress.API_B08_taskInfo; if (type == 0) { cmdUrl += "1794245918999351298"; } else if(type==1) { cmdUrl += "1798366756789653505"; } cmdUrl += "&xunjian_type=" + xunjian_type; Debug.Log("!!!:"+cmdUrl); UnityWebRequest www = new UnityWebRequest(cmdUrl, "Get"); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning($"获取B08_API_TaskInfo type={type} 数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } /// /// 获取站点水位信息 /// /// /// public async Task GetWaterTrend_Chart(string stcd) { UnityWebRequest www = new UnityWebRequest(ServerAddress.API_GetWaterTrend_chart + stcd, "Get"); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning($"获取stcd:{stcd},水位统计信息数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } public async Task GetWaterTrend_List(string stcd) { UnityWebRequest www = new UnityWebRequest(ServerAddress.API_GetWaterTrend_list + stcd, "Get"); www.downloadHandler = new DownloadHandlerBuffer(); www.SetRequestHeader("Content-Type", "application/json"); await www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogWarning($"获取stcd:{stcd},水位统计信息数据不成功,原因:返request不成功:" + www.downloadHandler.text); } string result = www.downloadHandler.text; www.Dispose(); return result; } public void SaveFirstFrame(byte[] uploadData, string fileName, string _targetName) { StartCoroutine(SendSaveFirstFrame(uploadData, fileName, _targetName)); } IEnumerator SendSaveFirstFrame(byte[] uploadData, string fileName, string _targetName) { Debug.Log(fileName); WWWForm form = new WWWForm(); form.AddBinaryData("file", uploadData, fileName); UnityWebRequest www = UnityWebRequest.Post(ServerAddress.API_TextureUploadPath, form); yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.Success) { ActionInstance._Instance.obsFmUpdata?.Invoke(_targetName); } Debug.Log(www.downloadHandler.text); www.Dispose(); } #region 摄像头远程控制 public void GetDeviceChannelId(string deviceId, Action callBack) { StartCoroutine(SendGetDevicesChannel(deviceId, 1, 1, callBack)); } IEnumerator SendGetDevicesChannel(string deviceId, int page, int count, Action call) { string sendUrl = ServerAddress.API_GetDevicesInfo; sendUrl += $"/{deviceId}/channels?page={page}&count={count}&query&online&channelType&catalogUnderDevice"; UnityWebRequest www = UnityWebRequest.Get(sendUrl); yield return www.SendWebRequest(); ObsHttpRequestData tempData = JsonConvert.DeserializeObject(www.downloadHandler.text); GetObsChannelRequestData channelData = tempData.data.ToObject(); call?.Invoke(channelData.list[0].channelId); www.Dispose(); } IEnumerator SendStartRTSP(string deviceId, string channelId) { string sendUrl = ServerAddress.API_PlayStart; sendUrl += $"/{deviceId}/{channelId}"; UnityWebRequest www = UnityWebRequest.Get(sendUrl); yield return www.SendWebRequest(); Debug.Log(www.downloadHandler.text); www.Dispose(); } public void SendObsCameraCtrlCmd(string deviceId, string channelId, ObsCtrlType type) { StartCoroutine(SendCameraCtrl(deviceId, channelId, type.ToString())); } IEnumerator SendCameraCtrl(string deviceId, string channelId, string command) { string sendUrl = ServerAddress.API_CameraCtrl; sendUrl += $"/{deviceId}/{channelId}?command={command}&horizonSpeed=10&verticalSpeed=10&zoomSpeed=10"; UnityWebRequest www = UnityWebRequest.Post(sendUrl, ""); Debug.Log("send:" + sendUrl); yield return www.SendWebRequest(); Debug.Log(www.downloadHandler.text); www.Dispose(); } #endregion // /// // /// 所有硬件设备的获取信息 // /// public async Task GetSensorList() { bool successInternet = true; UnityWebRequest www = UnityWebRequest.Get(ServerAddress.API_GetAllSensorList); www.timeout = timeOut; await www.SendWebRequest(); try { if (www.result != UnityWebRequest.Result.Success) { successInternet = false; Debug.LogWarning("获取设备数据不成功,原因:返request不成功:" + www.downloadHandler.text); } else { SensorListResult tempData = JsonUtility.FromJson(www.downloadHandler.text); _devicesIdDatas = new Dictionary(); for (int i = 0; i < tempData.rows.Count; i++) { _devicesIdDatas.Add(tempData.rows[i].sensorName, tempData.rows[i]); } Debug.Log($"初始化设备列表成功!!! count:{tempData.total}"); } } catch (Exception e) { successInternet = false; Debug.LogWarning("获取设备数据不成功,原因:" + e.ToString()); } www.Dispose(); if (!successInternet) { WWW localWWW = new WWW(Application.streamingAssetsPath + "/SensorList.json"); await new UnityAsync.WaitUntil(() => { return localWWW.isDone; }); SensorListResult tempData = JsonUtility.FromJson(localWWW.text); _devicesIdDatas = new Dictionary(); for (int i = 0; i < tempData.rows.Count; i++) { _devicesIdDatas.Add(tempData.rows[i].sensorName, tempData.rows[i]); } Debug.Log($"读取本地初始化设备列表成功!!! count:{tempData.total}"); www.Dispose(); } // var devicesInfo = _devicesIdDatas["上游水位计"]; // GlobalData.BuYuanShuiWeiDataList.Add(new ShuiWeiData() // { // name = "补元上游水位", // targetName = "BY_ShuiWei_Up", // value = devicesInfo.realtimeValue1, // type = shuiWeiType.BuYuanShuiWei, // datas = new []{new SingleDevicesRequestData() // { // avgS1 = devicesInfo.realtimeValue1.ToString(), // timeGroup = devicesInfo.dataUpdateTime // }} // }); // var devicesInfo1 = _devicesIdDatas["下游水位计"]; // GlobalData.BuYuanShuiWeiDataList.Add(new ShuiWeiData() // { // name = "补元下游水位", // targetName = "BY_ShuiWei_Down", // value = devicesInfo1.realtimeValue1, // type = shuiWeiType.BuYuanShuiWei, // datas = new []{new SingleDevicesRequestData() // { // avgS1 = devicesInfo1.realtimeValue1.ToString(), // timeGroup = devicesInfo1.dataUpdateTime // }} // }); } }