2017-01-12 42 views
0

我已經能夠指標的數據顯示,到我的電腦,C#讀串口體重基數規模210

輸出的樣子 - 這

「[SPACE] [SPACE] 9780公斤」

[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

您可以使用正則表達式從字符串中提取數字,然後使用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);