برگزیده های پرشین تولز

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

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

saeedsmk

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

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

اميدوارم كمك كنه
 

Frantic

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

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

ممنون میشم راهنمایی کنید
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
با اين كار بيت 8 رو صفر ميكنه نگاه كن يعني بيت كري رو كه نشونده دريافت كامله
 

Kovsarsystem

کاربر تازه وارد
تاریخ عضویت
10 آپریل 2005
نوشته‌ها
29
لایک‌ها
1
سن
40
لطفا زير ديپلم توضيح بدين مام بفهميم
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
والا براي كار با rs232 تحت داس شما بايد يه مقدار در مورد نحوه چگونگي كار كرد اين پورت و اسمبلي و اين جور موارد اشنا باشيد
اگر يا اين مطالب آشنايي داشته باشيد فكر كنم بحث انجام شده بسيار راحت باشه
در مورد نحوه كار كرد اين پورت ميتونيد توي گوگل سرچ كنيد
 
بالا