using System; using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine; public class DeviceStateController : MonoBehaviour { private Transform dataView; // 显示对象 private HttpRequestHandler httpRequestHandler; private List deviceStateDatas; private List lastDatas; // 上一次的数据源 private string httpUrl=HttpRequestHandler.httpIp+"/device/ledger/countDeviceStatus"; private string encryptText; // 加密文本 void OnEnable() { dataView = transform; httpRequestHandler = gameObject.AddComponent(); encryptText = AESHelper.Encrypt("/device/ledger/countDeviceStatus"); StartCoroutine(UpdateDataSource()); } public IEnumerator UpdateDataSource() { while (true) { // 发起一个 POST 请求 string jsonData = "{\"encryptText\":\"" + encryptText + "\"}"; StartCoroutine(httpRequestHandler.PostRequest(httpUrl, jsonData, OnPostSuccess, OnError)); yield return new WaitForSeconds(4f); } } // POST 请求成功回调 private void OnPostSuccess(string response) { Debug.Log("POST Success 设备状态: " + DateTime.Now); ReturnInfo> returnInfo = JsonUtility.FromJson>>(response); deviceStateDatas = returnInfo.data; UpdateDataView(); } // 请求失败的回调 private void OnError(string error) { Debug.LogError("Request Error: " + error); } // 更新填充数据 private void UpdateDataView() { int count = deviceStateDatas.Count; print("设备状态数量:"+count); for (int i = 0; i < deviceStateDatas.Count; i++) { switch (deviceStateDatas[i].deviceStatus) { case "1": dataView.GetChild(0).GetComponent().text = deviceStateDatas[i].statusCount.ToString(); break; case "2": dataView.GetChild(1).GetComponent().text = deviceStateDatas[i].statusCount.ToString(); break; case "3": dataView.GetChild(2).GetComponent().text = deviceStateDatas[i].statusCount.ToString(); break; case "4": dataView.GetChild(3).GetComponent().text = deviceStateDatas[i].statusCount.ToString(); break; case "5": dataView.GetChild(4).GetComponent().text = deviceStateDatas[i].statusCount.ToString(); break; } } } }