سلام به همگی
فقط یه موردی اقای منصوری این تاچ من اوکی کردم مونده فقط گوشه چپ و راست رو اشتباه میگیره
یعنی کالیبره میگیره دو گوشه چپ و راست ولی جا بجا کار میکنه مثلا موس گوشه چپ بالا میزنی کوشه راست پایین کار میکنه
چطوری موقعیت تاچ تعیین میشه؟
سلام به همگی
فقط یه موردی اقای منصوری این تاچ من اوکی کردم مونده فقط گوشه چپ و راست رو اشتباه میگیره
یعنی کالیبره میگیره دو گوشه چپ و راست ولی جا بجا کار میکنه مثلا موس گوشه چپ بالا میزنی کوشه راست پایین کار میکنه
چطوری موقعیت تاچ تعیین میشه؟
دستوری به نام GUI_Touch_SetOrientation هست که برای این منظور بکارمیره:
[PHP]void GUI_Touch_SetOientation(unsigned int Orientation)[/PHP]Orientation میتونه ترکیبی از فلگهای زیر باشه:
GUI_MIRROR_X
GUI_MIRROR_Y
GUI_SWAP_XY
مورد شما فکر کنم این دستور ردیف بشه:
[PHP]GUI_Touch_SetOrientation(GUI_MIRROR_X|GUI_MIRROR_Y );[/PHP]این دستور رو بعد ازکالیبراسیون قرار بدهید.
موفق باشید
ویرایش توسط mansoory : 01-04-2013 در ساعت 20:59
سلام منم همین مشکل رو داشتم برای حلش فقط اسم دو زیر برنامه X , Y را با هم جا به جا نمودم به صورت زیر
[PHP]
int Read_Y(void)
{
int i;
TP_CS_LOW();
DelayUS(1);
WR_CMD(CHX); // ja be ja X
DelayUS(1);
i=RD_AD();
TP_CS_HIGH();
return i;
}
int Read_X(void)
{
int i;
TP_CS_LOW();
DelayUS(1);
WR_CMD(CHY); // ja be ja Y
DelayUS(1);
i=RD_AD();
TP_CS_HIGH();
return i;
}
[/PHP]
جناب منصوری خیلی ممنونم ولی با پروژه ای که فرستادید هم نتیجه ای حاصل نشد
من چه بورد و ال سی دی بگیرم که هم ارزون باشه هم کارم راه بیفته؟
چطور نتیجه نگرفتید؟
با هدربردتون چه کارهایی رو تونستید انجام بدید؟ چرا میخواهید بردتون روعوض کنید؟
یکم بیشتر تلاش کنید. چندبار اتصالات روکنترل کنید. اینقدر زود ناامید نشید. یادتون باشه که آخرش تنها خودتون میتونید به خودتون کمک کنید. راهنمایی های دیگران بدون تلاشهای خودتون بی ثمرخواهد بود.
موفق باشید
ویرایش توسط mansoory : 03-04-2013 در ساعت 09:08
از لطفتون ممنون من دقیقا مدار رو بستم و چک کردم (p2.0-7,p0.15-22,p2.8,p1.27-29)
با تستی که انجام دادم نرم افزار کنترلر رو درست شناسایی میکنه (ili9325) ولی چیزی رو صفحه نمایش داده نمیشه و صفحه سفیده در صورتی که طبق برنامه باید صفحه قرمز و دو جمله در مختصاتهای داده شده درج بشه
عذر میخوام استاد چطور میتونم جواب سوالاتمو زودتر ازتون بگیرم؟
ویرایش توسط akbh : 03-04-2013 در ساعت 16:56
بله هدر بورد و ال سی دی سالمه چون نمونه برنامه ای که براتون فرستادم روش اجرا میشه و همه مراحل برنامه شما رو هم اجرا میکنه و وقتی وارد حلقه while میشه من یک led رو روشن و خاموش میکنم که این قسمت هم اجرا میشه
من که دیگه عقلم به جایی قد نمیده
ببخشید دوستان میشه توضیح بدید که چطوری میشه emwin را همراه با rtx راه اندازی کرد.
سلام اگه بشه به عنوان یک پروژه یک کیبورد فارسی درست کنیم به این صورت که در یک صفحه یک فیلد خالی باشد و با کلیک بر دکمه کنار فیلد یک کیبورد شبیه به عکس ضمیمه شده باز و عبارتی را تایپ و با زدن send متن تایپ شده به فیلد انتقال یابد
غیر از آقایان microprocesor_2002 و ez1362 دوست دیگری تمایل به همکاری در این برنامه ندارد؟
از آقای منصوری خواهش میکنم که اگر برایشان مقدور هست یکسری جهت دهی های بنمایند و برای ساختش قسمت های لازم برای این برنامه را بفرماینند بعد هر کدام از دوستان روی یک بخشی کار کنیم.
ویرایش توسط titery : 03-04-2013 در ساعت 23:11
با .xxxxxشکن باید بازش کنید. برای ایران مسدود شده متاسفانه!
یا اینکه از نسخه 5.16 که با keil 4.6 به بعد اومده استفاده کنید
ایده جالبی است.
پنجره را بصورت Dialog تعریف کنید و از GUI Builder برای ساختنش استفاده کنید. پنجره دو سایز عادی و مینیمایز داشته باشه و از پیغام WM_MOUSEOVER یا پیامهای مشابه برای بالا آوردن اون (بادستورGUI_MEMDEV_MoveInWindow)استفا ه کنید.یا یک Widget از نوع image (با ابعاد کوچک در و تصویری که نمایانگر صفحه کلید باشد)برای پنجره Desktop بسازید و از پیام WM_CLICKED اون برای فراخوانی صفحه کلید استفاده کنید. میتونید از خاصیت TRANSPARENT استفاده کنید و صفحه کلید رو شیشه ای طراحی کنید تا پشت اون دیده بشه....
اما یک نکته... چطوری میخواهید صفحه کلید رو استفاده کنید؟ پست بعدی رو ببینید
ویرایش توسط mzarkoob : 30-03-2014 در ساعت 14:47
کار با صفحه کلید مجازی:
فصل 24 راهنما درباره کیبرد و نحوه ارتباط اون با emwin است.
صفحه کلید مجازی چیست؟
وقتی میخواهید از کیبرد استفاده کنید، باید توابع زیادی رو بسازید که کارهای ویرایش متن رو انجام بده. چون وارد کردن یک رشته یا عدد، همه ماجرا نیست. باید بتوانید اونها رو ویرایش هم بکنید. اگه زبان فارسی استفاده می کنید که دردسر بیشتری پیش رو دارید و باید کلمات رو شناسایی کرده و در ابتدای هر کلمه حروف اول وبعد از هر Space حروف آخر رو اصلاح کنید .
اگر فقط قصد استفاده از صفحه کلید انگلیسی رو دارید، emwin با صفحه کلید مجازی کار شما رو راحت کرده.
این صفحه کلید دارای بافری به اندازه 10 کاراکتر است که می توانید اندازه آنرا در فایل GUI.h تغییر دهید.
در ادامه ترجمه این فصل رو باهم مرور می کنیم:
Virtual Keyboard
صفحه کلید مجازی EMWIN
رابطهای کیبرد از استاندارد ASCII برای تشخیص کاراکترها استفاده می نمایند.
کلیدهای تعریف شده در EMWIN
به جز کاراکترهای ASCII،emwin کاراکترهای پیش تعریف شده ای برای ویرایش متنها دارد. این کاراکترها در فایل GUI.H تعریف شده اند (ماکرو هستند) به همین دلیل،کاراکترها در emwin از نوع Extended ASCII است.
کلیدهای کنترلی تعریف شده در emwin بصورت زیر است:لایه درایور
GUI_KEY_BACKSPACE Backspace key.
GUI_KEY_TAB Tab key.
GUI_KEY_ENTER Enter/return key.
GUI_KEY_LEFT Left arrow key.
GUI_KEY_UP Up arrow key.
GUI_KEY_RIGHT Right arrow key.
GUI_KEY_DOWN Down arrow key.
GUI_KEY_HOME Home key (move to beginning of current line).
GUI_KEY_END End key (move to end of current line).
GUI_KEY_SHIFT Shift key.
GUI_KEY_CONTROL Control key.
GUI_KEY_ESCAPE Escape key.
GUI_KEY_INSERT Insert key.
GUI_KEY_DELETE Delete key.
لایه کیبرد وظیفه انتقال پیامهای کیبرد را برعهده دارد. توابع آن، Window Manager یا WM را هنگامی که کلیدی فشرده یا آزاد شود مطلع می کنند. سپس WM کاراکتر دریافتی را به CallBack پنجره یا Widget فعال (دارای Focus) ارسال می کند. این لایه شامل دو دستور GUI_StoreKeyMsg و GUI_SendKeyMsg میباشد.
[PHP]GUI_StoreKeyMsg(Key, Pressed):[/PHP]
این دستور دارای دو آرگومان بوده که یک استراکچر به نام Message Data با عضوهایی به نامهای Key,Pressed را در بافر صفحه کلید ذخیره می کند. شرح آرگومانها:
Key: یک کاراکتر در محدوده کدهای 0x20 الی 0xff یا یکی از کلیدهای کنترلی
Pressed: وضعیت کلید فوق (1: فشرده- 0: رها شده)
نکته: این تابع را میتوانید در وقفه مربوط به صفحه کلید استفاده کنید. مدیر داده های ورودی کیبرد در emwin دارای یک بافر FIFO است که میتواند حداکثر 10 کاراکتر را ذخیره نماید.
[PHP]GUI_SendKeyMsg(Key, Pressed):[/PHP]
این دستور برای شبیه سازی کیبرد استفاده می شود. و وظیفه آن اجبار WM به ارسال کاراکتری خاص به پنجره فعال است-- درصورتیکه پنجره ای فعال باشد پیام کیبرد به آن ارسال میشود و درغیر اینصورت بوسیله دستور GUI_StoreKeyMsg در بافر ذخیره میشود---. آرگومانهای آن دقیقا شبیه دستور قبلی است.
نکته: این دستور نباید در روال وقفه سخت افزاری کیبرد مورد استفاده قرار گیرد (از دستور GUI_StoreKeyMsg استفاده شود).
لایه کاربری کیبرد
پس از اینکه کاراکترها با موفقیت به WM ارسال شدند، از دستورات زیر برای دسترسی به آنها در برنامه خود استفاده کنید:[PHP]Void GUI_ClearKeyBuffer(void):[/PHP]
GUI_ClearKeyBuffer() Clear the key buffer.
GUI_GetKey() Return the contents of the key buffer.
GUI_GetKeyState() Returns the current key state.
GUI_StoreKey() Store a key in the buffer.
GUI_WaitKey() Wait for a key to be pressed.
این دستور برای پاک کردن محتویات بافر کیبرد استفاده میشود. و فاقد مقدار برگشتی است.
[PHP]Void GUI_GetKey(void):[/PHP]
آخرین داده موجود در بافر کیبرد را برمیگرداند. درصورتیکه بافر خالی باشد مقدار صفر را برمیگرداند.
GUI_GetKeyState( GUI_KEY_STATE *pstate)این دستور مقدار آخرین وضعیت صفحه کلید رو در استراکچر GUI_KEY_STATE برمیگرداند. ( آخرین کلیدی که فشرده شده چیست و الان در چه وضعیتی است-فشرده یا رها شده)
[PHP]GUI_StoreKey(int Key)[/PHP]
این دستور برای نوشتن یک کاراکتر در بافر کیبرد استفاده میشود
نکته: این دستور معمولا بوسیله توابع لایه درایور مورد استفاده قرار میگیرد و در لایه کاربری مورد استفاده ندارد.
[PHP]Int GUI_WaitKey (void)[/PHP]
این دستور یک حلقه است که منتظر وارد شدن یک کاراکتر در بافر میماند (درصورتیکه بافر مقداری داشته باشد آنرا برگردانده و از حلقه خارج میشود)
پیشنهاد میکنم یکی از سمپلهای emwin به نامSkinngin Notepad رو مطالعه بفرمایید. من هم آمادگی دارم که این در این پروژه همکاری کنم( صفحه کلید فارسی/انگلیسی + صفحه ورود اعداد فارسی و انگلیسی)
موفق باشید.
ویرایش توسط mansoory : 04-04-2013 در ساعت 13:01
پیشنهاد من اینه که هرچه زودتر السیدی رو راه بیاندازید.ناامید نباشید. در فرومها سرچ کنید. انشالله راه حل مشکلتون روپیداخواهید کرد.باعوض کردن برد احتمالا مشکلتون مقطعی رفع میشه ولی اگه بتونید باهمین برد کارکنید، تجربه ارزشمندی بدست خواهید آورد.
هروقت ال سی دی راه افتاد برگردید اینجا و هرمشکلی داشتید درخدمتتونم
درهمین تایپک توضیح داده شده
ویرایش توسط mzarkoob : 30-03-2014 در ساعت 14:51 دلیل: ادغام
سلام
اگر با یک LCD 2.8 یا هر سایز دیگه کار می کنید و درایور ADS7843 یا ADS7846 وظیفه خواندن touch را دارد ، درایور نرم افزاری در emWin موجود است ولی توابع آن آرگومان های پیچیدهای دارد . پیشنهاد می کنم از یرایور موجود در بردهای فروشگاه استفاده کنید و طبق روش دومی که آقای منصوری اشاره کردند (GUI_X_Touch_Analog()a) استفاده کنید ولی نکته قابل ذکر اینکه طبق فرمایش آقای منصوری درست است که pointer ثبات داره ولی بدون تاچ . اگر با مداد به یک نقطه ثابت اشاره شود یکم لرزش مشاهده می شود . برای رفع این مشکل از داخل فایل درایوری که اشهره اردم ، تابع ADS7843_GetPosition2 (&x, &y);a را به کار ببرید . ماکروی READ_TIMES با حداقل 12 برای شما یک moving-avarage-filter را خواهد ساخت (همان میانگین گیر) که ثبات بسیار خوبی به PID می دهد . هر دو فایل رو آپلود می کنم واستون .
ویرایش توسط ez1362 : 06-04-2013 در ساعت 00:31
The Code Completion and Dynamic Syntax Checking feature does not appear to work and the new text completion settings Edit — Configuration — Text Completion — Show Code Completion List is missing.
RESOLUTION
To correct this, do the following:
- Close all instances of µVision on your PC.
- Extract the attached files into your [installation_path]\UV4\ folder. The default [installation_path] is C:\Keil.
- Restart µVision.
Code Completion and Dynamic Syntax check should work now.
MORE INFORMATION
- Refer to Code Completion in the µVision4 User's Guide.
- Refer to Dynamic Syntax Checking in the µVision4 User's Guide.
ATTACHED FILES
Request the files attached to this knowledgebase article.
https://www.keil.com/support/attachment/3611.htm :از اینجا دانلود کنید
سلام به دوستان EMWIN کار ....
من سوالی داشتم ...
اگه بخوایم مثلا هر 1 ثانیه مقدار یک Text box یا هر چیز دیگه ای رو تغییر بدیم چطوریه ؟؟؟
حالا 1 ثانیه مهم نیست ولی تو تغییر دادن مقدار به مشکل بر خوردم .
ممنون میشم اگر کسی میدونه بهم بگه ....