نوشته اصلی توسط
mducati999
سلام خدمت دوستان
سوالی داشتم در رابطه با توابع کالیبره در emwinهمون طور که میدونید
برای کالیبره کردنه صفحه تاچ از تابع زیر استفاده میکنیم
;(int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phy
که این تابع
در کتابخانه GUI.hموجود میباشد
سوالم اینه که چرا این تابع opensourceنیست و چرا به کد cاین تابع نمیتوان دسترسی داشت
برای مثال مشکلی که دارم delayهست که موقع تاچ کردن صفحه وجود داره
باید حتما موقع تاچ کردنه صفحه یه زمان خیلی کم مکث داشت
البته میدونم که این تابع از تاچ کردنه صفحه نمونه برداری و میانگین رو حساب میکنه
در واقع مشکل اصلی بنده با صفحه تاچ کند بودنه تاچه
خیلی سریع نسبت به تاچ کردنه صفحه عکس العمل نشون نمیده
حتما باید با مکث صفحه رو لمس کرد تا دستورات اجرا بشن
از اینکه میخواستم دسترسی به تابع کالیبره داشته باشم این بود که بتونم تعداد نمونه برداری از صفحه تاچ رو کم کنم
تا مثلا زمان تاچ شدنه صفحه کم بشه
بشه سریع تر با صفحه کار کرد
شما فکر کنید یه صفحه کلید نه رقمی دارید و میخواید مدام رقم وارد کنید این صفحه تاچ اینقد کند عمل میکنه که کاربر خسته میشه
شما فکر میکنید این مشکل برمیگرده به تابع کالیبره emwin
یا باید بجای صفحه تاچ مقاومتی از خازنی استفاده کرد
من یادمه اوایل که گوشی های موبایل تاچ آمده بودن صفحه تاچ شون مقاومتی بود ولی اینقد کند عمل نمیکردن
مسلما مشکل باید از تابع کالیبره emwinباشه نمیدونم چور میشه دسترسی به کد سی این تابع پیدا کرد
یا اصلا روشی وجود داره که بشه سرعت تاچ کردن رو بالا برد
آیا توابعی وجود دارن که بشه این سرعت رو کم یا زیاد کرد
بشه سریع تر صفحه رو تاچ کرد
ممنون میشم از دوستان اگه اطلاعاتی دارن کمک کنن
دوستان سلام
مشکل و پیدا کردم در واقع راه حل بسیار ساده ای داشت
درواقع خنگ بازی درآوردم
با کمی دقت تو توابع مربوط به تاچ متوجه مشکل شدم
این مشکل ربطی به تابع کالیبره زیرنداره
;(int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phy
درواقع چون من از سیستم عامل تو برنامه ام استفاده نمیکنم و اسکن صفحه تاچ رو تو زیربرنامه وقفه تایمر سیستم بررسی میکنم وقفه تابع SysTick_Handler
در واقع همون تابع ;()GUI_TOUCH_Exec
رو که وظیفه اش اسکن صفحه تاچ و نمونه برداریه باید هر چند میلی ثانیه فراخوانی بشه که این کار تو تابع وقفه تایمر سیستم انجام میشه SysTick
من تو این تابع یه حلقه FORداشتم این حلقه باعث شده بود فراخوانی تابع ;()GUI_TOUCH_Exec
با کمی مکث اجرا بشه همین موضع باعث شده بود اسکن صفحه تاچ به کندی انجام بشه و کاربر مجبور بشه کمی مکث روی صفحه تاچ داشته باشه تا دستورات مربوطه اجرابشن
( if ( POINTER_ticks++ > 50
}
;POINTER_ticks = 0
;()GUI_TOUCH_Exec
{
این چند خط تو وقفه تایمر سیستم بررسی میشد
در واقع همون عدد 50باعث شده بود این مکث ایجاد بشه
و زمان اسکن صفحه تاچ طولانی بشه
همین