سلام.جناب آقای رییسی چطور میشه با استفاده از api های multiedit یک عدد رو دریافت کرد؟(ساده ترین راه)
من خیلی با api هاش کلنجار رفتم ولی نتیجه دلخواه رو نگرفتم.
تو edit معمولی از این توابع استفاده کردین که جواب میداد:
تو اینیشیال:کد:int buf[100],i;
و در رویداد edit:کد:hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0); EDIT_SetDecMode(hItem,0,0,1000000,0,GUI_EDIT_NORMAL);
ولی تو multiedit تابع مناسب رو ندیدم.کد:hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0); i=EDIT_GetValue (hItem); sprintf(buf,"%1d",i); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetText(hItem,buf);
ویرایش توسط omid_2132 : 22-10-2017 در ساعت 10:23
سلام مهندس
چندتا سوال کوتاه دارم
1 - برای اینکه یک کیبورد کامل شامل حروف و اعداد بخوایم به پروژه ادد کنیم سورس آماده و قابل فهمی هست از استفاده کنیم ؟ اصلا اگر خودم با باتون بسازم ایرادی نداره ؟ کدومش بهتره ؟
2 - برای framewin دکمه بستن صفحه رو با دستور AddCloseButton اضافه کردم و به درستی هم کار میکنه سوالم اینه که چطوری میتونم برای closebotton ی اکشن تعریف کنم ؟ چون مثل باتون های معمولی جایی برای تعریف دستورات نداره
3 - برای اینکه یک framewin یکبار باز بشه و تا زمانی که باز هست مجدد باز نشه باید چه کنم
سلام خدمت دوستان
تو بحثه شیرین emwinبنده با میکروی stm32کار کردم
امروز خواستم یه فایلی بزارم برای دوستانی که مثل بنده با میکروی stm32f103قصد راه اندازی emwinرو دارن
چون فیلم آموزشی emwinدوست عزیزمون آقای رئیسی بامیکروی 1788هست
البته میدونین که راه اندازی emwinربطی به سخت افزار نداره
ولی درهرصورت خواستم با این فایل به دوستانی که تازه شروع به کار کردن کمکی بشه
که درگیره راه اندازی اولیه نشن و از این فایل به عنوان مرجع برای برنامه های خود استفاده کنن
البته لازمه بگم که تو این برنامه صفحه تاچ کالیبره نیست
زحمت کالیبره کردنه صفحه تاچ با خودته دوستان
سخت افزار استفاده شده در این برنامه بردآموزشیstm32f103zet6fullخوده سایته کویر هست
درایورراه اندازی السیدی بردssd1963خوده سایته کویره
السیدی مورداستفاده4.3اینچ میباشد
کم و کسری هم اگه داره دوستان ببخشن
دانلود فایل STM32F103-EMWIN-SSD1963-KAV.rar | آپلود سنتر آپلودر
سلام تو این انجمن و تو انجمن مربوط به آموزش emWin مطالب زیادی هست که پاسخ اکثر سوالات رو میتونید از اون پیدا کنید.
آموزش emWin
تو این انجمن تقریبا همه چی راجع به emwin گفته شده .کیبرد و framewin و.....
دوستان یه کم به خودشون زحمت بدن یه کم وقت بذارن مطالعه کنن
اکثر سوالاتی که میشه تکراری هست.
وقتی میکرو عوض میشه خب معلومه که خطا میده.هر میکرویی هدر فایل های خاص خودش رو داره.
اینجا آموزش کیل نداریم که بخوایم راجع به این چیزا صحبت کنیم.....
انجمن های خاص برای این موضوعات هست که میتونید ازشون استفاده کنید.
ویرایش توسط yraeisi : 23-10-2017 در ساعت 10:50
Hardware & Software designer
Telegram:@y_r_z
حرف شما درست . ولی حرف من اینه وقتی من یه آموزشی تهیه میکنم پس یه آدم مبتدی هستم .
شما توی این فیلم که من دیدم یک فصل در مورد نرم افزارGUIBuilder توضیح دادید که این خوبه ولی زمان زیادی گرفته مثلا اومدید در مورد کلید توضیح دادید و این BUTTOM هست . خوب از روی آیکونش مشخصه . اینهارو دونه دونه گزاشتید و توضیح دادید (این توضیحات بدون پورت کردن هر کدامشون هست و از روی آیکن مشخصه). و در آخر در مورد پورت کردن هر کدام از اینها توضیح دادید که این قسمتش خوبه . در مورد تک تک گزینه های نرم افزار توضیح دادید حتی About نرم افزار که اینو همه میدونند اصلا توضیح لازم نداره.
توی یک قسمت بعد که در مورد سخت افزار توضیح دادید توضیح دادید که این برد 1788 هستش و اترنت داره و خروجی انواع lcd ...... بیشتر تبلیغ بود از نظر من .
از نظر شما توضیح دادن موارد بالا لازمه ولی درست کردن یک پروژه در کیل و اظافه کردن توابع به اون و توضیح دادن در مورد اینکه اگه روی سخت افزار رم کافی نداشته باشیم و هر کدوم از توابع چکار میکنند اهمیتی نداره . شاید طرف حافظه فلش کافی نداشته باشه و بخواد کتابخانه های اضافی که ازشون استفاده نمیکنه حذف کنه که حجم کمتری بگیره.
من تا حالا خیلی با کیل کار کردم ولی با اضافه کردن این توابع به پروژه با مشکلاتی روبرو شدم که تا حالا نداشتم .به خاطر همین من این آموزش تهیه کردم
شما باید قبول کنید که این بسته آموزشی خوب مشکلاتی داره . میتونید این قسمت آماده کنید و برای افرادی که این آموزش خرید کردند و درخواست کردند ایمیل کنید
دقیقا مثل آموزش 1768 که فکر کنم یه قسمتی در مورد یکی از مد های pwm توضیح داده نشده بود با شرکت تماس گرفتم و فیلم اون قسمت برام فرستادند
از اینکه میبینم این دوستمون چقد پیگیره خوشحالم
این خصوصیت خیلی خوبیه
ولی یه پیشنهادی دارم
از خودم میگم
منم وقتی شروع کردم به یادگیری emwinهمین مجموعه آموزشی دوست عزیزمون آقای رئیسی رو گرفتم
درحالی که سخت افزار بنده یعنی میکرویی که استفاده میکردم متفاوت بود
درواقع بردی که من داشتمstm32f103zet6اصلا قابلیت راه اندازی السیدی های 4.3به بالا رو نداشت
سورس کدهایی هم که همراه برد از سایت کویرگرفته بودم
همگی برای السیدی 3.2اینچ بود
من درواقع آمدم در ابتدا یه برد درایور1963از کویر مجددا خریدم
وبا آموزش های emwinآقای رئیسی و آموزش های مفید توی همین سایت تاپیک آموزش emwin
سورس کدهایی رو که داشتم رو تبدیل کردم
من متوجه صحبت شما هستم ولی تو چنین بحث هایی و آموزش های تخصصی
که همه سورس های موجود به زبان اصلی هستن
فقط با سرچ کردن داخل اینترنت
و خواندن usermanualهای موجود هست که میتونیم به سطح بالای یه تخصص برسیم
که این موضوع فقط به تلاش خودمون برمیگرده
وگرنه تمامی این آموزش هایی که شما به صورت کتاب یا سی دی میبینید درواقع فقط ابتدای کار رو به شما نشون میدن
و بقیه راه رو باید خودمون پیش بگیریم
منحصرا یه مثال میزنم
همین تاپیک آموزشemwinخیلی به من کمک کرد که بتونم سورس کدهایی که داشتم رو تبدیل کنم به السیدی 4.3
درمورد توابع پرسیدید لازمه بگم به این تکته دقت کنید
خیلی از توابعی که مثلا تو همین بحثه emwinمیبینید
همین مثالی که بنده گذاشتم شاید اسمه توابع فرق کنه ولی با کمی دقت متوجه میشید محتوای توابع باهم مشترکه
دقیقا همین مشترکات بود که بنده تونستن از تاپیک آموزش emwinبرای سورس کد خودم استفاده کنم
همونطور که میدونید تو تاپیک آموزش emwinبچه هایی که اون موقع شروع به کار کردن همگی سخت افزارشون 1788هست
و صحبت هایی هم که شده بیشتر درمورد همون سخت افزاره
ولی با توجه به اینکه emwinربطی به سخت افزار نداره و توابعی که برای این کار استفاده میشه از نظر محتوا باهم مشترک هستن
شما به کمک همون مطالب رو هر سخت افزاری که باشید میتونید emwinرو پیاده کنید
درمورد ramهم کافیه شما توابع مورد نظر رو اضافه کنید
تواین مثالی که بنده گذاشتم ازramاستفاده نشده
شما اگه مشکل خاصی دارین دقیقا همون مشکل رو بیان کنید تا دوستانی که تجربه دارن بتونن دقیقا راهنمایی کنن
به پیشنهاد آقای رئیسی بنده هم پیشنهاد میکنم یکبار به صورت کامل و دقیق تاپیک مربوط به آموزشemwinرو مطالعه کنید
اگه تو اینترنتم سرچ کنید تو خودته سایت seggerهم مطالب مفیدی پیدامیکنید
بازم ببخشید خیلی حرف زدم امیدوارم کمکی کرده باشم
موفق و پیروز باشید
ممنون از جوابت
یه سوال شما که از رم استفاده نکردید چکاری انجام دادید و کدام توابع حذف کردید
سوال بعدی من هم با توابع cmsis و hal کار کردم . یک پروژه ساده درست میکنم ( با هر دو ورژن کیل 4.7 و 5.1 تست کردم)
بعد توابع cmsis بهش اضافه میکنم
این اررور هارو میده
خوب ظاهرا به FSMC گیر داده . یک پروژه با FSMC جدا درست میکنم کامپایل میکنم جواب میدهBuild target 'Target 1'
compiling GUI_X_Touch_Analog.c...
Config\GUI_X_Touch_Analog.c(33): error: #5: cannot open source input file "GUI.h": No such file or directory
#include "GUI.h"
Config\GUI_X_Touch_Analog.c: 0 warnings, 1 error
compiling GUIConf_stm3210e_eval.c...
Config\GUIConf_stm3210e_eval.c(60): error: #5: cannot open source input file "GUI.h": No such file or directory
#include "GUI.h"
Config\GUIConf_stm3210e_eval.c: 0 warnings, 1 error
compiling LCDConf_stm3210e_eval.c...
Config\LCDConf_stm3210e_eval.c(60): error: #5: cannot open source input file "GUI.h": No such file or directory
#include "GUI.h"
Config\LCDConf_stm3210e_eval.c: 0 warnings, 1 error
compiling stm3210e_eval_lcd.c...
Config\stm3210e_eval_lcd.c(1390): error: #20: identifier "GPIO_InitTypeDef" is undefined
GPIO_InitTypeDef GPIO_InitStructure;
Config\stm3210e_eval_lcd.c(1393): warning: #223-D: function "RCC_AHBPeriphClockCmd" declared implicitly
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
Config\stm3210e_eval_lcd.c(1393): error: #20: identifier "RCC_AHBPeriph_FSMC" is undefined
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
Config\stm3210e_eval_lcd.c(1395): warning: #223-D: function "RCC_APB2PeriphClockCmd" declared implicitly
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
Config\stm3210e_eval_lcd.c(1395): error: #20: identifier "RCC_APB2Periph_GPIOD" is undefined
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
Config\stm3210e_eval_lcd.c(1395): error: #20: identifier "RCC_APB2Periph_GPIOE" is undefined
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
Config\stm3210e_eval_lcd.c(1396): error: #20: identifier "RCC_APB2Periph_GPIOF" is undefined
RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
Config\stm3210e_eval_lcd.c(1396): error: #20: identifier "RCC_APB2Periph_GPIOG" is undefined
RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
Config\stm3210e_eval_lcd.c(1397): error: #20: identifier "RCC_APB2Periph_AFIO" is undefined
RCC_APB2Periph_AFIO, ENABLE);
Config\stm3210e_eval_lcd.c(1402): error: #20: identifier "GPIO_Pin_0" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
Config\stm3210e_eval_lcd.c(1402): error: #20: identifier "GPIO_Pin_1" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
Config\stm3210e_eval_lcd.c(1402): error: #20: identifier "GPIO_Pin_4" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
Config\stm3210e_eval_lcd.c(1402): error: #20: identifier "GPIO_Pin_5" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
Config\stm3210e_eval_lcd.c(1403): error: #20: identifier "GPIO_Pin_8" is undefined
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1403): error: #20: identifier "GPIO_Pin_9" is undefined
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1403): error: #20: identifier "GPIO_Pin_10" is undefined
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1403): error: #20: identifier "GPIO_Pin_14" is undefined
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1404): error: #20: identifier "GPIO_Pin_15" is undefined
GPIO_Pin_15;
Config\stm3210e_eval_lcd.c(1405): error: #20: identifier "GPIO_Speed_50MHz" is undefined
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
Config\stm3210e_eval_lcd.c(1406): error: #20: identifier "GPIO_Mode_AF_PP" is undefined
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
Config\stm3210e_eval_lcd.c(1407): warning: #223-D: function "GPIO_Init" declared implicitly
GPIO_Init(GPIOD, &GPIO_InitStructure);
Config\stm3210e_eval_lcd.c(1411): error: #20: identifier "GPIO_Pin_6" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
Config\stm3210e_eval_lcd.c(1411): error: #20: identifier "GPIO_Pin_7" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
Config\stm3210e_eval_lcd.c(1412): error: #20: identifier "GPIO_Pin_11" is undefined
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1412): error: #20: identifier "GPIO_Pin_12" is undefined
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1412): error: #20: identifier "GPIO_Pin_13" is undefined
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
Config\stm3210e_eval_lcd.c(1416): warning: #223-D: function "GPIO_WriteBit" declared implicitly
GPIO_WriteBit(GPIOE, GPIO_Pin_6, Bit_SET);
Config\stm3210e_eval_lcd.c(1416): error: #20: identifier "Bit_SET" is undefined
GPIO_WriteBit(GPIOE, GPIO_Pin_6, Bit_SET);
Config\stm3210e_eval_lcd.c(1426): error: #20: identifier "GPIO_Pin_2" is undefined
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
Config\stm3210e_eval_lcd.c(1428): error: #20: identifier "GPIO_Mode_Out_PP" is undefined
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
Config\stm3210e_eval_lcd.c(1430): error: #20: identifier "Bit_RESET" is undefined
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
Config\stm3210e_eval_lcd.c(1440): error: #20: identifier "FSMC_NORSRAMInitTypeDef" is undefined
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
Config\stm3210e_eval_lcd.c(1441): error: #20: identifier "FSMC_NORSRAMTimingInitTypeDef" is undefined
FSMC_NORSRAMTimingInitTypeDef p;
Config\stm3210e_eval_lcd.c(1452): error: #20: identifier "FSMC_AccessMode_A" is undefined
p.FSMC_AccessMode = FSMC_AccessMode_A;
Config\stm3210e_eval_lcd.c: 4 warnings, 30 errors
".\test.axf" - 33 Error(s), 4 Warning(s).
Target not created
ولی با این توابع نه فقط اررور میده
اگه بعدش بیام و دستورات توی این توابع غیر فعال کنم برنامه میره یه جای دیگه و اررور میده که اصلا ربطی به FSMC نداره
به خاطر همینه که میگم باید مربی یک پروژه درست میکرد . فایل هارو بهش اظافه میکرد.در مورد هر کتابخانه توضیح میداد
فرض کنید من حجم فلش میکرو کمی دارم و از همه امکانات نمیخوام استفاده کنم باید چکار کنم؟؟؟
من میکرو lpc با فیلم آموزشی آقای زرکوب شروع کردم و خیلی خیلی کامل از پایه آموزش داده بود.
ولی این آموزش کامل نیست .
من حتما باید حتما برد 1788 کویر بگیرم و نمونه مثال داخل سی دی باز کنم و اون قسمت هایی که مربی گفته ادیت کنم و پروگرام کنم
توی اون لینک هم همه از مثال ها استفاده کردند و توضیحات دست پا شکسته هست . از اول تا آخرش ذخیره کردم .
سلام
اول : تا اونجا که من میدونم شما اگر از hal ( که میشه فایل های ساخته شده با cubemx ) استفاده کنید دیگه حق استفاده از توابع cmsis رو ندارید و باید تمام توابع موجود رو تبدیل کنید به hal.
پس این بزرگترین مشکل شما هست زمانی که پروژه ایی رو دارید که با cmsis نوشته شده و حالا میخواید اون رو تبدیل کنید به hal. برای این کار باید تجربه کافی داشته باشید.
دوم : اگر به خطاهایی که کامپایلر بهتون داده نگاه کنید چند توع خطا میبینید.
مثلا خطای اول بهتون میگه که فایل gui.h رو پیدا نکرده.شما باید ادرس فابل های header رو به پروژه اضافه کنید.
خطای نوع دوم هم مربوط به همون نکته عدم استفاده همزمان hal و Cmsis هست.
در رابطه به استفاده از رم خارجی:
لزوما احتیاجی به رم خارجی نیست . اینکه هر دریچه چقدر کنترل درش استفاده شده و ایا از توابع گرافیکی استفاده کرده باشید نیاز شما رو به رم مشخص میکنه.
اگر از کنترل باکس های داخل خود Emwin بدون استفاده از توابع گرافیک ( مثل نمایش عکس ) استفاده کنید با رم 64 کیلو ال سی دی 7 اینچ رو راحت میشه درایو کرد.
نه از cmsis استفاده کردم و همه فایل هارو به پروژه اضافه کردم
با کتابخانه hal هم قبلا برنامه نوشتم و تمام هدرهای درایو تاچ و تنظیمات lcd با توابعی که قبلا با hal نوشتم و جواب گرفتم جایگزین کردم
ببین من قبلا فایل های .h توی پوشه inc و .c توی پوشه scr
خوب حالا اومدم این توابع مثل خودتون توی یک پوشه ریختم و توی کیل include کردم
تمام تنظیمات هم مثل پروژه شما و یا مثال های دیگه هست . یا فایل هارو پیدا نمیکنه و یا به دستورات ایراد میگیره . نمونش همون قسمتی که به gpio ها اررور میگیره
سلام
یه سوال شما الان با چه میکرویی کارمیکنید؟
ببین شما الان دارید میگید یه سری برنامه نوشتید با توابع halبرای السیدی حالا آمدین اون توابع رو جایگزین کردین
توپروژه ای که ازتوابعcmsisداره استفاده میشه
ببین این الان خودش یه تناقض داره
حالا شاید من دارم منظور شما رو بد متوجه میشم
ولی از توضیحات شما میفههم که دارین یه سری توابعی که تو کتابخانه halاستفاده کردین رو قاطی کتابخانه cmsisمیکنید؟؟؟؟؟
ویه سوال هنوز بنده متوجه نشدم شما دقیقا میخواید چه کار کنید؟
احساس میکنم شما خودتونو درگیره یه سری حواشی کار کردید
و از اصل موضوع فاصله گرفتید
همان طور که دوستمون mrmگفت قاطی کردنه تو کتابخانه مجزا از هم و استفاده این دو از هم احتیاج به تجربه بالا داره
الان شما در ابتدای کار خودتنو مشغول یه سری کارایی کردین که بیشتر داره وقتتونومیگیره و نتیجه مطلوب رو نمیگیرید
من خواهش میکنم قبل از اینکه بخواین پروژه ای رو از مخلوط کردنه توابع مختلف از هم بسازید
رو یه نمونه سورس کد تمرکز کنید و رو همون سورس کد پروژه خودتونو بسط بدین
تا باتجربه بیشتر درگیره جزئیات بشین
البته ببخشید این نظر منه قصد جسارت ندارم فقط میخوام که تومسیر درست حرکت کنید
در ابتدا خیلی اصرار نداشته باشید با جزئیات آشنا بشید یا خودتونو درگیره حاشیه ها کنید
مجددا عرض میکنم رو یه سورس کد مطمئن کار کنید تا تجربه کافی رو بدست بیارید
موفق باشید
ممنون ولی شما هم درست منظور منو متوجه نشدید . من چندین پروژه درست کردم
پروژه با cmsis درست کردم و به نتیجه نرسیدم
پروژه با hal درست کردم و به نتیجه نرسیدم
حالا توابع hal کاری نداریم.
من یه پروژه ساده با خود کیل درست کردم و کتابخانه های cmsis روی کیل نصب کردم باز اررور میده.
کلا به توابع cmsis اررور میده . مثل همون gpio ها که این اررور مال پروژه ای هست که با CMSIS نوشتم .
دقیقا هم توابع مثل مثال ها کنار گزاشتم و دقیقا مثل تنظیمات توی پروژه نظیمات کیل انجام دادم.
مشکل من اینه که نمیخوام از مثالها استفاده کنم چون از مثال ها جواب گرفتم
من میخوام یک پروژه خودم درست کنم و با میکرویی که خودم انتخاب کردم EMWIN پیاده کنم
ویرایش توسط jonbakhsh : 24-10-2017 در ساعت 10:33
سلام
درکت میکنم تو مخی بدیه
ببین تجربه من اینه ولی اگه راه بهتری پیدا کردی مدیونی نگی چون من کلی کلنجار رفتم تا فهمیدم
برو ی ویندوز بساز و multipage رو توش درست کن و ذخیره کن
بعد بیارش تو کیل بازش کن و تبدیل کن به فایل .h
حالا دوباره برو یک framewin یا ویندوز درست کن و کل ویجت هایی که میخوای تو یکی از صفحات مولتی پیج باشه رو توش قرار بده و سیو کن
بعد بیارش تو کیل و بازش کن به .h تبدیل کن
حالا هر دوتا فایل c که ساختی رو تو پروژه ات ادد کن
یبار کامپایل کن میبینی که کلی بهت ارور میده
حالا برو این کارارو انجام بده
تو فایل دومت که ویجت های یک صفحه رو قرار دادی اون پایینش ی همچین کدی میبینی
WM_HWIN CreateHome(void);
WM_HWIN CreateHome(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreatetest, GUI_COUNTOF(_aDialogCreatetest), _cbDialogtest, WM_HBKWIN, 0, 0);
return hWin;
}
شما همه این کد رو یا پاک کن یا بهتره کامنتش کنی که تو برنامه تاثیر نذاره
ولی قبل از پاک کردن این قسمتش رو کپی کن پایین بهت میگم کجا قرار بدی
GUI_CreateDialogBox(_aDialogCreatetest, GUI_COUNTOF(_aDialogCreatetest), _cbDialogtest, WM_HBKWIN, 0, 0);
بعد برو تو فایل اول که برای multipage درست کردی
این قسمت رو پیدا کن و کدهاش رو شبیه به این کن
hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIPAGE_0);
hDialog = GUI_CreateDialogBox(_aDialogCreatetest, GUI_COUNTOF(_aDialogCreatetest), _cbDialogtest, WM_HBKWIN, 0, 0);
MULTIPAGE_AddEmptyPage(hItem , hDialog , "test");
اون قرمزه همونیه که گفتم کپی کن
بعد تو اول همین فایل باید فایل دوم رو اضافه کنی مثلا اگه اسمت فایلش test.h هست بنویس #include "test.h"
نکته
توی هر ویندوز جدیدی که برای ویجت هات اضافه میکنی _aDialogCreatetest و _cbDialogtest رو اسمش رو یکم تغییر بدی مثلا من test رو بهش اضاقه کردم
سلام.چرا تو مثال wm_sample.c یکی از case ها break نداره؟مگر غیر از اینه که تو case گیر میکنه؟(case MSG_CHANGE_TEXT) و حتی (default)
کد:static void _cbBkWindow(WM_MESSAGE* pMsg) { switch (pMsg->MsgId) { case MSG_CHANGE_TEXT: strcpy(_acInfoText, pMsg->Data.p); case WM_PAINT: GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("WindowManager - Sample", 160, 5); GUI_SetFont(&GUI_Font8x16); GUI_DispStringAt(_acInfoText, 5, 40); break; default: WM_DefaultProc(pMsg); } }
ویرایش توسط omid_2132 : 24-10-2017 در ساعت 11:57
سلام
دوستان عزیز چند تا نکته رو لازمه براتون توضیح بدم:
1- هدف این انجمن آموزش کیل و مشکلات مربوط به اون نیست
2- این انجمن اختصاصا برای فیلم آموزش مقدماتی emwin برای میکرو 1768 و 1788 هست(مطابق فیلم) نه برای میکرو های دیگه مثل STM
3 - هدف از این فیلم این نیست که به شما آموزش داده بشه چطور یه پروژه از صفر بسازید .پیش فرض اینه که شما حداقل تجربه کار با کیل و میکرو رو دارید.اگه ندارید باید اول اونها رو آموزش ببینید (که فیلم و آموزش اون هم انواع و اقسامش تو بازار موجود هست)
4 - انواع مثال برای راه اندازی emwin تو مثال های خود کیل هست.برای میکرو های دیگه میتونید از اونها استفاده کنید.(قبلا آدرسشو گذاشتم براتون)
5- وقتی شما یه پروژه رو کامپایل می کنید و کلی خطا بهتون میده نترسید.با کمی حوصله و خوندن خطاها،اونها رو برطرف کنید خب.نه اینکه یهو یه صفحه انجمن رو با یه پیام پر از خطا پر کنید.(یادگیری زبان انگلیسی در حداقل سطح لازمه ی کار با میکرو هست .چون شما باید بتونید دیتا شیت و سایر منابع انگلیسی زبان رو بخونید)
موفق باشید
Hardware & Software designer
Telegram:@y_r_z
دستورbreakدرساختارswitchباعث میشه وقتی دستورات داخل یه caseاجراشد فورا از ساختار switchبیرون بیاد
اگردریک caseازدستورbreakاستفاده نشود بامقدارcaseبعدی ORمیشود
برای اینکه دویا چندشرط رو تو ساختار switchباهمORکنی
اون هاروبدونه دستور breakپشت سرهم قرار میدی
پس ربطی به گیر کردن نداره