Chào các bạn, hiện tại mình làm thu thập dữ liệu cảm biến đã hoàn thành việc thu tín hiệu analog ngay khi nhận được tín hiệu digital input - DI (nút bấm). Nhưng trong 3 tín hiệu analog cần đọc có 1 tín hiệu luôn có sườn tín hiệu đi xuống (falling edge) trước tín hiệu digital khoảng 1s. Vậy nên mình cần làm 1 chức năng để kích hoạt hàm ghi dữ liệu vào file CSV trước khi bấm nút DI. Có điều ,trước giờ mình dùng C++ chỉ quen với chrono::duration để tạo trễ chứ chưa biết chức năng nào của C++ có thể thực hiện điều mình muốn. Thông thường nếu chỉ ghi dữ liệu ngay khi bấm nút thì khoảng thời gian lưu dữ liệu là 1s. Giờ cần lưu thêm 1s trước khi bấm nút. Mình đã đặt thêm đoạn code trong vòng lặp do-while và chrono nhưng chưa ra kết quả như ý. Mong các bạn gợi ý để mình biết phương hướng giải quyết.
Xử lí dữ liệu dựa trên tín hiệu timer C++
Bạn lưu tạm dữ liệu trước khi bấm nút 1s vào memory ấy cho nó nhanh ko cần lưu file làm gì.
Bạn thử sài mấy thư viện scheduler như cái này xem https://github.com/Bosma/Scheduler, cứ loop với while ko đẹp lắm
Cảm ơn bạn,
mình đã xem qua thư viện ấy. Theo mình hiểu thì trong class Schedule có thành phần every(std::chrono::seconds(1), message, “every second”); trong đó message là 1 hàm mặc định in ra “every second”. Vậy mình chỉ cần thay vào đó viết code đọc dữ liệu rồi lưu tạm vào 1 buffer với size vừa vặn với số dữ liệu có thể đọc trong 1s để sau khi bấm nút DI sẽ đẩy data trong buffer đó qua file CSV để lưu tổng 2s dữ liệu phải ko?
Kiểu vậy bạn ạ, vì ko thể nào biết đc chính xác lúc nào là 1s trước khi bấm nút nên mỗi 2 giây bạn phải liên tục ghi lại giữ liệu vào memory, bắt đầu phiên mới thì xóa giữ liệu cũ đi là đc.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?