Closed ivanjimenez closed 1 year ago
En Unity o WPF?
Para Unity. Algo sencillo para ver si funciona con estos sensores.
Rama unity.
Llamar a la funcion private void ChangeOutput(string text)
para cambiar el texto
`using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Text.RegularExpressions; using System.Threading; using TMPro; using UnityEditor.PackageManager; using UnityEngine; using UnityEngine.UI; using WisewalkSDK;
public class ActiSense : MonoBehaviour { public Wisewalk api;
string error;
public string portName = "";
public List<Wisewalk.ComPort> ports;
public string port_selected = "";
public List<Wisewalk.Dev> scanDevices = new List<Wisewalk.Dev>();
[SerializeField] public TMP_Text stateText;
[SerializeField] public Transform cube;
public Quaternion inverseQt;
public Quaternion rawQt;
public Button ConnectButton;
void setStateText(string text)
{
if (stateText == null) return;
stateText.text = text;
}
void StartProcess()
{
api.Open("COM6", out error);
if (!api.ScanDevices(out error))
{
// Error
Trace.WriteLine("", "Error to scan devices - " + error);
}
else
{
Thread.Sleep(2000);
}
}
public void ShowPorts()
{
foreach (Wisewalk.ComPort port in ports)
{
Match match1 = Regex.Match(port.description, "nRF52 USB CDC BLE*", RegexOptions.IgnoreCase);
if (match1.Success)
{
port_selected = port.name;
Trace.WriteLine(port.description);
}
}
}
public void Api_scanFinished(List<Wisewalk.Dev> devices)
{
scanDevices = devices;
ShowScanList(scanDevices);
}
public void ShowScanList(List<Wisewalk.Dev> devices)
{
for (int idx = 0; idx < devices.Count; idx++)
{
string macAddress = devices[idx].mac[5].ToString("X2") + ":" + devices[idx].mac[4].ToString("X2") + ":" + devices[idx].mac[3].ToString("X2") + ":" +
devices[idx].mac[2].ToString("X2") + ":" + devices[idx].mac[1].ToString("X2") + ":" + devices[idx].mac[0].ToString("X2");
setStateText("MacAddress: " + macAddress);
}
}
// Use this for initialization
void Start()
{
api = new Wisewalk();
api.scanFinished += Api_scanFinished;
//ConnectButton.onClick.AddListener(onClick);
inverseQt = Quaternion.identity;
StartProcess();
api.ScanDevices(out error);
}
// Update is called once per frame
void Update()
{
float qx = 1.0f;
float qy = 0.75f; ;
float qz = 0.5f;
float qw = 0.25f;
//setStateText("qx: " + qx.ToString("0.00000") +
// ", qy: " + qy.ToString("0.00000") + ", qz: " + qz.ToString("0.00000") +
// ", qw: " + qw.ToString("0.00000") + " port selected: " + ports);
//rawQt = new Quaternion(0, qx, 0, qw);
//rawQt = new Quaternion(-qz, 0, 0, qw);
//rawQt = new Quaternion(0, 0, qy, qw);
rawQt = new Quaternion(-qz, qx, qy, qw);
//cube.rotation = rawQt * inverseQt;
}
public void resetRotation()
{
inverseQt = Quaternion.Inverse(rawQt);
}
}`
Realizar una simpe interface para escanear, conectar y hacer stream con un imu de Wisewalk.
Es algo muy simple:
Que permita escanear, conectar y hacer streaming sacando los quaterniones en la caja de texto.
No es algo prioritario. Puedes hacerlo cuando quieras cambiar de tarea o acabes lo del GRF.