我已经能够将指示器的数据显示给我的电脑,
输出看起来像这个
" [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/
有什么不对吗?
答案 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);