۰۹-بهمن-۱۳۸۴, ۱۹:۵۰:۰۷
۰۹-بهمن-۱۳۸۴, ۲۲:۰۱:۱۱
آقا سلام
والا ايني كه شما گفتي يكم بايد جالب باشه اما من تا حالا نديدم ! توي MFC كه تايمر از كلاس CWnd حاصل شده و نشون ميده كه بايد يه پيغامي به يه پنجره اي چيزي ارسال بشه !
تو كنسول ما كه پنجره نداريم پس اينطوري نميشه . فكر كنم برنامه هاي كنسول مجبورن از تايمر سيستم و با كدهاي سطح پايين كار كنند . من متاسفانه بيشتر از اين چيزي نميدونم :cry:
والا ايني كه شما گفتي يكم بايد جالب باشه اما من تا حالا نديدم ! توي MFC كه تايمر از كلاس CWnd حاصل شده و نشون ميده كه بايد يه پيغامي به يه پنجره اي چيزي ارسال بشه !
تو كنسول ما كه پنجره نداريم پس اينطوري نميشه . فكر كنم برنامه هاي كنسول مجبورن از تايمر سيستم و با كدهاي سطح پايين كار كنند . من متاسفانه بيشتر از اين چيزي نميدونم :cry:
۱۰-بهمن-۱۳۸۴, ۰۰:۲۱:۰۰
سلام
ممنون محمد جان
ولي يه راهي بايد باشه :cry:
ممنون محمد جان
ولي يه راهي بايد باشه :cry:
۱۰-بهمن-۱۳۸۴, ۱۳:۰۲:۲۴
خوب
سلام
خيلي سادست يه كلاس طراحي مي كني به صورت زير
يك متغيير از نوع اينت به عنوان زمان تحريك تايمر
يه تابع كه زمان رو مي گيره و نسبت با هر بار برسي زمان با متغيير زمان تحريك يه تابع كد رو اجرا مي كنه
يه تابع كه كد هاتو توش مي نويسي و اين كد هاي هستند كه مي خواي سر يه زمان خاصي اجرا بشه
بعد هم در برنامه اصلي يه كلاس پويا از اون كلاس اصلي مي سازي و در يك حلقه كلي كه كل برنامه با مديريتش توش قرار داره قرار مي دي يعني اولين تابع ذكر شده در بالا رو از توي كلاس صدا مي زني
سلام
خيلي سادست يه كلاس طراحي مي كني به صورت زير
يك متغيير از نوع اينت به عنوان زمان تحريك تايمر
يه تابع كه زمان رو مي گيره و نسبت با هر بار برسي زمان با متغيير زمان تحريك يه تابع كد رو اجرا مي كنه
يه تابع كه كد هاتو توش مي نويسي و اين كد هاي هستند كه مي خواي سر يه زمان خاصي اجرا بشه
بعد هم در برنامه اصلي يه كلاس پويا از اون كلاس اصلي مي سازي و در يك حلقه كلي كه كل برنامه با مديريتش توش قرار داره قرار مي دي يعني اولين تابع ذكر شده در بالا رو از توي كلاس صدا مي زني
۱۷-تير-۱۳۸۵, ۰۰:۴۱:۴۴
سلام
پاسخ شما استفاده از سرويسِ 131 يا همان 83h(هگزاد دسيمال) است.
اين برنامه بايد رجيسترِ AL را 0 كند و آدرس يك بايت فلگ(پرچم براي بررسي رخداد) را در ES : BX بگذارد و فاصلهء زماني را در CX : DX بگذارد.
BIOS پس از گذشت زمان مقتضي فلگ را برابر 80h قرار ميدهد.
پس با بررسي اين فلگ ميتوان فهميد زمان مورد نظر طي شده يا خير؟
اين زمان سنج 1024 بار در ثانيه تيك ميزند پس حدوداً 976 ميكرو ثانيه دقت دارد.سعيد
يك نكتهء مهم را اضافه ميكنم بايد هنگامي كه از زباني سطح بالا مثل ++C
استفاده مي كنيد متغيير فلگ شما بايد به صورت volatile تعريف شود چون كامپايلر هاي بسيار پيچيده و هوشمند اگر تصور كنند مقدار يك متغيير تغيير نكرده مقدار آنرا چك نخواهند كرد و چون اين متغيير در خارج از برنامه كنترل مي شود تحت كنترل كامپايلر بيچاره نيست ولي اين volatile اين مشكل رو حل مي كنه!
براي تعريف Flag (پرچم) كدي شبيه زير نياز است:
اگر جالب بود یه جوابی بدبد با معرفتها
سعيد.ت :cool:
پاسخ شما استفاده از سرويسِ 131 يا همان 83h(هگزاد دسيمال) است.
اين برنامه بايد رجيسترِ AL را 0 كند و آدرس يك بايت فلگ(پرچم براي بررسي رخداد) را در ES : BX بگذارد و فاصلهء زماني را در CX : DX بگذارد.
BIOS پس از گذشت زمان مقتضي فلگ را برابر 80h قرار ميدهد.
پس با بررسي اين فلگ ميتوان فهميد زمان مورد نظر طي شده يا خير؟
اين زمان سنج 1024 بار در ثانيه تيك ميزند پس حدوداً 976 ميكرو ثانيه دقت دارد.سعيد
يك نكتهء مهم را اضافه ميكنم بايد هنگامي كه از زباني سطح بالا مثل ++C
استفاده مي كنيد متغيير فلگ شما بايد به صورت volatile تعريف شود چون كامپايلر هاي بسيار پيچيده و هوشمند اگر تصور كنند مقدار يك متغيير تغيير نكرده مقدار آنرا چك نخواهند كرد و چون اين متغيير در خارج از برنامه كنترل مي شود تحت كنترل كامپايلر بيچاره نيست ولي اين volatile اين مشكل رو حل مي كنه!
براي تعريف Flag (پرچم) كدي شبيه زير نياز است:
volatile int i = 0;
اگر جالب بود یه جوابی بدبد با معرفتها
سعيد.ت :cool:
۲۴-تير-۱۳۸۵, ۲۲:۵۰:۳۹
چرا از thread استفاده نمیکنید .
۲۵-تير-۱۳۸۵, ۱۲:۱۴:۰۷
در برنامه های تحت داس از این چیزها خبری نیست
۲۵-تير-۱۳۸۵, ۱۵:۲۶:۳۲
سلام دوستان
من این سوال رو خیلی وقت پیش پرسیده بودم
من این سوال رو خیلی وقت پیش پرسیده بودم
۰۱-مرداد-۱۳۸۵, ۰۰:۲۳:۲۰
منظور؟
یعنی سر کاری بود؟
یعنی سر کاری بود؟
۰۱-مرداد-۱۳۸۵, ۱۰:۵۱:۲۴
نقل قول: منظور؟نه
یعنی سر کاری بود؟
خودم جوابشو فهمیدم
ممنون از شما