2016-12-27 5 views
-2

enter image description hereКак удалить нулевое значение?

private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     if (Clos_flag) return; 
     try 
     { 
      Listening = true; 
      if (serialPort.IsOpen) 
      { 
       this.txt_weight.Invoke(new MethodInvoker(delegate 
       { 

        //txt_weight.Text = serialPort.ReadLine(); 
        serialPort.NewLine = "\r"; 
        string weight = serialPort.ReadLine(); 
        if (weight.IndexOf(")") > 0) 
        { 
         weight = weight.Substring(3, 8); 
         // txt_weight.Text = weight.Substring(0, weight.LastIndexOf("0") + 1); 
        } 
       })); 

      } 
     } 
     catch (Exception eg) 
     { 
      MessageBox.Show(eg.ToString()); 
     } 
     finally 
     { 
      Listening = false; 
     } 
    } 

Что я должен изменить, чтобы удалить первый нуль на картинке, выше код я использую. Я попытался изменить подстроку на (2,8), но все же она не работает. я получаю значение из весом машины, когда пользователь нажимает на кнопку «Открыть последовательный порт»

+1

You typed ")" вместо "0" в вашем 'if()' statement. – CodeCaster

+0

Что ваш 'string weight = serialPort.ReadLine();' содержит точную строку. ?? –

+0

Есть ли когда-нибудь пробел (-ы) после этого ведущего 0? – Edward

ответ

1

Изменить эту строку:

string weight = serialPort.ReadLine(); 

к этому:

string weight = serialPort.ReadLine().TrimStart('0').Trim(); 

Что это будет делать readline, обрезать первый 0, затем обрезать внешние (начальные и конечные) пробелы перед загрузкой значения в объявленную переменную

+0

становится пустым – David

+0

@David Что делает? когда я запускаю 'Console.WriteLine (« 0 33200 ».TrimStart ('0'). Trim());' Я получаю 33200 – Edward

+0

@David. Я вижу, что вы выбрали ответ с весом жесткого кода. Вы никогда не получали мое предложение? Кроме того, если вы сделали это, вы можете повысить это, даже если вы выберете ответ, вы все равно можете продвигать других, которые пытаются вам помочь; либо в полезных комментариях или ответах. Спасибо – Edward

1

Похоже, это может быть вызвано многими факторами.

Ознакомившись с кодом, нулевой вывод должен быть удален, так как вы уже подставляете первые два символа.

Я вижу, что ваша функция serialPort_DataReceived считывает данные с устройства в вашем порту, поэтому я предполагаю, что ваш снимок экрана сделан с устройства вывода.

Try и жесткий код

weight = "12345"; 

Если проблема все еще сохраняется, она будет вызвана не кодом, а устройства, и т.д ..

Надежда это помогает ~

Смежные вопросы