آژانس هواپیماییexchanging

( C )دریافت و فرستادن کاراکتر از طریقRS232

شروع موضوع توسط Frantic ‏24 ژانویه 2006 در انجمن خانواده C++ , C

  1. Frantic

    Frantic کاربر تازه وارد

    تاریخ عضویت:
    ‏4 سپتامبر 2004
    نوشته ها:
    15
    تشکر شده:
    0
    با عرض سلام خدمت همه عزیزان

    برنامه زیر از طریق rs232 کاراکتر تایپ شده رو بین دو تا کامپیوتر انتقال میده حالا من چند تا سوال در مورد این برنامه داشتم اول اینکه منظور از if (status & DATA_READY) چیه با توجه به اینکه DATA_READY برابر با 100000000 باینری تعریف شده یعنی با and کردن این دو مقدار چه چیزی رو می فهمیم ؟

    سوال بعدی اینکه در همون خط بعدش علت قرار دادن شرط مخالف صفر بودن حاصل and بین bioscom(2,0,com1( و 0x7f چی بوده ؟

    و آخر اینکه وقتی این برنامه رو تو XP اجرامیکنم ارور میده که نمیتونه به COM1 دسترسی پیدا کنه .مشکل از کجاست؟
     

    فایل های ضمیمه:

    • rs232.txt
      اندازه فایل:
      730 بایت
      نمایش ها:
      26
  2. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    سلام عزيز
    خوب هستيد
    خوب هنگامي كه اطلاعتي براي خواندن يا فرستادن روي پورت قرار ميگيره مقدار استاتوس تغيير ميكنه . اما اگر اطلاعات هنوز كامل ترنسفر نشده باشن يا اينكه اروري ايجاد بشه باز مقدار استاتوس تغيير ميكنه .نتيجه اگر فقط همين مقدار را چك كنيم كه تغيير كرده يا نه ؛ زماني كه ترنسفر ناقص هست بازم اين اطلاعات نمايش داده ميشه براي حل اين مشكل معمولا چك ميشه ايا اطلاعات كامل دريافت شده يا نه يعني بايد چك بشه كه مقدار اتاتوس چيه يعني 0x100 هست يا نه ؟
    خوب با and كردن مقدار استاتوس و مقدار data_ready زماني اين عبارت درست است كه مقدار status برابر با 0x100 باشه

    اما در رابطه با مسئله دوم يا xp اجازه دسترسي به اين پورت را از درون داس نميده يا اينكه اين پورت توي xp تعريف نشده است ( چون برنامه ما توي شل dos ويندوز xp اجرا شده پس سيستم عامل اين محيط رو شبيه سازي ميكنه )
    اصولا تا اونجايي كه من ميدونم ( البته ممكنه اشتباه باشه ) در محيط xp دسترسي به اطلاعات bios بصورت مستقيم بعلت جلوگيري از crash سيستم بسته شده است

    اميدوارم كمك كنه
     
  3. Frantic

    Frantic کاربر تازه وارد

    تاریخ عضویت:
    ‏4 سپتامبر 2004
    نوشته ها:
    15
    تشکر شده:
    0
    خیلی ممنون از جواب سریعتون

    در مورد اینکه شرط گذاشته if ((out = bioscom(2, 0, COM1) & 0x7F) != 0) چطور ؟ یعنی and شدن کد اسکی کاراکتر خوانده شده با 1111111 چه چیزی رو نشون میده ؟

    ممنون میشم راهنمایی کنید
     
  4. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    با اين كار بيت 8 رو صفر ميكنه نگاه كن يعني بيت كري رو كه نشونده دريافت كامله
     
  5. Kovsarsystem

    Kovsarsystem کاربر تازه وارد

    تاریخ عضویت:
    ‏10 آپریل 2005
    نوشته ها:
    29
    تشکر شده:
    1
    لطفا زير ديپلم توضيح بدين مام بفهميم
     
  6. saeedsmk

    saeedsmk مدیر بازنشسته

    تاریخ عضویت:
    ‏6 سپتامبر 2003
    نوشته ها:
    1,519
    تشکر شده:
    4
    والا براي كار با rs232 تحت داس شما بايد يه مقدار در مورد نحوه چگونگي كار كرد اين پورت و اسمبلي و اين جور موارد اشنا باشيد
    اگر يا اين مطالب آشنايي داشته باشيد فكر كنم بحث انجام شده بسيار راحت باشه
    در مورد نحوه كار كرد اين پورت ميتونيد توي گوگل سرچ كنيد
     
  7. appbannerkhuniresbanner