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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Bitte helfen Sie mir, mit C# WPF ein Diagramm mit einem Live-Diagramm zu erstellen

by Guest » 03 Jan 2025, 10:27

Ich arbeite daran, ein Diagramm zu erstellen und die Datenbank mit C# WPF nachzuschlagen.
Es ist mir gelungen, die Datenbanksuche und das Diagramm durchzuführen.
Ist es möglich, ein Diagramm zu erstellen? dieser Form auf einem Live-Chart?
Kann ich den Wert ablesen und ihn entsprechend der Zeit in der Mitte ausdrucken lassen?
Image

Bitte geben Sie eine Beschreibung des Bildes ein.
Ich mache das geradeEs 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, weil die Linie automatisch am linken oder rechten Ende beginnt. Ist es möglich?
Image
Selbst wenn ich die Daten später lese, würde ich Ich weiß 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;
}
}
}
}

Top