чтение нескольких значений данных из последовательного порта с помощью c # - PullRequest
0 голосов
/ 24 апреля 2018

Я отправляю несколько данных на C #, используя последовательный порт.Я хочу преобразовать string[] в целые числа и использовать их в if statement:

string[] c = serialPort1.ReadExisting().Split(',');
int b = Int32.Parse(c[0]);
int d = Int32.Parse(c[1]);   

Но я получаю ошибку:

Исключение типа 'Система.FormatException 'произошла в mscorlib.dll, но не была обработана в коде пользователя. Дополнительная информация: входная строка была в неправильном формате'

1 Ответ

0 голосов
/ 24 апреля 2018

Из того, что вы нам дали, похоже, что данные, которые вы пытаетесь проанализировать, имеют неправильный формат. Похоже, что это может произойти, поэтому, вероятно, было бы лучше использовать попытку синтаксического анализа, которая предотвратит сбои системы в случае, если это произойдет снова.

Используйте try parse следующим образом только для первого int, но оно должно быть достаточно простым для добавления к другому int:

if (c.Length > 1) {
    int b;
    int d;


    bool result = Int32.TryParse(c[0], out b);
    bool result1 = Int32.TryParse(c[1], out d);
    if (result && result1) {
        if (b < 200) {
        //Do Something!!!
        }
    } else {
        //Do Whatever you wanted to do when the data was incorrect
        Console.WriteLine("Attempted conversion of '{0}' failed.", 
                                   value == null ? "<null>" : value);
    }
} else {
   //Input from socket comms was not of the correct input!!!
}

Источник: https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx

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