Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Преобразовние в int строки C#

  1. #1
    Аватар для UZ5DM
    Регистрация
    27.07.2017
    Адрес
    nr Uzhgorod
    Сообщений
    287
    Записей в дневнике
    1
    Позывной
    UZ5DM

    Преобразовние в int строки C#

    Привет всем !
    Есть Ардуино Мега 2560. Через UART выталкиваю данные и принимаю на компе

    While (1)
    {
    Serial.println(Strin g(MyValue)); // код из Ардуино
    }

    На компе (Win10 стоит Visual Studio 2017)
    Пишу обработчик :

    void serialPort1_DataRece ived(object sender, SerialDataReceivedEv entArgs e)
    {

    string readstring = serialPort1.ReadLine ();

    this.Invoke(new EventHandler(display _data_event));
    }

    private void display_data_event(o bject sender,EventArgs e)
    {
    value = Convert.ToInt32(read string); //
    }
    При выполнении программы выдает ошибку -
    System.FormatExcepti on: "Входная строка имела неверный формат."

    Но есть период когда этой ошибки нет - в поле куда выводится readstring отображаются данные например 300
    Именно на строке преобразования в int (целое)

    Коннект с портом происходит без проблем

    Подскажите где искать проблему. Спасибо огромное


  2. #2
    try
    {
    int value = Int32.Parse(readstring);
    int value_2 = Int16.Parse(readstring_2);
    }
    catch (FormatException) { }

  3. Спасибо от UZ5DM

  4. #3

    Регистрация
    15.09.2006
    Адрес
    Харьков
    Сообщений
    446
    Позывной
    ur3les
    Напишите нормальный обработчик с обработкой ошибок как приведено в https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
    Вот как Ваш код должен реагировать на ситуацию, когда входной параметр невозможно отобразить в виде целого int?

  5. #4
    Аватар для UZ5DM
    Регистрация
    27.07.2017
    Адрес
    nr Uzhgorod
    Сообщений
    287
    Записей в дневнике
    1
    Позывной
    UZ5DM
    Просматривая отладчиком значения readstring - я увидел что значения бывают такие:
    "281\r1\r"
    или
    "" - т.е. пустая строка
    Из за этого неправильно работает функция преобразования
    Как победить это ?

  6. #5

    Регистрация
    15.09.2006
    Адрес
    Харьков
    Сообщений
    446
    Позывной
    ur3les
    Надо поймать эксепшн в обработчике чтобы программа не падала. А уж откуда такие данные берутся это вам виднее, варианта два, либо такое и посылает девайс, тогда копать там, либо битые данные читаете из СОМ порта. Или чего Вы хотите, какой реакции Вы ожидаете от преобразования такой ахинеи к целому числу?

  7. #6

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,420
    Код:
    if (!int.TryParse(readstring, out value))
    {
        // тут делаешь что тебе надо, если readstring не содержит число, например присваиваешь 0:
        value = 0;
    }
    Цитата Сообщение от UZ5DM Посмотреть сообщение
    стоит Visual Studio 2017
    та что 80 гигабайт весит?

  8. #7

    Регистрация
    15.02.2014
    Адрес
    Краснодарский край
    Сообщений
    10,441
    alex_m,
    та что 80 гигабайт весит?
    больше, в районе 100, но это если все что есть загрузить.

  9. #8

    Регистрация
    10.11.2016
    Адрес
    Харьков
    Сообщений
    4,420
    какой ужас Судя по темпам роста, VS2019 будет порядка 1 терабайта весить...

  10. #9
    Аватар для UZ5DM
    Регистрация
    27.07.2017
    Адрес
    nr Uzhgorod
    Сообщений
    287
    Записей в дневнике
    1
    Позывной
    UZ5DM
    С девайса все идет нормально. Просто там в конце строки добавляется символы перевода строки "\r"
    Я сейчас думаю как их отловить. Скорость обмена с портом выставил маленькую 9600
    По поводу Visual Studio 2017 - я не задумывался сколько он "весит" - мне это все равно. Главное что хорошо работает.


  11. #10
    Цитата Сообщение от UZ5DM Посмотреть сообщение
    Я сейчас думаю как их отловить.
    string response = serialPort1.ReadTo("\r");

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Модуль рекламной строки P10 320x160
    от Lorem Ipsum в разделе Темы не вошедшие в другие разделы форума
    Ответов: 0
    Последнее сообщение: 08.02.2013, 11:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •