تور لحظه آخری
امروز : پنجشنبه ، 22 آذر 1403    احادیث و روایات:  امام علی (ع):روزه قلب از فکر (در گناهان)، برتر از روزه شکم از طعام است.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

ساختمان پزشکان

کاشت ابرو طبیعی و‌ سریع

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

رفع تاری و تشخیص پلاک

پرگابالین

دوره آموزش باریستا

مهاجرت به آلمان

بهترین قالیشویی تهران

بورس کارتریج پرینتر در تهران

تشریفات روناک

نوار اخطار زرد رنگ

ثبت شرکت فوری

تابلو برق

خودارزیابی چیست

فروشگاه مخازن پلی اتیلن

قیمت و خرید تخت برقی پزشکی

کلینیک زخم تهران

خرید بیت کوین

خرید شب یلدا

پرچم تشریفات با کیفیت بالا و قیمت ارزان

کاشت ابرو طبیعی

پرواز از نگاه دکتر ماکان آریا پارسا

پارتیشن شیشه ای

اقامت یونان

 






آمار وبسایت

 تعداد کل بازدیدها : 1840558915




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

ساخت یک تایمر که حداقل استفاده از Cpu و Ram را داشته باشه


واضح آرشیو وب فارسی:سایت ریسک: BabyBoy04-11-2007, 04:56 PMسلام: من می خوام یه تامر بنویسم که حداقل استفاده از CPU و RAM را داشته باشه... حتما تا حالا دقت کردید که تایمرایی که با چرخه ها ساخته میشن از cpu زیاد استفاده می کنن و این باعث می شه که برنامه به بقیه کاراش نرسه. به نظر شما چیکار میشه کرد؟ (لطفا هر نظری هم داشتید بگید) ممنون. :8: someone05-11-2007, 02:34 AMسلام. یه مقدار سوالتون کیج کننده هست! اگه برای ویندوز یا هر سیستم عاملی برنامه مینویسین کافی از تایمر های سیستم عامل مورد نظر استفاده کنین. (چند API براشون وجود داره.) اما اگه از چرخه منظورتون حلقه ها هستن , خب مسلما تلاش بیهوده ای است. باید از Thread ها برای این کار استفاده بشه. اگه توجه کرده باشین برنامه هایی وجود دارن که همزمان چندین کار رو با هم انجام میدن. نمونه ساده ای از اون MSWord هست. همزمان که شما تایپ میکنین برنامه براتون غلط گیری رو هم انجام میده. بدونه اینکه در سایر کار ها مشکلی پیش بیاد. این عمل با استفاده از Thread ها و به اشتراک گذاشتن منابع توسط mutex یا semaphore و یا criticalsection انجام میشه و جزئ مباحث پیشرفته ی برنامه نویسی هست. البته در موردشون منابع خوبی در net وجود داره. کافی کمی در موردشون جستجو کنین. موفق باشین. BabyBoy06-11-2007, 01:00 PMببخشید من تازه یک ماه دارم C می خونم البته قبلا VB کار کردم. این تایمری هم که می خوام بسازم رو توی Turbo C باید باشه . من VC کار نکردم این چیزایی گفتید توی Turbo C هم کار میکنه؟ اگه یه مثال بزنید ممنون می شم!!! :11: :8: someone06-11-2007, 03:53 PMدوباره سلام. احتمالا از Turbo C تحت DOS استفاده میکنید. کافیه از Timer.h استفاده کنین. به help خود Turbo C یه نگاهی بندازین. چیزایی که درموردشون صحبت کردیم درباره ی Windows بود. در سیستم عامل DOS مقداری قضیه فرق میکنه. BabyBoy07-11-2007, 05:14 PMسلام ممنون از این کمک کردین ولی من از Turbo C تحت ویندوز استفاده می کنم. ولی وقتی میخوام از Timer.h استفاده کنم ارور میده توی Help هم چیزی درباره Timer.h نبود؟ :41: :11: m3hrz4d08-11-2007, 06:51 PMشما میتونی windows.h رو توی این Turbo سی include کنی؟ BabyBoy12-11-2007, 12:23 PMآره ارور نمیده . ولی مگه از اینم میشه استفاده کرد؟ m3hrz4d12-11-2007, 01:56 PMآره میتونی از توابع ویندوز برای ساخت تایمر یا ایجاد وقفه توی برنامه و ساخت دستی تایمر استفاده کنی. با تابع Sleep میشه یه وقفه ی n میلی ثانیه ای توی برنامه (توی Thread جاری) ایجاد کرد. مثلا با این کد , تابع myTimerFunc هر 1 ثانیه 1 بار خودش رو فراخوانی میکنه و Hello رو چاپ میکنه: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! البته میشه از توابع SetTimer رو KillTimer ویندوز هم استفاده کرد ولی اگه برنامت تحت Console هست (که احتمالا همینطوره) نیاز به نوشتن Message Loop کاری که اگه قبلیه کارت رو راه میندازه نیاز نیست ازین روش استفاده کنی. هاشمی05-12-2007, 10:52 AMبا سلام برای این کار یک برنامه با قالب MFC ایجاد کنید. سپس در برنامه دیالوگی در تابع OnInitDialog تابع دستور زیر را تایپ کنید: SetTimer(1,1000,NULL); و در برنامه های MDI و SDI این تابع را در تابع OnInitUpdate تایپ کنید. سپس با استفاده Class wizard در رویداد WM_TIMER را پیدا کرده و دو بار برروی آن کلیک کنید تا تابع OnTimer به پروژه اضافه گردد و سپس کد زیر را در آن تایپ کنید: CTime time=CTime::GetCurrentTime(); if(time.GetSecond()%2==0) MyFunction(); else MySecondFunction(); در دستور فوق در ثانیه ای دستور Myfunction و در ثانیه بعدی MySecondFunction اجرا می شود. تابع SetTimer باعث راه اندازی تابع OnTimer می شود. تابع SetTimer مقداری را بر می گرداند که همان مقدار آرگومان اول است (در اینجا عدد 1 می باشد) و آرگومان دوم که بر حسب میلی ثانیه می باشد فاصله بین اجرا را تعیین می کند مثلا هر یک ثانیه یا هر دو ثانیه (2000) و.... تابع فوق یک مقدار عدد صحیح بر می گرداند که همان مقدار آرگومان اول است و به پارامتر تابع OnTimer ارسال می کند. شما می توانید هر چند تایمر که بخواهید در برنامه ایجاد کنید. به کد زیر نگاه کنید: دو متغیر عمومی از نوع int و به نامهای ID 1 و ID 2 و با دسترسی public در کلاس برنامه تعریف کنید و در تابع OnInitDialog کد زیر را بنویسید: ID 1=SetTimer(1,1000,NULL) ID 2=SetTimer(2,5000,NULL) سپس در تابع OnTimer کد یر را وارد کنید: CTime time=CTime::GetCurrentTime(); if(nIDEvents==1) { if(time.GetSecond()%2==0) MyFunction(); else MySecondFunction(); } else if(nIDEvents==2) { ... . . .. } مقدار برگشتی دو تابع SetTimer در نتغیرهای ID 1 و ID 2 قرار می گیرد و به تابع OnTimer ارسال می شود و با استفاده از مقدارهای ارسال شده تععین می کنیم که در چه فاصله زمانی کدام کار انجام شود. لازم به ذکر است که محدوده زمانی یک تایمر بین 55 میلی ثانیه تا 32^2 منهای 1 می تواند باشد(کتاب آموزش ویژوال سی++ نوشته دیویس چاپمن ترجمه احترام توسلی) soda_india18-12-2007, 06:06 PMبا سلام برای این کار یک برنامه با قالب MFC ایجاد کنید. سپس در برنامه دیالوگی در تابع OnInitDialog تابع دستور زیر را تایپ کنید: SetTimer(1,1000,NULL); و در برنامه های MDI و SDI این تابع را در تابع OnInitUpdate تایپ کنید. سپس با استفاده Class wizard در رویداد WM_TIMER را پیدا کرده و دو بار برروی آن کلیک کنید تا تابع OnTimer به پروژه اضافه گردد و سپس کد زیر را در آن تایپ کنید: CTime time=CTime::GetCurrentTime(); if(time.GetSecond()%2==0) MyFunction(); else MySecondFunction(); در دستور فوق در ثانیه ای دستور Myfunction و در ثانیه بعدی MySecondFunction اجرا می شود. تابع SetTimer باعث راه اندازی تابع OnTimer می شود. تابع SetTimer مقداری را بر می گرداند که همان مقدار آرگومان اول است (در اینجا عدد 1 می باشد) و آرگومان دوم که بر حسب میلی ثانیه می باشد فاصله بین اجرا را تعیین می کند مثلا هر یک ثانیه یا هر دو ثانیه (2000) و.... تابع فوق یک مقدار عدد صحیح بر می گرداند که همان مقدار آرگومان اول است و به پارامتر تابع OnTimer ارسال می کند. شما می توانید هر چند تایمر که بخواهید در برنامه ایجاد کنید. به کد زیر نگاه کنید: دو متغیر عمومی از نوع int و به نامهای ID 1 و ID 2 و با دسترسی public در کلاس برنامه تعریف کنید و در تابع OnInitDialog کد زیر را بنویسید: ID 1=SetTimer(1,1000,NULL) ID 2=SetTimer(2,5000,NULL) سپس در تابع OnTimer کد یر را وارد کنید: CTime time=CTime::GetCurrentTime(); if(nIDEvents==1) { if(time.GetSecond()%2==0) MyFunction(); else MySecondFunction(); } else if(nIDEvents==2) { ... . . .. } مقدار برگشتی دو تابع SetTimer در نتغیرهای ID 1 و ID 2 قرار می گیرد و به تابع OnTimer ارسال می شود و با استفاده از مقدارهای ارسال شده تععین می کنیم که در چه فاصله زمانی کدام کار انجام شود. لازم به ذکر است که محدوده زمانی یک تایمر بین 55 میلی ثانیه تا 32^2 منهای 1 می تواند باشد(کتاب آموزش ویژوال سی++ نوشته دیویس چاپمن ترجمه احترام توسلی) salam nemidonam barname round robin be darde mikhore ya na سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 353]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن