Unity3D блютуз последовательная подача проблема C # - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть модуль Bluetooth, который передает поток строк в приложение Unity.Похоже на строковую переменную.Это x, y и z от датчика imu.Я пытаюсь разделить значения на их собственные переменные x, y, z, то есть: int x, int y и int z.

Так что, когда я пытаюсь код ниже.Это ошибка:

FormatException: входная строка была в неправильном формате.System.Number.StringToNumber (System.String str, параметры System.Globalization.NumberStyles, System.Number + NumberBuffer & number, информация System.Globalization.NumberFormatInfo, System.Boolean parseDecimal) (в: 0)

   Code (csharp):
   public void fishing()
   {
    string numo = "4,-1,5,7,8,10,5,-4,8,10,-30";
    string[] splitted = numo.Split(',');
    int[] nums = new int[splitted.Length];
    for (int i = 0; i < splitted.Length; i++)
    {
        //source of error.
        nums[i] = int.Parse(splitted[i], 
        System.Globalization.NumberStyles.AllowLeadingSign);
        int x = nums[0];
        int y = nums[1];
        int z = nums[2];
        Debug.Log(x);
        Debug.Log(y);
        Debug.Log(z);

    }
    }

Затем я попытался запустить код без целочисленного преобразования.Это ошибка:

IndexOutOfRangeException: индекс находился за пределами массива.

  Code (csharp):
  public void fishing()
  {
    string numo = "4,-1,5,7,8,10,5,-4,8,10,-30";
    string[] splitted = numo.Split(',');
    int[] nums = new int[splitted.Length];
    for (int i = 0; i < splitted.Length; i++)
    {
        string x = splitted[0];
        string y = splitted[1];
        string z = splitted[2];
        Debug.Log(x);
        Debug.Log(y);
        Debug.Log(z);

      }
    }

Итак, как объяснено, у меня есть строка x, y, z, x, y, z,x, y, z из модуля Bluetooth.Я хотел бы получить данные и установить их в качестве различных переменных.

int x;Int Y, INT Z

Надеюсь, вы можете помочь

1 Ответ

0 голосов
/ 01 декабря 2018

У вас не было рабочего кода, поэтому я не знаю, поможет ли это вам:

public void fishing()
        {
            string numo = "4,-1,5,7,8,10,5,-4,8,10,-30";
            string[] splitted = numo.Split(',');
            int[] nums = new int[splitted.Length];

            for (int i = 0; i < splitted.Length; i++)
            {
                if (splitted[i] == "") continue;
                var oneNum = int.Parse(splitted[i]);

                Debug.WriteLine(oneNum);
            }
        }

Вы должны быть в состоянии отладить код при подключении к устройству Bluetooth, чтобы проверить, действительно ли выполучить правильный ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...