c#读取串口重量基数标尺210

时间:2017-01-12 05:00:29

标签: c# parsing serial-port

我已经能够将指示器的数据显示给我的电脑,

输出看起来像这个

  

" [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);
            }
        }
    }

但显示不完整的数字,最后一个数字零没有输入

输出:

  

978

我正在使用指标http://www.cardinalscale.com/cs_product/210-storm/

有什么不对吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Regex从字符串中提取数字,然后使用Trim来删除空格。

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

如果你需要它作为数字,当然

int weight = int.Parse(result);

答案 1 :(得分:0)

替换

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

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