Приложение Unity3d для UWP зависает при использовании SerialDevice - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть фрагмент кода, который я хочу использовать с Unity 2018.2.14.f1.

#if UNITY_WSA && !UNITY_EDITOR

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Windows.Devices.Enumeration;
using Windows.Devices.SerialCommunication;

namespace SerialForUWP
{
    public class SerialComHelper
    {
        public async static Task<string[]> GetPorts()
        {
            var serials = SerialDevice.GetDeviceSelector();
            var coms = await DeviceInformation.FindAllAsync(serials);

            List<string> results = new List<string>();
            foreach (var device in coms)
            {
                using (var serialDevice = await SerialDevice.FromIdAsync(device.Id))
                {


                    if (serialDevice != null)
                    {
                        var port = serialDevice.PortName;
                        results.Add(port.ToString());
                    }
                }
            }

            return results.ToArray();
        }
    }
}

#endif

Я компилирую для UWP, используя IL2CPP:

enter image description here

Я также уже обновил манифест проекта cpp:

<DeviceCapability Name="serialcommunication">
  <Device Id="any">
    <Function Type="name:serialPort" />
  </Device>
</DeviceCapability>

Как только я пытаюсь использовать функцию GetPorts (), моё приложение зависает.

    void Update()
    {
        text.text = Time.time.ToString();
        if (Input.GetKeyUp(KeyCode.Space))
        {
            try
            {
#if UNITY_WSA && !UNITY_EDITOR
                foreach (var com in SerialForUWP.SerialComHelper.GetPorts().Result)
                {
                    text.text = com;
                }
#endif
            }
            catch (Exception ex)
            {
                text.text = ex.ToString();
            }

        }
    }

У меня нет ошибок, нет исключений.

Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Согласно этому ответу Я не могу использовать .Результат

0 голосов
/ 02 ноября 2018

Для получения исключений используйте:

Debug.Log (ex.ToString ()) вместо Text.text = ex.ToString ()

...