【发布时间】:2017-05-11 15:12:19
【问题描述】:
我有字符串:
- 湿度:33 %
- 温度:25.7摄氏度
- 可见光:112 lx
- 红外辐射:1802.5 mW/m2
- 紫外线指数:0.12
- CO2:404 ppm CO2
- 压力:102126帕
我必须提取 'Humidity:' 之后的所有数字,.. 我正在考虑使用 Regex 类,但我不知道该怎么做
我获取串行数据的代码:
namespace Demo1Arduino
{
public partial class MainWindow : Window
{
private SerialPort port;
DispatcherTimer timer = new DispatcherTimer();
private string buff;
public MainWindow()
{
InitializeComponent();
}
private void btnOpenPort_Click(object sender, RoutedEventArgs e)
{
timer.Tick += timer_Tick;
timer.Interval = new TimeSpan(0, 0, 0, 0, 500);
timer.Start();
try
{
port = new SerialPort(); // Create a new SerialPort object with default settings.
port.PortName="COM4";
port.BaudRate = 115200; // Opent de seriele poort, zet data snelheid op 9600 bps.
port.StopBits = StopBits.One; // One Stop bit is used. Stop bits separate each unit of data on an asynchronous serial connection. They are also sent continuously when no data is available for transmission.
port.Parity = Parity.None; // No parity check occurs.
port.DataReceived += Port_DataReceived;
port.Open(); // Opens a new serial port connection.
buff = "";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void timer_Tick(object sender, EventArgs e)
{
try
{
if(buff != "")
{
textBox.Text += buff;
buff = "";
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[128];
int len = port.Read(buffer, 0, buffer.Length); // .Read --> Reads a number of characters from the SerialPort input buffer and writes them into an array of characters at a given offset.
if(len>0)
{
string str = "";
for (int i=0; i<len; i++)
{
if (buffer[i] != 0)
{
str = str + ((char)buffer[i]).ToString();
}
}
buff += str;
}
// throw new NotImplementedException();
}
}
谢谢
【问题讨论】:
-
你为什么要为此使用正则表达式?
String.Split(':');。 dotnetfiddle.net/OpX8Nq 。此外,您提供的任何代码都与您正在尝试做的事情无关...... -
您的问题基本上是 - “我如何从字符串中获取数字”?您的其余代码无关紧要。我没有看到足够的研究来解决这个问题。所以不是“我想要这个。我该怎么做?”服务。您需要提供您可能遇到的问题的详细信息以及您尝试解决的问题。我建议您以stackoverflow.com/questions/4734116/… 为起点...
-
你的问题是什么?我所看到的只是“这是任务”和“这是我的代码”。在这里,我们提出了一些具体的问题,即我们提供了一些代码和所需的输出以及我们得到的而不是这个。
标签: c# regex serial-port substring extract