Bitte helfen Sie mir, mit C# WPF ein Diagramm mit einem Live-Diagramm zu erstellenC#

Ein Treffpunkt für C#-Programmierer
Guest
 Bitte helfen Sie mir, mit C# WPF ein Diagramm mit einem Live-Diagramm zu erstellen

Post by Guest »

Ich arbeite daran, ein Diagramm zu erstellen und die Datenbank mit C# WPF nachzuschlagen. Es ist mir gelungen, die DB-Suche und das Diagramm durchzuführen.
Ist es möglich, ein Diagramm dieser Form auf einem Live-Diagramm zu erstellen? Kann ich den Wert lesen und ihn entsprechend der Uhrzeit in der Mitte ausdrucken lassen?
[img]https://i.sstatic. net/451XHqLj.png[/img]

Bitte geben Sie eine Beschreibung des Bildes ein.
Ich mache das gerade. Es ist nicht die Form, die ich möchte, weil es wie unten herauskommt. ChatGPT ist möglich, aber ich glaube nicht, dass es möglich ist, da die Zeile automatisch am linken oder rechten Ende beginnt. Ist das möglich?
Image

Selbst wenn ich die Daten später lese, weiß ich nicht, wie ich die Werte nach einiger Zeit eingeben soll. Ich brauche 5 Zeilen.

Code: Select all

    public List GetSensingData(int _iCount)
{
List dataPoints = new List();
var query = $"SELECT {sSensorId}, {sSensorTime}, {sSensorValue} FROM {sSensorTable} ORDER BY {sSensorTime} DESC LIMIT {_iCount}";

using (var connection = new MySqlConnection(sConnectionString))
{
connection.Open();
using (var command = new MySqlCommand(query, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
dataPoints.Add(new SensingDataPoint
{
ID = reader.GetInt32(0),  // ID 컬럼은 인덱스 0
Time = reader.GetDateTime(1),  // Time 컬럼은 인덱스 1
Value = reader.GetDouble(2)  // Value 컬럼은 인덱스 2
});
}
}
}
}
return dataPoints;
}

public class SensingDataPoint
{
public int ID { get; set; }
public DateTime Time { get; set; }
public double Value { get; set; }
}
// 실시간 데이터 업데이트 메서드
private void vUpdateChartData()
{
// X축 레이블 설정
if (SelectedData == MainViewModel.DataSelection.Value)
{
// 각 ID의 센서 데이터를 최신 데이터로 가져오기
var SensorDataPoints = dbHelper.GetSensingData(iReadCount);

// UI 스레드에서 차트 업데이트
Application.Current.Dispatcher.Invoke(() =>
{
ID1SensorValues.Clear();
ID2SensorValues.Clear();
ID3SensorValues.Clear();
ID4SensorValues.Clear();
ID5SensorValues.Clear();
vUpdateSeries(SensorDataPoints);

});

}
}
private void vUpdateSeries(List dataPoints)
{
// 기존 값 초기화
foreach (var point in dataPoints)
{
if (selectedData == DataSelection.Value)
{
TimeLabels.Add(point.Time.ToString("HH:mm:ss"));
switch (point.ID)
{
case 1:
ID1SensorValues.Add(point.Value);
ID2SensorValues.Add(0);
ID3SensorValues.Add(0);
ID4SensorValues.Add(0);
ID5SensorValues.Add(0);
break;
case 2:
ID1SensorValues.Add(0);
ID2SensorValues.Add(point.Value);
ID3SensorValues.Add(0);
ID4SensorValues.Add(0);
ID5SensorValues.Add(0);
break;
case 3:
ID1SensorValues.Add(0);
ID2SensorValues.Add(0);
ID3SensorValues.Add(point.Value);
ID4SensorValues.Add(0);
ID5SensorValues.Add(0);
break;
case 4:
ID1SensorValues.Add(0);
ID2SensorValues.Add(0);
ID3SensorValues.Add(0);
ID4SensorValues.Add(point.Value);
ID5SensorValues.Add(0);
break;
case 5:
ID1SensorValues.Add(0);
ID2SensorValues.Add(0);
ID3SensorValues.Add(0);
ID4SensorValues.Add(0);
ID5SensorValues.Add(point.Value);
break;
default:
break;
}
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post