سلام خدمت همه اساتید
من یه ایده ای دارم که برایبخشی از اون طرح باید بتونم مختصات حرکت در محور های عرضی و طولی رو اندازه بگیرم توی کامپیوتر اندازه عدد متناظر با اون حرکت نشان داده بشه .
داشتم فکر میکردم بجای اینکه بیامو یه جور متر دیجیتال بسازم ، شاید بشه یه درایور برای ماوس نوشت ( یا درایور موس رو ویرایش کرد ) که بجای حرکت دادن نشاگر موس روی صفحه نمایش ، بیاد و عدد حرکت رو در جهت عرض و طول نشون بده . اینجوری با یکم بهینه کردن اون درایور و نوشتن یه برنامه میشه از موس بعنوان یه متر استفاده کرد .
کسی از دوستان علاقه مند هستش که با هم این طرح رو دنبال کنیم ؟
ممنون میشم اگه کمک کنین چون من زیاد از مباحث برنامه نویسی سررشته ندارم و بیشتر سخت افزاری و الکترونیک بلدم .
باتشکر
منظورتون از عدد حرکت در جهت عرض و طول چیه؟
کاربردش چیه؟
سلام
من یه بورد کنترلر CNC طراحی کردم که میخواستم بهش امکان کنترل حلقه بسته اضافه کنم
فرض کن نوک یه مدادو روی کاغذ گذاشتیم و میخوای با این مداد یه مربع 5 ساتیمتری بکشی
این مداد به دوتو موتور وصل باشه که این دوتا موتور از کامپیوتر فرمان میگیره ( یک موتور در عرض حرکتش میده و دومی در طول )
حالا چطور باید فهمید که این مداد مثلا 5 سانتی متر حرکت کرده ؟
یا اینکه چقدر در طول حرکتش دادیم و چقدر در عرض ؟
برای اینکار باید یه نوع متر دیجیتالی ساخت و عدد دریافتی از اون مترو داد به کامپیوتر
حالا من یه ایده به ذهنم رسید که بجای اینکه متر دیجیتال طراحی کنمو اصلاعاتشو بدم به کامپیوتر
بیامو یه ماوس دیگه به کامپیوتر وصل کنم و درایورشو تغییر بدم جوری که بجای حرکت نشانگر کامپیوتر بیاد همون مختصات نشانگر ( این موس دومی روی همون کاغذ گذاشته میشه جوری که همراه حرکت مداد موس هم حرکت میکنه ) یعنی میزان جابجایی قلم روی کاغذو نشون بده .
اینجوری میشه باهاش حرکت موتور هارو و جابجایی مداد رو کنترل کرد
البته این یه مثال بودش و کاربرد های دیگه ای هم میتونه داشته باشه
(۳۰-فروردین-۱۳۹۲, ۰۹:۵۳:۲۲)MicrowaveCO نوشته است: [ -> ]سلام
من یه بورد کنترلر CNC طراحی کردم که میخواستم بهش امکان کنترل حلقه بسته اضافه کنم
فرض کن نوک یه مدادو روی کاغذ گذاشتیم و میخوای با این مداد یه مربع 5 ساتیمتری بکشی
این مداد به دوتو موتور وصل باشه که این دوتا موتور از کامپیوتر فرمان میگیره ( یک موتور در عرض حرکتش میده و دومی در طول )
حالا چطور باید فهمید که این مداد مثلا 5 سانتی متر حرکت کرده ؟
یا اینکه چقدر در طول حرکتش دادیم و چقدر در عرض ؟
برای اینکار باید یه نوع متر دیجیتالی ساخت و عدد دریافتی از اون مترو داد به کامپیوتر
حالا من یه ایده به ذهنم رسید که بجای اینکه متر دیجیتال طراحی کنمو اصلاعاتشو بدم به کامپیوتر
بیامو یه ماوس دیگه به کامپیوتر وصل کنم و درایورشو تغییر بدم جوری که بجای حرکت نشانگر کامپیوتر بیاد همون مختصات نشانگر ( این موس دومی روی همون کاغذ گذاشته میشه جوری که همراه حرکت مداد موس هم حرکت میکنه ) یعنی میزان جابجایی قلم روی کاغذو نشون بده .
اینجوری میشه باهاش حرکت موتور هارو و جابجایی مداد رو کنترل کرد
البته این یه مثال بودش و کاربرد های دیگه ای هم میتونه داشته باشه
برای این کار یا از سرو استفاده می کنن یا استپر یا موتور اینکودر دار این درد سر هارو هم نداره خیلی هم دقیق هست ولی اگه همین طوری می خوای کار کنی یه چیزی
-
راستی دقت موس تغییر می کنه و میزان حرکتش توی ویندوز هم تغییر میده پس شما نهایتا برای موس خودت می تونی این کار رو بکنی وگرنه برای هر موس باید یک بار کالیبره انجام بدی
با این کد می تونی مختصات موس رو بر اساس PIXEL بگیری
کد:
Private Type POINTAPI
x As Long
y As Long
End Type
Private m_CursorPos As POINTAPI
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Sub GetCursor()
Dim LonCStat As Long
LonCStat = GetCursorPos&(m_CursorPos)
'to use this result, the data must be converted into Pixel
m_CursorPos.x = m_CursorPos.x * Screen.TwipsPerPixelX
m_CursorPos.y = m_CursorPos.y * Screen.TwipsPerPixelY
End Sub
ممنون از جوابت
حرفتون در مورد سروو موتور درسته و من خودم هم از استپ موتور استفاده کردم
ولی دوتا مشکل وجود داره
1) با این برنامه های آماده CNC که به پورت پرینتر متصل میشن نمیشه اطلاعات اینکودر فرستاد
2) همیشه بخاطر خلاصی و لغی سیستم مکانیک و یا خطا های دیگه امکان داره که حرکت پله های موتور بهم بریزه و مختصات دریافتی تغییر کنه
درمورد کالیبره کرد با تغییرات ماوس های مختلف هم حق با شماست و قصد داشتم برنامه رو در ادامه کامل کنیم جوری که امکان کالیبره کردن وجود داشته باشه
شما علاقه داری که روی پروژه CNC باهم کار کنیم ؟
یعنی از این مباحث کنترلیش شروع کنیم و نهایتا یه برنامه کنترل جامع برای سی ان سی درست کنیم
یموضوع دیگه هم هستش . اونم اینه که ما قراره 2 تا ماوس به سیستم وصل باشه که یکیش مربوط به CNC هستش و یکی هم ماوس خود سیستم
ماوس مربوي به CNC فقط باید مختص برنامه ما باشهو تاثیری در حرکت نشانگر ماوس نداشته باشه
(۳۰-فروردین-۱۳۹۲, ۱۰:۲۳:۱۷)MicrowaveCO نوشته است: [ -> ]ممنون از جوابت
حرفتون در مورد سروو موتور درسته و من خودم هم از استپ موتور استفاده کردم
ولی دوتا مشکل وجود داره
1) با این برنامه های آماده CNC که به پورت پرینتر متصل میشن نمیشه اطلاعات اینکودر فرستاد
2) همیشه بخاطر خلاصی و لغی سیستم مکانیک و یا خطا های دیگه امکان داره که حرکت پله های موتور بهم بریزه و مختصات دریافتی تغییر کنه
درمورد کالیبره کرد با تغییرات ماوس های مختلف هم حق با شماست و قصد داشتم برنامه رو در ادامه کامل کنیم جوری که امکان کالیبره کردن وجود داشته باشه
شما علاقه داری که روی پروژه CNC باهم کار کنیم ؟
یعنی از این مباحث کنترلیش شروع کنیم و نهایتا یه برنامه کنترل جامع برای سی ان سی درست کنیم
من هزار تا سودا درم ولی همون یه سرم ندارم
-
طبق معمول شما شروع کن گیر کردی کمکتون می کنیم
ممنونم از کمکت ولی من برنامه نویسی کامپیوتر زیاد سرم نیشه
یجورای تقریبا بلد نیستم
بیشتر سرم به الکترونیک گرمه
تا رفت من برنامه نویس بشم کلا سل پورت پرینتر که هیچی ... پورت سریال هم از توی مادربوردا منقرض میشه باید ببیرم برنارو بزارم تو موزه
از این پروژه های به بن بست خورده زیاد دارم
گمونم آخرش برمو رشتمو عوض کنم
دوباره سلام
تونستم نحوه پیکربندی ماوس از طریق AVR پیدا کنم . حالا یه سوال پیش میاد . اگه بخوام ماوس رو به پورت سریال وص کنم آیا با استفاده از کامپوننت mscomm32 راهی برای خوندن پایه هایی بجز RXD و TXD هم وجود داره ؟
یعنی :
چطور میشه پایه های DCD - DTR - DSR - RTS - CTS-RI رو خوند یا بهش فرمان داد ؟
اصلا راهی وجود داره که این پایه هارو کنترل کرد ؟
لطفا اگه دستوری یا تابعی برای خوندن اینا هست بهم بگید و اگر ممکنه ازشون یه مثال برام بزارید
بعنوان مثال اگه به پین RI پین شماره 9 پالس بدیم ، چطور میشه تعداد پالس های روی پین Ri رو شمرد؟
یا اینکه چطور میشه پین 4 رو صفر یا یک کرد و ......
با تشکر