اطلاعیه

Collapse
No announcement yet.

تبدیل float به char

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

    تبدیل float به char

    سلام
    ممنون میشم راهنمایم کنید
    من یه برنامه دارم یمنویسم
    توش دو تا میکرو با usart به هم متصلند تو میکرویی که فرستنده هست یه کی برد و یه ال سی دی وصله قراره من یه عددی رو از کیبرد بخونم بفرستم به میکرو دومی اگر اون عدد با عدد داخل میکرو دومی یکی بود یه کاری بکنه
    من عددی که از کیبرد میخونم رو میریزم تو یه ارایه ای به شکل زیر
    unsigned char s[10];
    و اینطوری میخونمش
    با هربار کلید زدن متغییر i اضافه میشه و تو خونه های ارایه s نوشته میشه
    i--;این برای اینکه وقتی میخوام عدد رو بخونم کلید ستاره رو میزنم پس اول یکی از i کم میکنم بعد ارایه ها رو میخونم
    p=0;
    a=0;
    s2:
    a=(d[i]*pow(10,p))+a;
    i--;
    p=p+1;
    if(i!=255) goto s2;

    عددی که از اینجا میخونم عدد float هست
    خوب وقتی میخوام تو دستور putchar(a); اینو بفرستم با مشکل روبرو میشم
    خوب a متغییر float هست و باید تبدیل به کارکتر بشه
    میشه راهنمایم کنید
    ممنونم :eek: :eek: :eek: :eek: :eek: :angry: :angry: :angry: :angry: :angry: :angry:
    وقتی زندگی به سمت دشوار شدن تغییر مسیر میدهد
    شما به سمت قوی تر شدن تغییر مسیر دهید

    #2
    پاسخ : تبدیل float به char

    نوشته اصلی توسط mehdi_24
    سلام
    ممنون میشم راهنمایم کنید
    من یه برنامه دارم یمنویسم
    توش دو تا میکرو با usart به هم متصلند تو میکرویی که فرستنده هست یه کی برد و یه ال سی دی وصله قراره من یه عددی رو از کیبرد بخونم بفرستم به میکرو دومی اگر اون عدد با عدد داخل میکرو دومی یکی بود یه کاری بکنه
    من عددی که از کیبرد میخونم رو میریزم تو یه ارایه ای به شکل زیر
    unsigned char s[10];
    و اینطوری میخونمش
    با هربار کلید زدن متغییر i اضافه میشه و تو خونه های ارایه s نوشته میشه
    i--;این برای اینکه وقتی میخوام عدد رو بخونم کلید ستاره رو میزنم پس اول یکی از i کم میکنم بعد ارایه ها رو میخونم
    p=0;
    a=0;
    s2:
    a=(d[i]*pow(10,p))+a;
    i--;
    p=p+1;
    if(i!=255) goto s2;

    عددی که از اینجا میخونم عدد float هست
    خوب وقتی میخوام تو دستور putchar(a); اینو بفرستم با مشکل روبرو میشم
    خوب a متغییر float هست و باید تبدیل به کارکتر بشه
    میشه راهنمایم کنید
    ممنونم :eek: :eek: :eek: :eek: :eek: :angry: :angry: :angry: :angry: :angry: :angry:
    سلام حقیقتا کامل متوجه نشدم میخواین چی کار کنین ولی کلا توابع printf و sprintf برای ارسال فرم بندی شده به کار میرن اینا رو سرچ کنین فک کنم کارتون راه بیفته
    زندگي آن چه که زيسته ايم نيست ، بلکه آن چيزي است که از گذشته به خاطر داريم ...گابريل گارسيا مارکز

    دیدگاه


      #3
      پاسخ : تبدیل float به char

      اینطوری که من متوجه شدم شما می خواید یه عدد ممیز شناور رو از طریق uart بفرستید .برای این کار باید اول عددت رو ضرب در یه عددی بکنی مثلا 100 که اونوقت دقتت میشه 0.01 در حقیقیت باید اول تبدیل به int کنی . مثلا عدد 6.25 رو به 625 تبدیل کن ،این عدد دو بایتی هستش ، بعد هر بایت رو جدا جدا بفرست. اینم کد :
      طرف فرستنده :
      کد:
      	int x = (int) a*100;
      	putchar(x & 0x00ff); // send low byte
      	putchar((x >>8) & 0x00ff); // send high byte
      بعد در طرف گیرنده باید این بایت ها رو به هم بچسبوتی و تقسیم بر 100 کنی.
      طرف گیرنده :
      کد:
      	char u_L=getchar(); //get low byte
      	char u_H=getchar(); //get high byte
      	
      	int y = (u_H<<8)& (u_L) ; 
      	float a =y/100;
      http://massoud68.persiangig.com/pict...1406891613.gif

      مشکلتون حل شده ؟؟؟
      پس روي "موضوع به نتيجه رسيد" کليک کنيد !! :job:

      دیدگاه


        #4
        پاسخ : تبدیل float به char

        آقا دمت گرم
        عجب کاری

        دیدگاه


          #5
          پاسخ : تبدیل float به char

          راه حل اول
          استفاده از کتابخانه stdio.h و استفاده از دستور sprintf

          راه حل دوم (پیشنهادی)
          استفاده از کتابخانه stdlib.h و در مورد کار شما استفاده از دستور ftoa

          به خوبی حضور ذهن ندارم ولی کافیه که به help کدویژن مراجعه کنید تا روش استفاده از این دستورات رو یاد بگیرید یا تو نت دنبال یه آموزش فارسی برای این دستورات باشید که گفتم

          دیدگاه

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