اطلاعیه

Collapse
No announcement yet.

پروتکل ارتباطی

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

    پروتکل ارتباطی

    با سلام
    دوستان من یک پروتکل بین میکرو و کامپیتورم برای فرستادن دستورات نوشتم که 8 بایت هستش و هر بایت برای یک کاری استفاده می شود .اما دو بایت اونها رو برای ارسال مقدار اعداد گذاشتم یعنی اگه خواستم به میکرو بگم عدد 1546 رو نمایش بده می زارم تو دوبایت مربوط به اعداد . الان مشکلی که دارم اینه که نمی دونم چظوری بفرستم . یعنی اگه بخواهم تبدیل به هگز کنم چه طوری این کار رو تو کدویژن انجام بدم ؟
    و اینکه اصلا هگز عدد1456 می شه5B0 که نمی دونم این چطوری تو این دوبایت باید بفرستم.
    کارم خیلی گیره ممنون می شم جواب بدین

    #2
    پاسخ : پروتکل ارتباطی

    هگز و باینری و دسیمال و تعابیر دیگه مثل با علامت و بدون علامت صرفا نحوه تفسیر ما از بیتهای داخل بایت ها هست وگرنه در تمام اون بایتها فقط و فقط 0و1 قرار میگیرند.
    شما عددت رو برای راحتی unsigned int تعریف کن و اگه ارتباطت برای ارسال اون 8 بایت سریال هست (نگفتی)
    ابتدا بایت کم ارزش و سپس بایت پرارزش رو بفرست. در مقصد هم این دو بایت رو بگیر بچسبون به هم (با عملگرهای شیفت و جمع یا or)و ازش استفاده کن

    دیدگاه


      #3
      پاسخ : پروتکل ارتباطی

      برای ارسال میتونی این کار را انجام بدی:
      کد:
      unsigned int Send_int;
      
      putchar(Send_int & 0x00FF); // For LSB
      
      putchar((Send_int & 0xFF00)>>8); //For MSB]
      و همچنین برای دریافت میتونی این کار را انجام بدی :
      کد:
      unsigned int Rec_int;
      unsigned char temp[2];
      
      temp[0]=getchar();
      temp[1] = getchar();
      
      Rec_int = temp[0] | (temp[1]<<8);
      امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

      دیدگاه

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