This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
ARPlusSystem/ARPlusSystem-250418/Assets/Scripts/RTK/RTKDevManager.cs

173 lines
3.7 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;
public class RTKDevManager : MonoBehaviour
{
private Text textConnState;
private Button btnTest;
private Text textTestPrompt;
private Button btnConnect;
private Text textConnStatus;
// Start is called before the first frame update
private Button btnDisconnect;
private Button btnDiscovery;
private Text textDiscovery;
private string mStrMacAddr = "20:AC:3B:26:C7:EB";
void Start()
{
RTKDev.RequestPermissions();
RTKDev.EnsureInstance();
InitControls();
}
void InitControls()
{
GameObject go1 = GameObject.Find("/Canvas/ButtonConn");
btnConnect = go1.GetComponent<Button>();
GameObject go2 = GameObject.Find("/Canvas/TextConn");
textConnStatus = go2.GetComponent<Text>();
GameObject go3 = GameObject.Find("/Canvas/ButtonTest");
btnTest = go3.GetComponent<Button>();
GameObject go4 = GameObject.Find("/Canvas/TextTest");
textTestPrompt = go4.GetComponent<Text>();
GameObject go5 = GameObject.Find("/Canvas/ButtonDisc");
btnDiscovery = go5.GetComponent<Button>();
GameObject go6 = GameObject.Find("/Canvas/TextDisc");
textDiscovery = go6.GetComponent<Text>();
GameObject go7 = GameObject.Find("/Canvas/TextConnState");
textConnState = go7.GetComponent<Text>();
GameObject go8 = GameObject.Find("/Canvas/ButtonDisconn");
btnDisconnect = go8.GetComponent<Button>();
btnDiscovery.onClick.AddListener(Discovery);
btnConnect.onClick.AddListener(Connect);
btnTest.onClick.AddListener(Test);
btnDisconnect.onClick.AddListener(Disconnect);
}
void Discovery()
{
BluetoothManager.StartDiscovery();
textDiscovery.text = ("Start Searching...");
StopAllCoroutines();
StartCoroutine(PopulateListAsync());
}
IEnumerator PopulateListAsync()
{
bool founded = false;
while (true)
{
// Get List
var deviceList = BluetoothManager.GetAvailableDevices();
// Populate List
foreach (var device in deviceList)
{
int len = deviceList.Count;
if (device.mac.Equals(mStrMacAddr))
{
textDiscovery.text = ("Dev founded");
founded = true;
break;
}
}
if (founded == true)
{
yield return null;
}
else
{
// update every 1s
// print("Updated device list. count="+deviceList.Length);
textDiscovery.text = "Dev re discovery";
yield return new WaitForSecondsRealtime(1);
}
}
}
void Connect()
{
RTKDev.Connect();
int i = 0;
}
void Disconnect()
{
RTKDev.Disconnect();
int i = 0;
}
void Test()
{
StopAllCoroutines();
int result = RTKDev.Test();
textTestPrompt.text = string.Format("Add Result from unity:{0}\n", result);
}
// Update is called once per frame
void Update()
{
}
void OnGUI()
{
int state = RTKDev.GetConnectState();
if (state == 0)
{
textConnState.text = "Not Connect";
}
else if (state == 1)
{
textConnState.text = "Connecting";
}
else if (state == 2)
{
textConnState.text = "Connected";
}
else
{
textConnState.text = "Unknown";
}
}
}