“虞渠成” 7b5272b468 0608
2026-06-08 08:55:10 +08:00

128 lines
4.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using Kill.Bluetooth;
using Kill.Core;
using Kill.Managers;
using Kill.UI.Components;
using UnityEngine;
using UnityEngine.UI;
using ZXing.Datamatrix;
namespace Kill.UI.Pages
{
public class AboutDevicePage : MonoBehaviour
{
public Text[] infoTexts; // 0:设备型号 1id 2sn 3mac 4固件版本 5wifi
public Button backButton;
public Button wifiButton;
public SetWifiPage setWifiPage;
public Button firmwareUpdateButton;
public FirmwareUpdatePage firmwareUpdatePage;
void Start()
{
UIManager.Instance.RegisterBackAction(Back);
backButton.onClick.RemoveAllListeners();
backButton.onClick.AddListener(Back);
wifiButton.onClick.RemoveAllListeners();
wifiButton.onClick.AddListener(OnWifiButtonClick);
firmwareUpdateButton.onClick.RemoveAllListeners();
firmwareUpdateButton.onClick.AddListener(OnFirmwareUpdateButtonClick);
if (BluetoothManager.Instance.IsConnected)
{
StartCoroutine(GetAllInfoByBlueTooth());
}
else
{
infoTexts[0].text = DataManager.Instance.selectedDevice.device_model;
infoTexts[1].text = DataManager.Instance.selectedDevice.product_id;
infoTexts[2].text = DataManager.Instance.selectedDevice.device_sn;;
infoTexts[3].text = DataManager.Instance.selectedDevice.ble_mac;
infoTexts[4].text = DataManager.Instance.selectedDevice.firmware_version;
}
}
bool deviceInfoReceived = false;
bool wifiInfoReceived = false;
IEnumerator GetAllInfoByBlueTooth()
{
deviceInfoReceived = false;
wifiInfoReceived = false;
LoadingUI.Show();
GetDeviceInfoByBlueTooth();
while (!deviceInfoReceived)
{
yield return new WaitForEndOfFrame();
}
yield return new WaitForSeconds(0.2f); // 等待0.5秒再请求WiFi信息确保蓝牙通信稳定
GetWifiInfoByBlueTooth();
while (!wifiInfoReceived)
{
yield return new WaitForEndOfFrame();
}
LoadingUI.Hide();
}
public void GetDeviceInfoByBlueTooth()
{
BLECommunicationManager.Instance.ReadDeviceInfo((info) =>
{
Loom.QueueOnMainThread(() =>
{
deviceInfoReceived = true;
infoTexts[0].text = info.GetDeviceModelString();
infoTexts[1].text = info.GetDeviceIdString();
infoTexts[2].text = info.GetSerialNumberString();
infoTexts[3].text = info.GetBleMacAddressString();
infoTexts[4].text = info.GetFirmwareVersionString();
DataManager.Instance.selectedDevice.firmware_version = info.GetFirmwareVersionString();
});
});
}
public void GetWifiInfoByBlueTooth()
{
BLECommunicationManager.Instance.ReadWIFIControl((info) =>
{
Loom.QueueOnMainThread(() =>
{
wifiInfoReceived = true;
infoTexts[5].text = info.SSID;
infoTexts[5].GetComponentInParent<Button>().interactable = true;
});
});
}
public void InitInfoByOnlineData()
{
infoTexts[0].text = DataManager.Instance.selectedDevice.device_model;
infoTexts[1].text = DataManager.Instance.selectedDevice.product_id;
infoTexts[2].text = DataManager.Instance.selectedDevice.device_sn;
infoTexts[3].text = DataManager.Instance.selectedDevice.ble_mac;
infoTexts[4].text = DataManager.Instance.selectedDevice.firmware_version;
infoTexts[5].text ="";
infoTexts[5].GetComponentInParent<Button>().interactable = false;
}
public void Back()
{
UIManager.Instance.RegisterBackAction(GetComponentInParent<DeviceInfoPage>().Back);
Destroy(gameObject);
}
public void OnWifiButtonClick()
{
SetWifiPage wifiPage=Instantiate(setWifiPage, transform);
wifiPage.gameObject.SetActive(true);
wifiPage.Init(WIfiCallback);
}
public void WIfiCallback(string ssid)
{
infoTexts[5].text = ssid;
}
public void OnFirmwareUpdateButtonClick()
{
FirmwareUpdatePage page = Instantiate(firmwareUpdatePage, transform);
page.gameObject.SetActive(true);
}
}
}