我正在从 C# 中的串行端口读取数据。目前我的微控制器上有两个传感器,我正在从我的应用程序中的两个传感器接收数据。
传入看起来像这样:
:*123*188;
where,
:
代表数据的开始
*
第一次出现表示传感器 1 数据
*
第二次出现表示传感器 2 数据
;
代表数据结束
为了摆脱我使用的标点符号:
var DataPacket = SensorData.Split(new[]{":",";"},StringSplitOptions.RemoveEmptyEntries)
现在我离开了:*123*188。如何分离两个传感器数据并将它们放在不同的文本框中。
我努力了:
foreach(var Data in DataPacket)
{
string bits[] = Data.Split(new[] {"*"},StringSplitOptions.RemoveEmptyEntries);
}
但是,textbox1.Text = bits[0]
在同一个框中同时读取传感器 1 和传感器 2 的值。并且bits[1]
越界了。
请指导我解决这个问题。
编辑:这是读取数据并尝试对其进行相应拆分的扩展代码:
private void OnReceive(object sender, System.IO.Ports.SerialDataReceivedEventArgs s) { //FOR 1 SENSOR string SensorData = AvailablePort.ReadLine(); this.BeginInvoke(new LineReceivedEvent(LineReceived), SensorData);
}
private delegate void LineReceivedEvent(string SensorData);
private void LineReceived(string SensorData)
{
/*** FOR SECOND SENSOR****************/
int startReading = SensorData.IndexOf(":");
int endReading = SensorData.IndexOf(";");
/******** ************/
//int userRange = Convert.ToInt32(Temp_Range.SelectedValue);
//int data = Int32.Parse(SensorData);
/*** FOR SECOND SENSOR ************************************************/
var DataPacket = SensorData.Split(new[] { ":", ";" }, StringSplitOptions.None);
foreach (var Data in DataPacket)
{
//textBox1.Text = Data;
//TRYING TO READ MORE THAN 1 SENSOR HERE
var newData = SensorData.Split(new[] { "*" }, StringSplitOptions.None);
while(true)
{
foreach (var data in newData)
{
textBox1.Text = data[0].ToString();
}
}
}