ايران ويج

نسخه‌ی کامل: ايجاد تايمر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
من چه جوري ميتونم در برنامه كنسول سي++ يه تايمر ايجاد كنم
اگه يه مثال هم بزنيد ممنون ميشم :oops:
ممنون
آقا سلام

والا ايني كه شما گفتي يكم بايد جالب باشه اما من تا حالا نديدم ! توي MFC كه تايمر از كلاس CWnd حاصل شده و نشون ميده كه بايد يه پيغامي به يه پنجره اي چيزي ارسال بشه !
تو كنسول ما كه پنجره نداريم پس اينطوري نميشه . فكر كنم برنامه هاي كنسول مجبورن از تايمر سيستم و با كدهاي سطح پايين كار كنند . من متاسفانه بيشتر از اين چيزي نميدونم :cry:
سلام
ممنون محمد جان
ولي يه راهي بايد باشه :cry:
خوب
سلام

خيلي سادست يه كلاس طراحي مي كني به صورت زير
يك متغيير از نوع اينت به عنوان زمان تحريك تايمر
يه تابع كه زمان رو مي گيره و نسبت با هر بار برسي زمان با متغيير زمان تحريك يه تابع كد رو اجرا مي كنه
يه تابع كه كد هاتو توش مي نويسي و اين كد هاي هستند كه مي خواي سر يه زمان خاصي اجرا بشه

بعد هم در برنامه اصلي يه كلاس پويا از اون كلاس اصلي مي سازي و در يك حلقه كلي كه كل برنامه با مديريتش توش قرار داره قرار مي دي يعني اولين تابع ذكر شده در بالا رو از توي كلاس صدا مي زني
WinkسلامSmile
پاسخ شما استفاده از سرويسِ 131 يا همان 83h(هگزاد دسيمال) است.
اين برنامه بايد رجيسترِ AL را 0 كند و آدرس يك بايت فلگ(پرچم براي بررسي رخداد) را در ES : BX بگذارد و فاصلهء زماني را در CX : DX بگذارد.
BIOS پس از گذشت زمان مقتضي فلگ را برابر 80h قرار ميدهد.
پس با بررسي اين فلگ ميتوان فهميد زمان مورد نظر طي شده يا خير؟
اين زمان سنج 1024 بار در ثانيه تيك ميزند پس حدوداً 976 ميكرو ثانيه دقت دارد.CoolسعيدCool

يك نكتهء مهم را اضافه ميكنم بايد هنگامي كه از زباني سطح بالا مثل ++C
استفاده مي كنيد متغيير فلگ شما بايد به صورت volatile تعريف شود چون كامپايلر هاي بسيار پيچيده و هوشمند اگر تصور كنند مقدار يك متغيير تغيير نكرده مقدار آنرا چك نخواهند كرد و چون اين متغيير در خارج از برنامه كنترل مي شود تحت كنترل كامپايلر بيچاره نيست ولي اين volatile اين مشكل رو حل مي كنه!

براي تعريف Flag (پرچم) كدي شبيه زير نياز است:
volatile int i = 0;

اگر جالب بود یه جوابی بدبد با معرفتها
Cool سعيد.ت  :cool:
چرا از thread استفاده نمیکنید .
در برنامه های تحت داس از این چیزها خبری نیست
سلام دوستان
من این سوال رو خیلی وقت پیش پرسیده بودم
منظور؟
یعنی سر کاری بود؟
نقل قول: منظور؟
یعنی سر کاری بود؟
نه
خودم جوابشو فهمیدم
ممنون از شما