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 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;
}
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post