اطلاعیه

Collapse
No announcement yet.

وقفه سریال و دریافت عدد چند رقمی

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

    وقفه سریال و دریافت عدد چند رقمی

    با سلام
    در یک قسمت از برنامه ای که نوشتم اطلاعاتم رو از میکرو به کامپیوتر میفرستم این کار از طریق ارتباط سریل انجام میشه اما بعضی وقتها لازم دارم اعدادی رو که کامپیوتر (از نرم افزاری که با ویژوال بیسیک نوشتم ) دریافت کنم . چون این اطلاعات خیلی کمه نمی خوام وقت زیادی از میکرو رو بگیرم پس از اینتراپت سریال استفاده کردم . برنامه ای که واسه این قسمت نوشتم اینه
    http://daily-news2000.persiangig.com/serial%20.docx
    با این برنامه تمام اعدادی که کامپیوترم میفرسته درست نمایش داده میشه اما مشکل تو قسمت اینتراپت هست که یه آرایه 8 تایی تعریف کردم (چون طول ارسال من 8 تاست ) و نوشتم اگه آرایه هشت تایی تمام شد حالا بیاد و این تک رقم هایی که گرفته رو به سه تا عدد دو رقمی تبدیل کنه (مثلا اعداد 5 و 9 رو بذاره کنار هم بشه 59) اما چون نوع متغیر ها کاراکتر بود واسه همین از کاراکتر صفر کم کردم تا عدد بدست بیاد ولی این درست نیست حتی متغیر ها رو اینتجر تعریف کردم اما نشد نمی دونم چه جوری عدد بسازم
    ممنون
    Don't hesitate to ask any question ..

    #2
    پاسخ : وقفه سریال و دریافت عدد چند رقمی

    دایی جان گلم
    برای ساختن عدد 59 از دو عدد 5 و9 که خودشون با کم کردن کد اسکی از احتمالا 49 ساخته شدن :
    باید عدد 5 را در 10 ضرب کنی و با عدد 5 جمع کنی.
    و برای عدد های 3 رقمی هم باید صدگان رو در 100 ضرب کنی.

    البته می تونستی توی کامپیوتر عدد ها رو به گونه دیگه ای عدد رو بشکونی.
    مثلا عدد 4560 دوبایت داره که میشه با تقسیم صحیحش بر 256 بایت پر ارزش و باقیمانده تقسیمش بر 256 بایت کم ارزش اونو بدس ت آورد
    4560/256=17 بایت پر ارزش
    256%4560=208 بایت کم ارزش
    حالا این دو بایت رو با پورت سریال میفرستی
    بعد برای دوباره سازی 4560 میای بایت پر ارزش رو ضربدر 256 می کنی و با بایت کم ارزش جمع می کنی
    17*256+208=4560
    با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

    دیدگاه


      #3
      پاسخ : وقفه سریال و دریافت عدد چند رقمی

      ببین اگر مشکلت تبدیل کاراکتر به عدد اینتجر هستش بهتر تابع این کار رو فراخونی کنی . به این صورت

      include <stdlib.h>
      integer = atoi(string);
      قسمت بالایی رو همون بالای برنامه بنویس و قسمت دوم هم برای تبدیل کاراکتر و رشته ی عددی به عدد واقعی و از جنس انتیجر هست (integer و string نام متغیر هستند)

      دیدگاه


        #4
        پاسخ : وقفه سریال و دریافت عدد چند رقمی

        با سلام
        از دایی جان متشکرم اما اولا مثل اینکه برنامه رو نگاه نکردید من همین کار اول رو کردم اما در مورد کار دوم ، اطلاعاتم رو نمی تونم اونطور که گفتید بفرستم
        از دوست عزیرمون جناب bah هم ممنونم فکر کنم با دستوری که ایشون داده مشکل حل بشه البته نمیدونم اون چیزی که کامپیوتر داره واسم میفرسته کد اسکی هست یا یک چیزی مثل کاراکتر ...
        Don't hesitate to ask any question ..

        دیدگاه

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