دریافت کاراکترهای اضافی از USART

farzaneh72

همکار جدید
سلام
من یه ماژول دارم که چیز زیادی ازش نمی دونم. از طریق ارتباط سریال به یک میکرو مگا8 وصلش کردم. وقتی یک دستوری رو بهش می فرستم در جواب یک استرینگ برام میفرسته که حاوی یه عدد فلوت هست (xx.xxx) وقتی اینو با دستور gets می خونم و روی ال سی دی نشون میدم یه سری کاراکتر اضافی در کنار اون عدد هم هست . چیکار کنم اون کاراکترها حذف بشن؟
char s[8];
if((UCSRA & (1<<7))==(1<<7))

{
gets(s,8);
lcd_gotoxy(0,0);
lcd_puts(s)
};
 

Alma

مدیر
پرسنل مدیریت
سلام
اطلاعات بیشتری بدید
عکس یا متن دقیق تری از چیزی که روی lcd نمایش داده میشه
احتمال میدم مشکل این باشه که بعد اخرین کاراکتری که دریافت میکنید باید مقدار null یا صفر داشته باشه تا رشته درست نماشی داده بشه و شما این کارو انجام نمیدین
برای این کار میتونید قبل از اینکه دیتایی دریافت کنید در یک حلقه for همه اعضای رشته رو با مقدار 0 مقدار دهی کنید
برای مثال به این شکل
for(uint_8t i = 10;i;i--)s[i] = 0;
 
بالا پایین