की बजाय उसी पंक्ति पर प्रिंटफ मान अपडेट करें, मैं जानना चाहता हूं कि C
में कोई मौजूदा तरीका ओवरराइट करने के लिए कोई तरीका है जो पहले से ही एक नई लाइन बनाने या बस एक स्थान पर जाने के बजाय मुद्रित किया गया है। मुझे एक सेंसर से वास्तविक समय डेटा प्राप्त करने की आवश्यकता है और यह बस वहां बैठना चाहेंगे और बिना किसी स्क्रॉल किए मौजूदा मानों को अपडेट करना जारी रखेगा। क्या यह संभव है?नए
अद्यतन: में कोड
#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);
}
};
एक दिलचस्प समस्या होगी पहले मुद्रित लाइन। इस मामले में, पिछली लाइन का कुछ हिस्सा भी स्क्रीन पर दिखाई देगा। – Ganesh
@ गणेश तो बस हर चार के लिए एक अतिरिक्त सफेद जगह मुद्रित करें। –
@Armin हां यह एक समाधान है। कार्यक्रम को स्ट्रिंग लम्बाई जाननी होगी और इसके बाद कुछ गणित को उचित दिखने के लिए रिक्त स्थान जोड़ने के लिए करना होगा। चुनौती यह है कि लाइन को प्रभावी रूप से 'फ्लश' करने का कोई अन्य तरीका है। – Ganesh