tôi có mã này:Làm cách nào để xem 10 Điểm dữ liệu cuối cùng trong biểu đồ cập nhật từng giây?
private void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
for (int i = 0; i < TOTAL_SENSORS; i++)
{
DateTime d = DateTime.Now;
devices[i].Value = float.Parse(serialPort.ReadLine());
if (chart1.Series[i].Points.Count > MAX_POINTS)
{
//see the most recent points
}
chart1.Series[i].Points.AddXY(d, devices[i].Value);
}
timer.Start();
}
Phần này của mã của tôi là sự kiện đánh dấu của timer nơi tôi vẽ một biểu đồ và tôi cần phải cập nhật nó mỗi tick.I giữ thêm điểm và khi đếm điểm đạt MAX_POINTS (10) nó loại bỏ các điểm đầu tiên và thêm một điểm mới ở cuối.
Vấn đề là khi đạt đến MAX_POINTS, nó bắt đầu xóa điểm ở cuối và biểu đồ không tự động ghi. Tất cả các điểm bị xóa và không có điểm mới nào được thêm vào.
Hãy giúp tôi và nói những gì tôi cần thay đổi biểu đồ để hoạt động như tôi đã nói.
CHỈNH SỬA 1: Tôi đang sử dụng Biểu mẫu Windows.
CHỈNH SỬA 2: AddXY và RemoveAt không phải là của tôi, chúng là từ bộ sưu tập điểm.
CHỈNH SỬA 3: Tôi cũng muốn biết cách có 'phạm vi' và xem dữ liệu cho giờ trước hoặc trong tuần cuối cùng hoặc cho tháng trước.
EDIT 4: Tôi đã thay đổi câu hỏi của tôi một chút, bây giờ tôi muốn mở rộng bảng xếp hạng để hiển thị các điểm từ giờ cuối cùng/ngày
Đây có phải là sử dụng WinForms hoặc WPF không? Trong WPF, bạn có thể sử dụng DataBinding để một ObservableCollection và sau đó bạn không phải lo lắng về việc cập nhật giao diện người dùng (chỉ bộ sưu tập). –
Tôi tự hỏi liệu bạn có thực hiện riêng của lớp Collection/List không? Hoặc RemoveAt đó là triển khai của riêng bạn cùng với AddXY()? – sll
@sllev chúng là từ bộ sưu tập điểm và tôi đã không thay đổi bất kỳ thứ gì thành các lớp adn điểm mặc định của biểu đồ. – Bosak