اطلاعیه

Collapse
No announcement yet.

float binary string

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    float binary string

    سلام
    :read:
    من می خوام 3تا عدد اعشاری علامتدار که طول بخش صحیحشون معلوم نیست و پشت سر هم تو یه آرایه ی کاراکتری هستن و بوسیله ی کاراکتر کاما از هم جدا میشن رو تو سه تا آرایه ی کاراکتری جدا بریزم که بعدش بتونم اونارو با atof به float تبدیل کنم - برای اینکار با استفاده از سه تا حلقه مثل زیر سعی کردم ولی نمیشه!

    کد:
    while(g[i] != ','){
     b[i]=g[i];
     i++;
     
    }
     i++; 
    while(g[i] != ','){
     c[i]=g[i];
     i++;
     
    }
     i++;
    
    while(g[i] != '='){
     d[i]=g[i];
     i++;
     
    }
    این حلقه هارو تو یه تابع نوشتم اما وقتی تابع رو اجرا میکنم به نظر میاد میکرو ریست :angry:میشه چون دستورات بعدش اجرا نمیشه! چی کار میشه کرد؟

    یه سوال دیگه اینکه من یه عدد float رو بصورت 4 بایت binary از طریق usart دریافت میکنم، آیا راهی هست که بتونم از این داده ها بصورت float معمولی استفاده کنم و بعد محاسبه به char* تبدیلشون کنم؟تو تابع scanf که چیزی پیدا نکردم.

    با تشکر! :arrow:


    #2
    پاسخ : float binary string

    برای سوال اول یه روش پیدا کردم :

    کد:
    [left]void Str2Flt(void){
     
     
     i=0;
      flag1=1;
      flag2=1;
      flag3=1;
      flag4=1;
      j=0;k=0;l=0;
    while(flag1){
    lcd_clear();
    lcd_putsf("flag1");
    delay_ms(100);  
    if(g[i]!='='){
    PORTB.0=0 ;
    a[i]=g[i];
    delay_ms(100);
    }
    else{
    flag1=0;
    };
    i++;
    PORTB.1=0;
    } 
    
    
    while(flag2){
    lcd_clear();
    lcd_putsf("flag2");
    delay_ms(1);  
    if(g[i]!=','){
    
    b[j]=g[i];
    j++;
    delay_ms(1);
    }
    else{
    flag2=0;
    };
    i++;
    PORTB.1=1 ;
    }
    
    while(flag3){
    lcd_clear();
    lcd_putsf("flag3");
    delay_ms(1);  
    if(g[i]!=','){
    
    c[k]=g[i];
    k++;
    delay_ms(1);
    }
    else{
    flag3=0;
    };
    i++;
    PORTB.1=0;
    }
    
    while(flag4){
    lcd_clear();
    lcd_putsf("flag4");
    delay_ms(1);  
    if(g[i]!=','){
    
    d[l]=g[i];
    l++;
    delay_ms(1);
    }
    else{
    flag4=0;
    };
    i++;
    PORTB.1=0;
    }
     
       f1=atof(b);
       f2=atof(c);
       f3=atof(d);
    
    
     }[/left]

    دیدگاه

    لطفا صبر کنید...
    X