C# のシリアル ポートからデータを読み込んでいます。現在、マイクロコントローラーに 2 つのセンサーがあり、アプリケーションで両方のセンサーからデータを受信しています。
着信は次のようになります。
:*123*188;
ここで、
:
データの開始を表します
*
最初の出現はセンサー 1 のデータを示します
*
2 番目のオカレンスは、センサー 2 のデータを示します
;
データの終わりを表す
私が使用した句読点を取り除くには:
var DataPacket = SensorData.Split(new[]{":",";"},StringSplitOptions.RemoveEmptyEntries)
今、私は去りました: *123*188。2 つのセンサー データを分離して、別のテキスト ボックスに入れる方法を教えてください。
私が試してみました:
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 文字列 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();
}
}
}