Tôi muốn biết nếu có cách nào trong C
để ghi đè giá trị hiện có đã được in thay vì tạo dòng mới mỗi lần hoặc chỉ di chuyển qua một khoảng trắng. Tôi cần lấy dữ liệu thời gian thực từ một cảm biến và muốn nó chỉ ngồi đó và tiếp tục cập nhật các giá trị hiện tại mà không cần cuộn. Điều này có thể không?Cập nhật giá trị printf trên cùng một dòng thay vì mới
UPDATE: thêm mã
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdint.h>
#include <time.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#define CTRL_REG1 0x20
#define CTRL_REG2 0x21
#define CTRL_REG3 0x22
#define CTRL_REG4 0x23
int fd;
short x = 0;
short y = 0;
short z = 0;
int main(){
fd = wiringPiI2CSetup(0x69); // I2C address of gyro
wiringPiI2CWriteReg8(fd, CTRL_REG1, 0x1F); //Turn on all axes, disable power down
wiringPiI2CWriteReg8(fd, CTRL_REG3, 0x08); //Enable control ready signal
wiringPiI2CWriteReg8(fd, CTRL_REG4, 0x80); // Set scale (500 deg/sec)
delay(200); // Wait to synchronize
void getGyroValues(){
int MSB, LSB;
LSB = wiringPiI2CReadReg8(fd, 0x28);
MSB = wiringPiI2CReadReg8(fd, 0x29);
x = ((MSB << 8) | LSB);
MSB = wiringPiI2CReadReg8(fd, 0x2B);
LSB = wiringPiI2CReadReg8(fd, 0x2A);
y = ((MSB << 8) | LSB);
MSB = wiringPiI2CReadReg8(fd, 0x2D);
LSB = wiringPiI2CReadReg8(fd, 0x2C);
z = ((MSB << 8) | LSB);
}
for (int i=0;i<10;i++){
getGyroValues();
// In following Divinding by 114 reduces noise
printf("Value of X is: %d\r", x/114);
// printf("Value of Y is: %d", y/114);
// printf("Value of Z is: %d\r", z/114);
int t = wiringPiI2CReadReg8(fd, 0x26);
t = (t*1.8)+32;//convert Celcius to Fareinheit
int a = wiringPiI2CReadReg8(fd,0x2B);
int b = wiringPiI2CReadReg8(fd,0x2A);
// printf("Y_L equals: %d\r", a);
// printf("Y_H equals: %d\r", b);
int c = wiringPiI2CReadReg8(fd,0x28);
int d = wiringPiI2CReadReg8(fd,0x29);
// printf("X_L equals: %d\r", c);
// printf("X_H equals: %d\r", d);
int e = wiringPiI2CReadReg8(fd,0x2C);
int f = wiringPiI2CReadReg8(fd,0x2D);
// printf("Z_L equals: %d\r", e);
// printf("Z_H equals: %d\r", f);
// printf("The temperature is: %d\r", t);
delay(2000);
}
};
Một vấn đề thú vị sẽ xảy ra nếu dòng mới được in là ngắn hơn dòng in trước đó. Trong trường hợp này, sẽ có một số phần của dòng trước đó cũng hiển thị trên màn hình. – Ganesh
@Ganesh Sau đó, chỉ cần in một khoảng trống bổ sung cho mỗi char. –
@Armin Có đó là một chương trình solution.The sẽ phải biết chiều dài chuỗi và sau đó làm một số toán học để thêm không gian để làm cho nó trông thích hợp. Thách thức là nếu có bất kỳ cách nào khác để có hiệu quả 'tuôn ra 'dòng. – Ganesh