2017-01-12 18 views
0

я смог показать данные индикатора на мой компьютер,C# Читайте серийный вес порта кардинальной шкала 210

выход выглядеть-эта

«[SPACE] [SPACE] +978 0kg»

[SPACE] пространство текста (пусто)

Я хочу, чтобы отобразить только цифры,

Я использую следующий сценарий.

private delegate void Closure(); 
    private void SerialPortOnDataReceived(object sender, SerialDataReceivedEventArgs serialDataReceivedEventArgs) 
    { 
     if (InvokeRequired)  //<-- Makes sure the function is invoked to work properly in the UI-Thread 
      BeginInvoke(new Closure(() => { SerialPortOnDataReceived(sender, serialDataReceivedEventArgs); }));  //<-- Function invokes itself 
     else 
     { 
      while (_serialPort.BytesToRead > 0) //<-- repeats until the In-Buffer is empty 
      { 
       String tampung = _serialPort.ReadExisting(); 
       Regex regex = new Regex(@"[^\d|\.]"); 

       tampung = regex.Replace(tampung, ""); 


       textBox1.Text += string.Format("{0:X2} ", tampung); 
      } 
     } 
    } 

но отображает неполные цифры, последнее число ноль не вступал

выход:

Я использую индикатор http://www.cardinalscale.com/cs_product/210-storm/

ли там что-то не так?

ответ

0

Вы можете использовать Regex для извлечения чисел из строки, затем Trim удалить удаленные пробелы.

string input = " 940 0Kg"; 
string result = Regex.Replace(input, @"[^\d]", "").Trim(); 

И если вам это нужно как число, конечно

int weight = int.Parse(result); 
0

Заменить

String tampung = _serialPort.ReadExisting(); 
Regex regex = new Regex(@"[^\d|\.]"); 

с

string tampung = _serialPort.ReadExisting(); 
string pattern = @"(\d+\.\,\d+)"; 
MatchCollection matches = Regex.Matches(tampung, pattern); 

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

  • Нет связанных вопросов^_^