PDA

View Full Version : ارسال با وقفه



babalengderaz
سه شنبه 18 دی 1386, 18:36 عصر
با سلام
برای ارسال یکسری دستورات به یگ دستگاه که از پورت موازی استفاده میکند از یک حلقه For اگه استفاده کنم دستگاه متوجه نمیشود و دستورات را رد میکند(به خاطر سرعت بالا) از Timer هم اگه استفاده کنم زیر یک مقدار Delayهم نمیتونم بیام مثلا می خواهم واقعا 1 میلی ثانیه بین دستورات delay داشته باشم؟؟؟

hassan razavi
سه شنبه 18 دی 1386, 22:24 عصر
از


System.Threading.Thread.Sleep(1);


استفاده کنید.

sinpin
سه شنبه 18 دی 1386, 22:37 عصر
با سلام
برای ارسال یکسری دستورات به یگ دستگاه که از پورت موازی استفاده میکند از یک حلقه For اگه استفاده کنم دستگاه متوجه نمیشود و دستورات را رد میکند(به خاطر سرعت بالا) از Timer هم اگه استفاده کنم زیر یک مقدار Delayهم نمیتونم بیام مثلا می خواهم واقعا 1 میلی ثانیه بین دستورات delay داشته باشم؟؟؟
هیچوقت نمیتونید تضمین کنید که حتما 1 میلی ثانیه رو بتونید دقیق محاسبه کنید
این لینک رو ببینید :
http://channel9.msdn.com/ShowPost.aspx?PostID=158127

Windows is not a real-time operating system, it can never guarantee that something will take an exact amount of time to complete. Because you're not the only app running on the system, process time and wall clock time rarely coincide.

What they might mean is that TickCount cannot have accurate resolution less than 500ms.

babalengderaz
چهارشنبه 19 دی 1386, 13:05 عصر
هیچوقت نمیتونید تضمین کنید که حتما 1 میلی ثانیه رو بتونید دقیق محاسبه کنید
این لینک رو ببینید :
http://channel9.msdn.com/ShowPost.aspx?PostID=158127



چون من میخواهم بعد از اتمام کار یک نخ کار نخ دیگری را شروع کنم با این وجود دقیقا نمی توان زمان شروع به کار نخ دیگر را محاسبه کرد و یا این دو کار روی هم می افتن یا کار دوم با تاخیر شروع میشود یعنی فک کنم یک نسبت خطی برای Sleep کردن نمی توان به دست آورد(مشکل من از اینجا ناشی میشه که میخواهم با sleep کردن یک نخ سرعت برنامه رو کم کنم و بین دستورات کد در حال اجرا وقفه تولید کنم )

اگه راهنمایی کنید متشکر میشم

sinpin
چهارشنبه 19 دی 1386, 13:30 عصر
مشکل من از اینجا ناشی میشه که میخواهم با sleep کردن یک نخ سرعت برنامه رو کم کنم و بین دستورات کد در حال اجرا وقفه تولید کنم
مشکلی نیست. فقط چون ذکر کرده بودید حتما یک میلی ثانیه من گفتم نمیشه روش حساب کرد...

application_13
چهارشنبه 19 دی 1386, 15:20 عصر
سلام.
اگه اشتباه نکنم تو خود سریال پورت در قسمت propetise گزینه ای هست که دستورات رو با وقفه واست ارسال کنه. میبینم تا مطمین شم. بهتون میگم.

babalengderaz
پنج شنبه 20 دی 1386, 12:24 عصر
یعنی اگر تو یک حلقه For دستورات را بفرستم خود پورت موازی میتواند این وقفه را به وجود بیاورد و حداقل وقفه بین بیتهای ارسالی را به طوری که دستگاه متوجه آن شود را به وجود بیاورد

application_13
پنج شنبه 20 دی 1386, 17:55 عصر
سلام. دوست عزیز اگه ممکنه یه توضیحی درمورده برنامت بده.
من یه برنامه نوشته بودم که سه عدد رو پشت سر هم به پورت ارسال میکرد و سخت افزلری که درست کرده بودم 3 تا عدد رو میگرفت. شما بگید چی میخواید بفرستید.

babalengderaz
شنبه 22 دی 1386, 03:13 صبح
با استفاده از پورت موازی به یک Stepper motor فرامینی را ارسال میکنم اما سرعت موتور از یک حدی بالاتر نمیره(موتور ُSupport میکنه اما وقفه ارسال زیاده)

application_13
شنبه 22 دی 1386, 19:20 عصر
موتور ُSupport میکنه اما وقفه ارسال زیاده
سلام.
شما اول پرسیدید که چطوری وقفه بندازم. ولی اینجا با توجه به چیزی که گفتید وقفه وجود داره اما میخواید کم کنید. بالاخره کدوم! آیا وقفه وجود داره و میخواید کمش کنید یا وقفه نداری میخوای بین دستورات ارسالی توسط port وقفه ایجاد کنی؟

babalengderaz
یک شنبه 23 دی 1386, 08:47 صبح
چون شما در پست 6 فرمودید که خود پورت موازی این وقفه را به وجود می آورد ( راه حل اونو نگفتید) من گفتم چطور میشه آن رو به وجود آورد وگرنه در پست 1 گفتم که وقفه دارم اما از یک حد پایین تر نمیاد ! به هرحال اگه ممکنه در مورد کاهش وقفه منو راهنمایی کنید

application_13
یک شنبه 23 دی 1386, 12:56 عصر
سلام دوست عزیز.
برای پست قبلی متاسفم. من درست متوجه نشدم.
همونطور که گفتم با پرتها کار کردم و خوب جواب داده. نمیدونم شما چیکار میکنید که اینجوری میشه. اگه بتونی کدی که واسه ارسال نوشتی رو بذاری خیلی از دوستان میتونن کمکت کنن.
راستی از writetimeout هم استفاده کن. فکر کنم جواب بگیری. مقدارش بر حسب میلی ثانیه هستش. مقدار پیش فرض خودش 1- هست . اگه جواب گرفتی به ما هم خبر بده.

babalengderaz
سه شنبه 25 دی 1386, 13:55 عصر
من از کامپوننت inout32 استفاده کردم و آدرس پورت و مقدار خروجی رو میدم بعد موتور حرکت میکند اما از اونجا که مثلا باید 200 بار به موتور بیتی ارسال شود تا 360 درجه بچرخد وقفه های بالا خیلی به چشم میاد (<100ms)

babalengderaz
شنبه 29 دی 1386, 09:22 صبح
از دوستان کسی کمک نمیکنه