PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش emWin



صفحه ها : 1 2 3 4 [5]

H_electronics
22-11-2016, 13:16
اگر از سیستم عامل استفاده می کنید باید اینو فقط یکبار فرخوانی کنید و بعدش داخل یک تسک دیگه تابع لوپ emwin فراخوانی کنی

سلام
میشه بگی چطور تو تسک دیگه ای تابع لوپ رو درست کنم .یه نمونه کد میزارین ببینیم ؟ممنون

mehdia1968
22-11-2016, 23:25
سلام
میشه بگی چطور تو تسک دیگه ای تابع لوپ رو درست کنم .یه نمونه کد میزارین ببینیم ؟ممنون
اینجوری:



/************************************************** *******************/
void M_GUI_Task(void)
{
while(1)
{
GUI_Exec();
WM_Exec();
GUI_X_Delay(1);
}
}
/************************************************** *******************/


یه مشکل داشتم:
برای رسم گراف همه توابع درست کار میکنه ولی موقعی که میخوام با تابع GRAPH_DATA_YT_SetOffY یه مقدار آفست برای بردار Y درست کنم ، برنامه هنگ میکنه!!!!(به محض اجرای تابعی که یک FRAMEWIN میسازه و داخلش گراف رو رسم میکنه)
حتی وقتی مقدار آفست رو صفر میذارم.


درست شد...

mory191191
23-11-2016, 14:13
داخل فایل سی که برنامه gui biulder برات می سازه یه تابع هست به اسم CreateWindow
شما باید این تابع رو فراخوانی کنی .
اگر از سیستم عامل استفاده می کنید باید اینو فقط یکبار فرخوانی کنید و بعدش داخل یک تسک دیگه تابع لوپ emwin فراخوانی کنی
اگر هم از سیستم عامل استفاده نمیکنی تابع داخل CreateWindow رو به
GUI_ExecDialogBox
تغییر بده تا صفحه ساخته بشه.
البته اگر تمام تنظیماتت درست باشه
سلام ممنون که راهنمایی میکنی
من داخل dvd برد 1788 داخل این پوشه میشم و از این استفاده میکنم چون تنظیماتش برای lcd7 هست که دارم
البته وقتی بویلد میکنم دموی emwin شروع به نمایش میکنه
اینم پوشه های داخل start
9383
خب در اینجا من از guibuilder داخل پوشه tools استفاده میکنم
باز میکنم یه windows به اندازه 800x480 و فقط بک گراند رو یه رنگی انتخاب میکنم
یعنی یه کار ساده میکنم تا فقط ببینم ایا نشون میده یا نه
البته شبیه سازی با vs2008 رو انجام میدم یعنی یه تابع مین تسک تعریف میکنم و فراخونیش میکنم و نشون میده در شبیه سازی
خب حالا نرم افزار کیل رو باز میکنم پروژه nxp-emwin516 رو باز میکنم وقتی بدون دستکاری بولید می کنی کد بدون خطا تولید میشه و شروع به نمایش دمو میکنه
حالا من طبق توضیحاتی که خوندم تمام فایل های داخل application رو پاک میکنم و فایلی رو که با guibuider ساختم داخلش اد میکنم
اول کدش به این صورته
9384
و بعد این تغیرو که شما گفتی میدم
9385
اما ارور میده
9386
دلیل این که ازین پوشه استفاده میکنم اینه که تنظیماتش برای lcd و سخت افزار درسته
لطفا راهنمایی کنید که چه کنم

mehdia1968
25-11-2016, 12:12
چطور میشه یک CHECKBOX رو به صورت غیرفعال (با تیک یا بدون تیک به صورت کم رنگ) نشون داد؟:unh:

mehdia1968
05-12-2016, 20:11
هیچکس نبود جواب ما رو بده؟!؟!

درکنار emWin و RTOS میشه از USB Mass Storage استفاده کرد؟
اگه نمونه کد نمیذارین لااقل بگین شدنیه و کسی تونسته که منم وقت بذارم ، یا نمیشه؟!

من اضافه کردم و usb کانفیگ میشه و حتی FAT_Init هم جواب ok برمیگردونه
ولی برای باز کردن و نوشتن فایل و بستنش ، بگیر نگیر داره . بعضی موقع ها درست انجام میشه ولی خیلی وقتا یا فایل ساخته نمیشه، یا ساخته میشه داخلش خالیه و خوده فایل هم مشکل داره برای بازشدنش توکامپیوتر و نمیشه از فلش مموری با کامپیوتر پاکش کرد و باید فلش رو format کنم تا پاک بشه.
از sample خوده cmsis استفاده کردم.

javad1364
07-12-2016, 18:53
سلام خدمت دوستان
من با emwin یه برنامه نوشتم (با دستورات GUI) بعدش اومدم یه صفحه با gui builder یه صفحه ساختم .مشکل اینجاست که بعد از این که صفحه نمایش داده میشه اطلاعات قیلی پشت صفحه قرار میگیره چطوری میتونم این اطلاعات رو به جلوی صفحه بیارم و روی صفحه ای که ساختم نشون بدم . اطلاعات هم مقدار adc هستش .ممنون میشم کسی راهنمایی کنه.

mehdia1968
09-12-2016, 20:53
هیچکس نبود جواب ما رو بده؟!؟!

درکنار emWin و RTOS میشه از USB Mass Storage استفاده کرد؟
اگه نمونه کد نمیذارین لااقل بگین شدنیه و کسی تونسته که منم وقت بذارم ، یا نمیشه؟!

من اضافه کردم و usb کانفیگ میشه و حتی FAT_Init هم جواب ok برمیگردونه
ولی برای باز کردن و نوشتن فایل و بستنش ، بگیر نگیر داره . بعضی موقع ها درست انجام میشه ولی خیلی وقتا یا فایل ساخته نمیشه، یا ساخته میشه داخلش خالیه و خوده فایل هم مشکل داره برای بازشدنش توکامپیوتر و نمیشه از فلش مموری با کامپیوتر پاکش کرد و باید فلش رو format کنم تا پاک بشه.
از sample خوده cmsis استفاده کردم.

من موفق شدم از دو روش USB Host Mass Storage رو راه بندازم و توابع FAT رو اجرا کنم براش( هم توابع
FAT_Init و... در مثال (UsbHost_M_Storage) از CMSIS
، هم پورت کردن توابع FAT ChaN)
:0013:
الان مشکلم تشخیص قطع و وصل شدنه USB . با سرچ هایی که زدم یسری نیازمندیه سخت افزاری (پول آپ خط های D+ و ...) برای تشخیص توسط درایور USB Host Controller لازمه که زیاد متوجه نشدم:unh:
با مشکلاتی که بورد کویر داره ، آیا این الزامات رعایت شده؟ یا نیازمند تغییره؟
با دیباگ فهمیدم موقع قطع و وصل USB ، اصلا وارد اینتراپت USB نمیشه.

mehdia1968
09-12-2016, 20:59
سلام خدمت دوستان
من با emwin یه برنامه نوشتم (با دستورات GUI) بعدش اومدم یه صفحه با gui builder یه صفحه ساختم .مشکل اینجاست که بعد از این که صفحه نمایش داده میشه اطلاعات قیلی پشت صفحه قرار میگیره چطوری میتونم این اطلاعات رو به جلوی صفحه بیارم و روی صفحه ای که ساختم نشون بدم . اطلاعات هم مقدار adc هستش .ممنون میشم کسی راهنمایی کنه.

اگه با GUI Builder یه window درست کردی ، باید اطلاعاتی که میخای نشون بدی هم داخل تابع ساختن (GUI_CreateDialogBox) همون window ، با ویدجت های TEXT و... بنویسی.
کد رو بذاری راحت تر میشه راهنمایی کرد.

jeyjey63
14-12-2016, 11:42
سلام دوستان
نسخه emwin 5.32 به بالا کسی سراغ داره؟
یه ویجت جدید اضافه شده به کارم میادش: swipelist

alireza77
17-12-2016, 00:29
سلام دوستان
ممنون میشم اگه کسی اطلاعی لینکی کدی کمکی از نحوه پرت کردن emwin به lcd گرافیکی با کنترلر ks0108 داره اینجا قرار بده با تشکر

milani1391
25-12-2016, 14:32
سلام
خسته نباشید
من میخاهم emwin را روی هدر برد lpc1768 پورت کنم....ال سی دی 3.2 واید و 4.3 با ای سی دراویور گرفتم....
دوستان یه برنامه ساده برای شروع اولیه میزارید؟؟؟
میشه راهنمایی کنید از کجا شروع کنم؟؟
اول تاپیک را خوندم خیلی مطالب پراکنده هست متاسفانه...

هانی
31-12-2016, 18:18
سلام خدمت اساتید ،کتابخانه های emwin برای میکرو stm32f407 رو از کجا میشه دانلود کرد؟

M.ABDOLLAHI
31-12-2016, 20:48
سلام خدمت اساتید ،کتابخانه های emwin برای میکرو stm32f407 رو از کجا میشه دانلود کرد؟
علیکم السلام ببین شما میتونی از این لینک (You can see links before reply) بری و این سیستم عامل را برای سری st دانلود کنی ولی این را بگم مثالهایی که گذاشته برای بردهای تولید خودشه شما باید برای سخت افزار خودت تغییرش بدی بعدش هم شما اگر میخوای emwin با ال سی دی بزرگ کار کنی باید یک میکرو انتخاب کنی که راه انداز ال سی دی داشته باشه مثل stm32f429zgt6 که تو ایران هم هست خلاصه بگم دردسر داره من خودم شاید بزودی به امید خدا برم تو نخش

milani1391
01-01-2017, 21:42
سلام
من مثال هاییی برای emwin با 1768 دانلود کردم ولی برای ال سی دی با کنترلر 1289 هست
در حالی که ال سی من دارای کنترلرhx8352 میباشد....چه جوریمثال emwin را برای این مدل ال سی دی اجرا کنم؟؟؟
البته لازم به ذکر هست که با ال سی دی واید با کنترلر 8352 با میکروی 1768 راه اندازی کرم و سخت افزار درسته..

- - - Updated - - -

دوستان برای شروع اولیه چیکار باید کرد..
من فایل pdf 1300 صفحه ای در مورد emwin را گذرا مرور کردم... ولی متاسفانه چیزی سر در نیاوردم...
خواهشا راهنمایی کنید...
یه مثال ساده برای شروع اولیه

rohol
04-01-2017, 14:02
با سلام و خسته نباشید.
من برد LPC1788-EWB-REV4.0 رو به همراه دی وی دی اون گرفتم... اکثر سمپل هایی که کار کردم توو کیل 5.22 کامپایل میشه،
ولی مثال های emwin ارور میده -> .\ Error: L6405E: No .ANY selector matches GUI__ManageCache.o(.bss) ... برای 5.22 Legacy اون رو هم دانلود و نصب کردم.... ولی توو ورژن 4 سمپل های emwin رو اروری نمیگیره ... ممنون میشم راهنمایی کنین.

farhangz
10-01-2017, 22:47
سلام
براي برد آموزشي lpc1788 كه كل اين تاپيك راجع به اين برد مي باشد، چرا يك برنامه راه اندازي ماوس ارايه نشده است؟
از بزرگواران كسي موفق به راه اندازي ماوس با اين برد شده؟ اصلا ماوس به كدام پورت بايد متصل بشه؟ تعجب مي كنم ماوس با اين همه كاربرد چرا يك برنامه قابل اجرا با اين برد همراه سي دي به خريدار ارايه نمي شود؟

alisolton
11-01-2017, 09:45
سلام وقت بخیر
دوستان یک سوال داشتم ... چرا button ایجاد شده فقط در حالت click اجرا میشه ولی در حالت release هیچ واکنشی نشون نمیده؟

rodsarabi
25-01-2017, 17:11
سلام
روش لينك كردن lcd tft 7 inch با stm32f103 چطوريه.

taktrashe
31-01-2017, 11:11
سلام وقت بخیر
دوستان یک سوال داشتم ... چرا button ایجاد شده فقط در حالت click اجرا میشه ولی در حالت release هیچ واکنشی نشون نمیده؟

وقت بخیر
با توجه به تجربه شخصی ! وقتی از تاچ استفاده میکنیم button ها نسبت به کلیک واکنش دارن . در صورتی که از جوستیک استافاده بشه میتوان از release استفاده کرد .

taktrashe
31-01-2017, 11:22
سلام
روش لينك كردن lcd tft 7 inch با stm32f103 چطوريه.

وقت بخیر

برای راه اندازی 7 اینج با سری های stm32f103 تمامی مراحل ارئه شده در این تاپیک که نتیجه زحمات استاد منصوری و دیگر دوستان است ، قابل اراست ولی در قسمت تنظیمات سخت افزار بایستی درایو سخت افزار مربوط به چیپ مورد کاربد بایستی بکار گرفته شود ! مثلا اگر stm32f103 ما از fsmc پشتیبانی میکند بایستی دستورات راه اندازی آن بر اساس سخت افزار نصب شده کنتروللر گرافیک راه اندازی شود . اگر از fsmc پشتیبانی نمیکند مثل stm32f103RBT بایستی دستورات به pin ها برای راه اندازی آن استفاده شود .

taktrashe
31-01-2017, 11:28
وقت بخیر

با توجه به تجربه شخص ! در پنجره های ساخته شده توسط GUI_Bulder ، بعضی ها با لمس تاچ قفل میشدن ولی بعضی ها کاملا درست عمل میکرند ! علت اصلی آن برایم مشخص نشده ولی با اضافه کردن دستور


GUI_UC_EnableBIDI(1); /* Enable bidirectional text */


در شروع برنامه، این اشکال مرتفع می گردید ..

rodsarabi
03-02-2017, 19:16
سلام دوستان
من با این برد که از کویر گرفتم کار میکنم.
برد کاربردی STM32F103VET6 ساپورت السیدی 3.6 تا 9.0 اینچبرای پورت کردن tft 7 inch + ssd1963+emwin یک مثال ساده میخوام.
من تنظیمات emwin رو مو به مو انجام دادم ولی جواب نگرفتم.
ممنون.

taktrashe
03-02-2017, 20:01
سلام دوستان
من با این برد که از کویر گرفتم کار میکنم.
برد کاربردی STM32F103VET6 ساپورت السیدی 3.6 تا 9.0 اینچ

برای پورت کردن tft 7 inch + ssd1963+emwin یک مثال ساده میخوام.
من تنظیمات emwin رو مو به مو انجام دادم ولی جواب نگرفتم.
ممنون.

راهنمایی که میتونم با توجه به تجربه خودم داشته باشم این هست که : برنامه آماده شده خودتون رو در کمیایلر به حالت سیمولایشن ببرید و خط فعلی اجرایی رو به فانکشن GUI_Init منتقل کنید و روی پنجره disassmbly کلیک کنید ! و F11 رو هر بار بزنید دستورات اسمبلی این فانکشن امرا میشه ! میتونید دنبال کنید که تا کجای برنامه های initioialise ال سی دی پیش میره !! ممکنه جایی پرش نامناسب داشته باشید و در روتین ها اونو اصلاح کنید . وقتی رسید به انیشیالیز الی سی ، ال سی دی واکنش نشون میده و تقریبا 99 درصد کار انجام شده .

rodsarabi
04-02-2017, 10:46
ممنون.ولی وقتی به gui_init میرسه متوقف میشه.
اینم فایل پروژه.
ممنون میشم کمکم کنید.
من از لایبری STemWin528_CM3_Keil.lib استفاده میکنم.
اینم lcd conf
/************************************************** *******************
* Portions COPYRIGHT 2015 STMicroelectronics *
* Portions SEGGER Microcontroller GmbH & Co. KG *
* Solutions for real time microcontroller applications *
************************************************** ********************
* *
* (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
* *
* Internet: SEGGER - The Embedded Experts (You can see links before reply) Support: support@segger.com *
* *
************************************************** ********************


** emWin V5.28 - Graphical user interface for embedded applications **
All Intellectual Property rights in the Software belongs to SEGGER.
emWin is protected by international copyright laws. Knowledge of the
source code may not be used to write a similar product. This file may
only be used in accordance with the following terms:


The software has been licensed to STMicroelectronics International
N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
troller products commercialized by Licensee only, sublicensed and dis_
tributed under the terms and conditions of the End User License Agree_
ment supplied by STMicroelectronics International N.V.
Full source code is available at: SEGGER - The Embedded Experts (You can see links before reply)


We appreciate your understanding and fairness.
----------------------------------------------------------------------
File : LCDConf_FlexColor_Template.c
Purpose : Display controller configuration (single layer)
---------------------------END-OF-HEADER------------------------------
*/


/**
************************************************** ****************************
* @attention
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* You can see links before reply
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
************************************************** ****************************
*/


#include "GUI.h"
#include "GUIDRV_FlexColor.h"


#include "stm32f10x.h"


/************************************************** *******************
*
* Layer configuration (to be modified)
*
************************************************** ********************
*/


//
// Physical display size
//
#define XSIZE_PHYS 800 // To be adapted to x-screen size
#define YSIZE_PHYS 480 // To be adapted to y-screen size


/************************************************** *******************
*
* Configuration checking
*
************************************************** ********************
*/
#ifndef VXSIZE_PHYS
#define VXSIZE_PHYS XSIZE_PHYS
#endif
#ifndef VYSIZE_PHYS
#define VYSIZE_PHYS YSIZE_PHYS
#endif
#ifndef XSIZE_PHYS
#error Physical X size of display is not defined!
#endif
#ifndef YSIZE_PHYS
#error Physical Y size of display is not defined!
#endif
#ifndef GUICC_565
#error Color conversion not defined!
#endif
#ifndef GUIDRV_FLEXCOLOR
#error No display driver defined!
#endif


/************************************************** *******************
*
* Local functions
*
************************************************** ********************
*/

//#define LCD_REG_16 *(vu16*)((u32)0x60000000)
//#define LCD_DATA_16 *(vu16*)((u32)0x60020000)


#define LCD_BASE ((uint32_t)(0x60000000 | 0x0C000000))
#define LCD_REG_16 (*(volatile U16*)LCD_BASE)
#define LCD_DATA_16 (*(volatile U16*)(LCD_BASE + 2))
/************************************************** ******************
*
* LcdWriteReg
*
* Function description:
* Sets display register
*/
static void LcdWriteReg(U16 Data) {
// ... TBD by user
LCD_REG_16 = Data;
//LCD_WR_REG(Data);
}


/************************************************** ******************
*
* LcdWriteData
*
* Function description:
* Writes a value to a display register
*/
static void LcdWriteData(U16 Data) {
// ... TBD by user
LCD_DATA_16 = Data;
//LCD_WR_Data(Data);
}


/************************************************** ******************
*
* LcdWriteDataMultiple
*
* Function description:
* Writes multiple values to a display register.
*/
static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
LCD_DATA_16 = *pData;
// LCD_WR_Data(*pData);
pData++;
//NumItems--;
}
}


/************************************************** ******************
*
* LcdReadDataMultiple
*
* Function description:
* Reads multiple values from a display register.
*/
static void LcdReadDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
*pData = LCD_DATA_16;
//LCD_WR_Data(*pData);
pData++;
}
}


static void _Init(void) {
LCD_Init();
//
// Start joystick timer
//
//OS_CREATETIMER(&_JoystickTimer, _ExecJoystick, JOYSTICK_TIMER_INTERVAL);
}






/************************************************** *******************
*
* Public functions
*
************************************************** ********************
*/
/************************************************** *******************
*
* LCD_X_Config
*
* Function description:
* Called during the initialization process in order to set up the
* display driver configuration.
*
*/
void LCD_X_Config(void) {
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
//
// Set display driver and color conversion
//
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
//pDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
//
// Display driver configuration, required for Lin-driver
//
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
//
// Orientation
//
// Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
//Config.NumDummyReads = 2;
Config.RegEntryMode=0x6070;
GUIDRV_FlexColor_Config(pDevice, &Config);
//
// Set controller and operation mode
GUIDRV_FlexColor_SetReadFunc66720_B16(pDevice, GUIDRV_FLEXCOLOR_READ_FUNC_II);
//
PortAPI.pfWrite16_A0 = LcdWriteReg;
PortAPI.pfWrite16_A1 = LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66720, GUIDRV_FLEXCOLOR_M16C1B16);
}


/************************************************** *******************
*
* LCD_X_DisplayDriver
*
* Function description:
* This function is called by the display driver for several purposes.
* To support the according task the routine needs to be adapted to
* the display controller. Please note that the commands marked with
* 'optional' are not cogently required and should only be adapted if
* the display controller supports these features.
*
* Parameter:
* LayerIndex - Index of layer to be configured
* Cmd - Please refer to the details in the switch statement below
* pData - Pointer to a LCD_X_DATA structure
*
* Return Value:
* < -1 - Error
* -1 - Command not handled
* 0 - Ok
*/
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
int r;
(void) LayerIndex;
(void) pData;

switch (Cmd) {
case LCD_X_INITCONTROLLER: {
//
// Called during the initialization process in order to set up the
// display controller and put it into operation. If the display
// controller is not initialized by any external routine this needs
// to be adapted by the customer...
//
// ...
_Init();
return 0;
}
default:
r = -1;
}
return r;
}


/*************************** End of file ****************************/

taktrashe
05-02-2017, 17:36
من از لایبری STemWin528_CM3_Keil.lib استفاده میکنم.

پیشنهاد میکنم از emWin_M3.lib که توی همین تاپیک هم استفداده شده رو ، استفاده کنید !! منم نتونستم از Stemwin استفاده کنم !! بنظر میاد فقط با استارتر کیت یا بردهای خود ST کار میکنند !! و برای شروع GUI_Init دنبال سخت افزار خاصی توی آدرس خاصی میگردن در صورت پیدا نشدن متوقف میشن .

rodsarabi
07-02-2017, 12:18
سلام دوستان emwin تا چه حد رایگانه.حداقل میشه اونو به عنوان دمو راه اندازی کرد.البته تو بردهای دست ساز.

rodsarabi
07-02-2017, 12:24
من برای راه اندازی gui روی tft چه مسیرهای دیگه ای رو میتونم پیش بگیرم.البته اگه مسایل مالی داشته باشه بازم میخوام بدونم که حداقل یک برنامه ریزی برای آینده داشته باشم.
ممنون میشم از دوستانی که تو این زمینه اطلاعاتی دارند منو راهنمایی کنند.
با تشکر :رودسرابی

taktrashe
08-02-2017, 00:43
من برای راه اندازی gui روی tft چه مسیرهای دیگه ای رو میتونم پیش بگیرم.البته اگه مسایل مالی داشته باشه بازم میخوام بدونم که حداقل یک برنامه ریزی برای آینده داشته باشم.
ممنون میشم از دوستانی که تو این زمینه اطلاعاتی دارند منو راهنمایی کنند.
با تشکر :رودسرابی

وقت بخیر

پیشنهاد میکنم برای تشکر از آیکون تشکر !! استفاده کنید !! مطمئن باشید رایگانه و براتون هزینه نداره !! این حداقل کاری هست که میتونید برای پاسخ به سوال هاتون انجام بدبد !!
و اما برای راه اندازی gui بهتره همین تاپیک رو از ابتدا بخونید !! ممکنه چندین روز وقتتون رو بگیره ولی همه سوال هاتونو پاسخ میده !! هر جاشو متوجه نشدید از اول بخونید !!

masoudnar
14-02-2017, 22:25
سلام به همه،
من یک مشکل دارم ،یک روتین و یک عدد دارم که مدام میخوام روتین خوانده بشه و عدد رفرش
متاسفانه نمیدونم کجا روتین رو بنویسم که اینکارو انجام بده
از دوستان ممنونم بابت تمامی اطلاعاتی که گذاشتید.

H_electronics
15-02-2017, 10:43
سلام یه spinbox ساختم میخوام با نگه داشتن کلیک عدد افزایش یا کاهش پیدا کنه .
الان این جوریه که باید به ازای هر افزایش یه بار کلیک بشه .
چه پارامتری رو باید تغییر بدم تا اون طور که میخوام باشه ؟

p.meighany
18-02-2017, 14:03
سلام .
من برد lpc1788 کویر الکترونیک با emwin پورت شده رو خریداری کردم . برای ران کردن مثال 2DGL_DrawBMP مشکل دارم . این مثالهای خود EMWIN برای نمایش عکس تمام صفحه هست . در این مثال include<windows.h> استفاده شده که این هدر در کنار فایل موجود نیست . و در صورت نبودنش از متغیرهایی مثل HANDLE ارور میگیره . من این هدرها رو از نت پیدا کردم و به برنامه اضافه کردم ولی در هدر WINNT ارور استراکچر میگیره . کسی میتونه کمک کنه ؟ با تشکر

mrm
19-02-2017, 12:39
شما احتمالا دارید از سمپلی که برای شبیه سازی در ویژوال استودیو هست استفاده میکنید.
از مثال کیل استفاده کنید.

p.meighany
20-02-2017, 15:36
برای استفاده از این مثال باید چیکار کنم ؟

khatarat
23-02-2017, 08:42
دوستان به نظرتون این خطا برای چی هست که وقتی من توی فایل GUIConf.c مقدار GUI_NUMBYTES رو بیشتر از 7 کیلو بایت میذارم این خطاها صادر می شه.


.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching prevlcd.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_x_rte.o(.bss).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching manager.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching guidrv_flexcolor.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_task.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching wm.o(.bss).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui__managecache.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching lcd_aa.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching menu.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_conf_cm.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_timer.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_x_rte.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_onkey.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching lcd_color.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching pc.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching power.o(.bss).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_waitevent.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching 7segment.o(.bss).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gpdma_lpc17xx.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_cmsis.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_task.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching lcd_getex.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching guidrv_flexcolor_func66720.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching fs_fat_elink.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_system.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_robin.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching lpc17xx_extint.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching system_lpc17xx_1.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_time.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching lcd.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching guidev_banding.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching wm__sendmessage.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching streamlock.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching sim20.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching loadcell.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching touch.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching memory.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching 7segment.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching rfid.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching fs_mapi.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching gui_core.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching hal_cm.o(.data).
.\bascol_v4.axf: Error: L6406E: No space in execution regions with .ANY selector matching guidev_staticdevices.o(.data).
.\bascol_v4.axf: Error: L6407E: Sections of aggregate size 0x248 bytes could not fit into .ANY selector(s).


و وقتی این مقدار رو روی 7 کیلوبایت می ذارم برنامه اجرا می شه ولی توی نخ osTimerThread مشکل StackOverFlow اتفاق می افته.
کسی می دونه مشکل از کجاست؟

در ضمن من از LPC1768 و کنترلر ال سی دی ssd1963 استفاده می کنم.

mrm
23-02-2017, 12:16
این خطا برای این هست که دارید از حداکثر مقدار رم استفاده میکنید.
اگر بردتون از رم خارجی پشتیابنی میکنه اون رو فعال کنید در غیر این صورت باید
متغییر ها رو بهینه سازی کنید تا بتونید حجم بیشتری از رم رو برای emwin استفاده کنید

khatarat
23-02-2017, 14:21
emwin فقط برای اینکه راه بیافته چقدر حداقل رم نیاز داره؟
راهی هست که کاری کنیم که کمتر از رم استفاده کنه؟

mrm
24-02-2017, 00:34
حداقل مقدار رم بستگی به تعداد ویجت هایی داره که در یک صفحه مورد استفاده قرار گرفته که اونم داخل دیتاشیت میتونید پیداش کنید.
1768 64 کیلو رم داره . جایی از کد مقدار زیادی از رم رو دارید استفاده میکنید.
تعداد thread ها و مقدار استکشون , متغییر های global , سمافور و ماتکس ها
این ها چیزهایی هست که می تونید بهینه سازی روش انجام بدید

hadiabdi
24-02-2017, 20:18
سلام دوستان من Emwin روی Stm32f429 پورت کردم هرکاری میکنم تاچش راه نمیفته ایا کسی هست مشل من و بتونه حل کنه همه روشی هم رفتم کالیبره کردم ایسی درایور کار میکنه فقط نمیدونم چرا این دستور GUI_TOUCH_StoreStateEx جواب نمیده و هیچ اثری نداره رو مکان نما السیدی





State.x = p->x;
State.y = p->y;
printf("x=%lu , y=%lu\n\r",p->x,p->y);
GUI_TOUCH_StoreStateEx(&State);

khatarat
24-02-2017, 20:57
حداقل مقدار رم بستگی به تعداد ویجت هایی داره که در یک صفحه مورد استفاده قرار گرفته که اونم داخل دیتاشیت میتونید پیداش کنید.
1768 64 کیلو رم داره . جایی از کد مقدار زیادی از رم رو دارید استفاده میکنید.
تعداد thread ها و مقدار استکشون , متغییر های global , سمافور و ماتکس ها
این ها چیزهایی هست که می تونید بهینه سازی روش انجام بدید

با چیزهایی که در دیتاشیت نوشته شده با همون 7 کیلوبایت هم باید بتونه کار کنه.
الان مشکل اصلی اینه که چرا stack overflow اتفاق می افته.
هر کاری کردم مشکل رفع نشد. حتی یه برنامه از صفر نوشتم که فقط کد های EmWin توش بود که تونستم مقدار رمش رو روی 25 کیلوبایت بذارم ولی باز خطای stack overflow می ده.

p.meighany
25-02-2017, 10:56
برای نمایش عکس از روی sd card کسی هست راهنمایی کنه ؟

H_electronics
15-03-2017, 18:58
سلام
با guibuilder یک window طراحی کردم ،چه طوز میتونم بدون استفاده از کالبک WM_PAINT یک line با دستور GUI_DrawLine رسم کنم ؟؟؟؟؟؟؟

taktrashe
16-03-2017, 16:43
وقت بخیر

شما بعد از اجری ساخت پنجره و در حلقه while دستورات خودتون رو میتونید اجرا کنید !!

H_electronics
17-03-2017, 19:48
این کار رو انجام دادم ولی مشکل من بر سر جاشه ،
روی background دستورات نمایش داده میشه ، نه روی پنجرهای که من ساختم و فعال هستش .

zalzalak66
21-03-2017, 17:02
سلام دوستان عزیز

سال نو مبارک

با emwin یه صفحه کلید رو طراحی کردم حالا میخوام یک password را از کاربر بگیره و در هر جای دیگه از برنامه که لازم است password را از کاربر بخواد و اگه درست بود اجازه کار به کاربر را بده
کسی میتونه راهنماییم کنه؟

ممنون

yraeisi
31-03-2017, 16:30
سلام
این ربطی به EMWIN نداره.:unh:یه مروری باید به درس برنامه نویسی کنید.انواع متغییرها و ....:hi:

sarbaz13
01-04-2017, 02:55
سلام مهندس رئیسی
یه سوال فنی و تجربی بپرسم اینکه
این پورت کردن STEMWIN برای میکروهای STM32 رو تا حالا انجام دادین ؟
من یه سمپل کد جواب گرفته دارم از میکرو STM32F429IGT بعد اونو میخواستم پورت کنیم برای میکروی STM32F429ZGT به مشکل برخورد کردم
همه پایه های مورد نظر FSMC رو که برای پایه های sDRAM متصل به میکرو اعم از پایه های ادرس و دیتا و کامند تنظیم کردم و طرفی هم تنظیم پایه های ال سی دی که 16 بیتی طراحی کردم
از بابت طراحی برد مطمئن باشین درسته فقط موندم با اینکه من تغییرات رو ددم چرا جواب نگرفتم
تست ها یانجام شده شناخت SDRAM و نوشتن و خوندن در اون
تست تغذیه برای پایه های VLED+,VLED-
تست شناخت میکرو و تست برنامه کوچک روی میکرو
تست الکتریکال ار تمامی پایهای جهت اتصال درست
و.......
--------------------
حالا اگر شما مورد خاصی رو باید تنظیم میکردم جهت پورت کردن یا سمپل کدی دارین ممنون میشم به اشتراک بزارین

rodsarabi
01-04-2017, 20:58
با عرض سلام :
من توی تنظیمات اولیه برای راه اندازی ssd1963 .7 ench توسط stm32f103vet6 مشکل دارم .
برنامه وقتی gui_init میرسه انشیال ال سی دی انجام میشه و صفحه آبی میاد ولی توی gui_init میمونه.

yraeisi
04-04-2017, 12:14
سلام مهندس رئیسی
یه سوال فنی و تجربی بپرسم اینکه
این پورت کردن STEMWIN برای میکروهای STM32 رو تا حالا انجام دادین ؟
من یه سمپل کد جواب گرفته دارم از میکرو STM32F429IGT بعد اونو میخواستم پورت کنیم برای میکروی STM32F429ZGT به مشکل برخورد کردم
همه پایه های مورد نظر FSMC رو که برای پایه های sDRAM متصل به میکرو اعم از پایه های ادرس و دیتا و کامند تنظیم کردم و طرفی هم تنظیم پایه های ال سی دی که 16 بیتی طراحی کردم
از بابت طراحی برد مطمئن باشین درسته فقط موندم با اینکه من تغییرات رو ددم چرا جواب نگرفتم
تست ها یانجام شده شناخت SDRAM و نوشتن و خوندن در اون
تست تغذیه برای پایه های VLED+,VLED-
تست شناخت میکرو و تست برنامه کوچک روی میکرو
تست الکتریکال ار تمامی پایهای جهت اتصال درست
و.......
--------------------
حالا اگر شما مورد خاصی رو باید تنظیم میکردم جهت پورت کردن یا سمپل کدی دارین ممنون میشم به اشتراک بزارین

سلام.این دو تا میکرو از یک خانواده هستن و باید برنامه روی هردوش کار کنه.(البته اگه پایه ها رو درست کانفیگ کرده باشین).احتمال خیلی زیاد کانفیگ پورت هاتون ایراد داره

invincible
14-04-2017, 15:37
سلام خدمت اساتید عزیز

من فیلم های آموزشی emWin را تهیه کردم و برد EWB-LPC1768 هم گرفتم ولی هرچی سعی می کنم سمپل روی برد ران کنم متاسفانه LCD سفید نشون داده میشه!
چیکار باید کرد؟

پیشاپیش ممنون از راهنماییتون

hossein_elect
20-04-2017, 02:08
سلام وقت بخير
چطور ميتونم كاركتر دريافتي از پورت سريال رو روي MULTIEDIT نمايش بدم؟
من پنج فايل دارم كه يكيش فايل main.c و چهارتاي ديگشو با GUIBuilder ساختم در فايل main پورت سريال راه اندازي كردم و وقفه سريال رو هم قبل از تابع int main گذاشتم حالا چطور به محض دريافت كاركتر از پورت سريال(متن فارسي) اونو روي mulitedit نمايش بده ؟
در حال حاضر وقتي كاركتر دريافت ميكنم با زدن يك bottum اونو توي multiedit نمايش ميده

rodsarabi
07-05-2017, 13:47
دوستان.وقت بخیر.من تونستم emwin رو راه اندازی کنم .و از شما دوستان و همچنین آقای منصوری کمال تشکر را دارم.راهنمایی که میتونم به اون دوستانی که اشتیاق به راه اندازی emwin رو دارند اینه که از یک رفرنس برای این کار استفاده کنند و همون رو ادامه بدن تا به نتیجه برسند.چون برای راه اندازی روشهای مختلفی وجود داره .و نباید این روشها با هم بکار برده بشه.

Aminm
27-05-2017, 12:24
سلام جناب مهندس.
ببخشید چطور میتونم ترجمه فصل 18 emwin را مطالعه کنم

yraeisi
29-06-2017, 09:05
با سلام
دوستان یه برنامه ی دارای emwin رو از keil 4 به keil 5 منتقل کردم و دستورات مربوط به rtx رو هم مطابق cmsis rtos اصلاح کردم. برنامه کار می کنه ولی سرعت نمایش lcd خیلی پایین اومده. مثلا لود شدن یه عکس به وضوع مشخصه که تیکه تیکه لود می شه. کسی نظری داره در این رابطه که علت چی می تونه باشه؟ یا کسی به چنین مشکلی نخورده؟

سلام. بله مشکل از کیل هست.من چندین مورد برخورد کردم که درست کار نمی کنه
کلا کیل ورژن 5 مشکل زیاد داره. و اکثر برنامه هایی که با کیل 4 نوشته شدن رو ساپورت نمی کنه.rtx کلا در کیل 5 خیلی خوب کار نمی کنه و مشکل زیاد داره.توصیه من به دوستان استفاده از نسخه 4.7 هست که خیلی خوب کار میکنه و تقریبا تمام قسمت هاش بدون ایراد هست.
کیل 5 فقط در مواردی که میکروی مورد نظر در کیل 4.7 نیست ناچارا باید استفاده بشه.

mzarkoob
29-06-2017, 10:38
در صورتی که فایل های لازم در یک پروژه با RL کیل که با کیل 4 ایجاد شده باشد (فایل های lib. هم داخل آنها وجود داشته باشد) در پوشه پروژه وجود داشته باشد، با کیل 5 هم باز شده و اجرا خواهد شد.
تا کنون تنها موردی که مشاهده شد برنامه SD کارت که با کیل 4 ایجاد شده است و با کیل 5 که بروی برد ریخته شد،و لی کار نکرد برای در برد میکروکنترلر stm32f103ve بوده است!
Telegram: Contact @armeducation (You can see links before reply)


البته برای پروژه های حجیم تست نکردم ولی نتیجه تجربه ای بوده که تا الان مشاهده کردم.
البته لازم است به این نکته هم توجه داشت :

وقتی کیل 5 را (MDK-ARM) :

Keil Product Downloads (You can see links before reply)
نصب کرده باشید و بخواهید با آن پروژه ای که با کیل 4 ایجاد کرده اید باز کنید، صفحه ای باز می شود. با زدن migrate to device pack پروژه با کیل5 باز می شود و دیگر با کیل 4 باز نمی شود! با زدن install legacy support مرورگر به آدرسی هدایت می شود:

MDK v4 Legacy Support
(You can see links before reply)
که می توان پکی دانلود کرد(بسته به نوع میکرو و ورژن کیل5) که با نصب آن پروژه هایی با کیل 4 ایجاد شده باشد با کیل 5 بدون مشکل باز و کامپایل شود. و با زدن گزینه cancel پنجره ای حاوی یک خطا باز می شود : error: Device not found !

Telegram: Contact @armeducation (You can see links before reply)

roohee
01-07-2017, 11:31
سلام. بله مشکل از کیل هست.من چندین مورد برخورد کردم که درست کار نمی کنه
کلا کیل ورژن 5 مشکل زیاد داره. و اکثر برنامه هایی که با کیل 4 نوشته شدن رو ساپورت نمی کنه.rtx کلا در کیل 5 خیلی خوب کار نمی کنه و مشکل زیاد داره.توصیه من به دوستان استفاده از نسخه 4.7 هست که خیلی خوب کار میکنه و تقریبا تمام قسمت هاش بدون ایراد هست.
کیل 5 فقط در مواردی که میکروی مورد نظر در کیل 4.7 نیست ناچارا باید استفاده بشه.

سلام ممنون
من چون برای SD CARD از کتابخانه ی داخل pack کیل 5 استفاده کردم، یه مقدار سخت می شه دوباره بخوام برنامرو برگردونم به 4. البته توی همین کیل با یه سری تغیرات (اولویت thread ها و تغییراتی در کد) اوضاع بهتر شد. ضمن این که اول کار دو تا عکس معرفی رو در حالتی که سیستم عامل متوقف هست نمایش می دم، با این که می ره از sd card می خونه و بعد تو رم می ریزه و بعد نمایش می ده! سرعت نمایش خیلی خوب هست و تو ادامه بعد از راه اندازی سیستم عامل سرعت پایین میاد (که نشون می ده اونجا یه موردی هست). البته یه راه به ذهنم می رسه که وقتی صفحه ای قراره نمایش داده شه که سنگینه؛ اولویت thread مربوط به نمایش اون صفحه بیاد بالا و بعد از اتمام چاپ صفحه اولویتش برگرده سر جاش که حالا باید چک کنم چقدر جواب می ده. البته اگرم جواب بده تو همه ی پروژه ها شاید راه حل نباشه :125:

v_gh
15-07-2017, 12:10
سلام. آيا emwin اين قابليت رو داره كه بشه مثل موبايل زوي lcd زوم كرد (panning) و يا صفحه رو بالا و پايين برد (rolling) ؟ ممكنه راهنمايي كنيد پطور ميتونم اينكار رو انجام بدم؟

v_gh
15-07-2017, 12:20
بدون emWin این منو ها رو درست کردم.
You can see links before reply
You can see links before reply
You can see links before reply
You can see links before reply
You can see links before reply

البته خوب شد که با emWin آشنا شدم وگرنه داشتم روی زوم کردن عکس، چرخش عکس، ایجاد تکست باکس، لایه بندی صفحه، شفاف سازی، و حتی می خواستم روی گرافیک سه بعدی هم کار کنم و کلی هم دنبال محاسباتش رفتم.
تا حدودی هم به نتیجه رسیده بودم و داشتم شفاف سازی رو تموم میکردم.
خوب شد که emWin رو پیدا کردم و الکی وقتم رو تلف نکردم.


سلام. ممكنه بگيد چطور با emwin ميشه روي صفحه زوم كرد و يا بين صفحات جابجا ش يا صفحه رو بالا پايين برد؟؟؟

alireza11048
06-08-2017, 21:01
سلام دوستان،
اگه کسی برنامه مبدل فونت emwin نسخه کاملش رو داره لطف کنه بزاره، من دموش رو دارم و موقع تولید فونت حاشیه دور حروف درست میکنه و این غیر قابل استفادش میکنه.

dostajn
12-08-2017, 10:33
سلام
تازه در حال یادگیری
(st)emwin
هستم. الان برای نمایش متن فارسی دچار مشکل شدم:
جهت تست با دستورهای


9531 9532

یک متن ساده فارسی روی lcd چاپ کردم.همچنین یک پنجره با یک دکمه فارسی ساختم. هنگام نمایش جای نوشته فارسی خالیه!
9533
9534
کسی از دوستان راهی به نظرش میرسه؟
----
نمی دونم می تونید عکس ها رو ببینید یا نه اما یه جای دیگه هم آپلود کردم:



You can see links before reply
You can see links before reply
You can see links before reply
You can see links before reply

omid_2132
26-08-2017, 11:35
با سلام خدمت اساتید محترم.
لطفا به این سوال بنده هم در انجمن زیر پاسخ دهید.متشکرم
You can see links before reply

kmz
29-08-2017, 15:18
با سلام به اساتید عزیز من توی یه پروژه با emWin یه ListView ایجاد کردم . حالا می خوام عدد ردیف رو که روی اون های لایت شده بخونم، چطور این کار رو انجام بدم ؟؟ ممنون :hi:

kmz
29-08-2017, 23:25
سوال من قابل جواب نبود ؟؟؟؟ ii998)lov:

dostajn
30-08-2017, 10:04
سلام
منوال خود emwin می تونه کمک کنه:





LISTVIEW_GetSel()
Description
Returns the index of the currently selected row in a specified LISTVIEW widget.
Prototype
int LISTVIEW_GetSel(LISTVIEW_Handle hObj);
Return value
Index of the currently selected row.

kmz
30-08-2017, 15:15
با تشکر فراوان از dostajn (You can see links before reply) عزیز، اگه ممکنه یه مثال هم بزنید ممنون میشم :wink::hi:
من می خوام عدد بدست اومده رو با یه سری اعداد دیگه مقایسه کنم

kmz
31-08-2017, 13:17
lov:lov::sa::sa:

mohammadjt
31-08-2017, 14:24
سلام.
من یک برنامه نوشتم که یک نمودار سینوسی را با فاز رندوم با فشردن یک کلیک رسم کنه. یک کلید دیگه هم گذاشتم که شکل رو پاک کنه اما بعد از اینکه 4 بار کلیک رسم شکل رو میزنم برنامه دیگه هنگ میکنه ممنون میشم کمک کنین. در ادامه هم کدی که نوشتم رو قرار میدم.

/************************************************** *******************
* *
* SEGGER Microcontroller GmbH & Co. KG *
* Solutions for real time microcontroller applications *
* *
************************************************** ********************
* *
* C-file generated by: *
* *
* GUI_Builder for emWin version 5.22 *
* Compiled Jul 4 2013, 15:16:01 *
* (c) 2013 Segger Microcontroller GmbH & Co. KG *
* *
************************************************** ********************
* *
* Internet: SEGGER - Software Development Tools for Embedded Systems (You can see links before reply) Support: support@segger.com *
* *
************************************************** ********************
*/


// USER START (Optionally insert additional includes)
// USER END


#include <stdlib.h>
#include <string.h>
#include "math.h"
#include "TouchPanel.h"
#include "DIALOG.h"
#include "GRAPH.h"
/************************************************** *******************
*
* Defines
*
************************************************** ********************
*/
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
#define ID_GRAPH_0 (GUI_ID_USER + 0x03)
#define ID_EDIT_0 (GUI_ID_USER + 0x05)
#define ID_EDIT_1 (GUI_ID_USER + 0x06)




// USER START (Optionally insert additional defines)
// USER END


/************************************************** *******************
*
* Static data
*
************************************************** ********************
*/


static GUI_COLOR _aColor = {GUI_BLUE}; /* Array of colors for the GRAPH_DATA objects */
static I16 _aValue[1000];
static GRAPH_DATA_Handle _ahData; /* Array of handles for the GRAPH_DATA objects */
//static int _flaggraph=1;


// USER START (Optionally insert additional static data)
// USER END




static void _samplesinerand(void) {
int jj;
double vv=rand();
for (jj=0;jj<1000;jj++){
_aValue[jj]=40*sin(2*3.14*0.01*jj+vv)+100;}
// GRAPH_DATA_YT_AddValue(_ahData, _aValue);
}


/************************************************** *******************
*
* _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "testgraph3", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 106, 116, 150, 50, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 106, 280, 150, 50, 0, 0x0, 0 },
{ GRAPH_CreateIndirect, "Graph", GUI_ID_GRAPH0, 356, 37, 400, 400, 0, 0x0, 0 },
{ EDIT_CreateIndirect, "Edit", ID_EDIT_0, 84, 178, 200, 40, 0, 0x64, 0 },
{ EDIT_CreateIndirect, "Edit", ID_EDIT_1, 84, 233, 200, 40, 0, 0x64, 0 },
// USER START (Optionally insert additional widgets)
// USER END
};


/************************************************** *******************
*
* Static code
*
************************************************** ********************
*/


// USER START (Optionally insert additional static code)
// USER END


/************************************************** *******************
*
* _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
int NCode;
int Id;
int iit=0;
//I32 xx=10,*AAV;
// USER START (Optionally insert additional variables)
// USER END


switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'testgraph3'
//
hItem = pMsg->hWin;
WINDOW_SetBkColor(hItem, 0x0080FF00);
//
// Initialization of 'Button'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetText(hItem, "graph");
BUTTON_SetFont(hItem, GUI_FONT_24B_1);
//
// Initialization of 'Button'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetText(hItem, "clear");
BUTTON_SetFont(hItem, GUI_FONT_24B_1);
//
// Initialization of 'Edit'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
EDIT_SetText(hItem, "");
EDIT_SetFont(hItem, GUI_FONT_24B_1);
EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
//
// Initialization of 'Edit'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_1);
EDIT_SetText(hItem, "123");
EDIT_SetFont(hItem, GUI_FONT_24B_1);
EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);


hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_GRAPH0);
/* Add graphs */
GRAPH_SetColor(hItem,GUI_WHITE,GRAPH_CI_BK);
//GRAPH_SetVSizeX(hItem, 1000);
// USER START (Optionally insert additional code for further widget initialization)
// USER END
if (iit==0){
_samplesinerand();
iit=2;}


//AAV=&xx;
//&xx=AAV;

break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_0: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_GRAPH0);


_samplesinerand();
_ahData = GRAPH_DATA_YT_Create(_aColor, 1000, _aValue, 1000);
GRAPH_AttachData(hItem,_ahData);


hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
//EDIT_SetText(hItem, "");
//AAV=&_aValue[0];
//EDIT_SetHexMode(hItem, AAV, 0, 10000000);
EDIT_SetFloatMode(hItem, _aValue[0], 0, 100, 0, GUI_EDIT_NORMAL);



// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_BUTTON_1: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:

hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_GRAPH0);
GRAPH_DetachData(hItem,_ahData);
_ahData=0;


// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_EDIT_0: // Notifications sent by 'Edit'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_VALUE_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_EDIT_1: // Notifications sent by 'Edit'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
case WM_NOTIFICATION_VALUE_CHANGED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
// USER START (Optionally insert additional code for further Ids)
// USER END
}
break;
// USER START (Optionally insert additional message handling)
// USER END
default:
WM_DefaultProc(pMsg);
break;
}
}


/************************************************** *******************
*
* Public code
*
************************************************** ********************
*/
/************************************************** *******************
*
* Createtestgraph3
*/
void MainTask(void) {
WM_HWIN hDlg, hGraph = 0;
int tt=0;
Touch_Calibrate();


// GUI_Init();
GUI_CURSOR_Show();
//WM_SetDesktopColor(GUI_BLACK);
//#if GUI_SUPPORT_MEMDEV
// WM_SetCreateFlags(WM_CF_MEMDEV);
//#endif
hDlg = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
// GUI_Delay(1);
while (1) {
// tt++;
// if ((tt%10)==0)
// { tt=0;


//else
//{
//GRAPH_DATA_YT_Clear(hGraph);
//}
//}

// hGraph = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0);
// _AddValues(hGraph);


GUI_Delay(10);
//GUI_Exec();
//WM_Exec();


}
}




/*************************** End of file ****************************/

kmz
31-08-2017, 15:03
سلام دوست عزیز احتمالا توی برنامه از rtx استفاده کردید، من هم قبلا با این مشکل برخورد کردم فکر می کنم مشکل توی مدیریت تسک ها باشه
برنامه شما بدون rtx مشکلی نداره، من کلید گراف روی برنامه شما رو چندین بار زدم و مشکلی پیش نیومد9549

mohammadjt
31-08-2017, 19:44
سلام دوست عزیز احتمالا توی برنامه از rtx استفاده کردید، من هم قبلا با این مشکل برخورد کردم فکر می کنم مشکل توی مدیریت تسک ها باشه
برنامه شما بدون rtx مشکلی نداره، من کلید گراف روی برنامه شما رو چندین بار زدم و مشکلی پیش نیومد9549

سلام. ممنون. شما رو میکرو تست کردین یا visual studio؟ این فایل پیوست کار نمیکنه ممنون میشم دوباره بزارین

kmz
31-08-2017, 21:03
سلام. ممنون. شما رو میکرو تست کردین یا visual studio؟ این فایل پیوست کار نمیکنه ممنون میشم دوباره بزارین

سلام :wink: روی میکرو

dostajn
03-09-2017, 20:08
سلام
شرمنده دیر سر زدم:
بنده هم وارد نیستم اما کلیت کار رو بهتون می گم:
ببینیدشما برای ایجاد یه لیست نمایشی یه handle براش تعریف می کنید:



static LISTVIEW_Handle _hListView;

این متغییر سراسری تعریف میشه.
شما هرجا لازم دارین با فراخوانی این متغییر به مقصودتون می رسین:
مثلا ایجاد لیست:


_hListView = LISTVIEW_Create(10, 80, 300, 89, 0, 1234, WM_CF_SHOW, 0);




پاکش کنین:


WM_DeleteWindow(_hListView);




ستون اضافه کنین:


LISTVIEW_AddColumn(_hListView, 100, "EAN", GUI_TA_CENTER);




برای برنامه شما هم همینچوری میشه



int index;
index=LISTVIEW_GetSel(_hListView);




الان با این دستور شما ردیف جاری رو دریافت می کنین
منبع هم برای بنده این ها هستن:مثال های ارائه شده از طرف خود emwin:


You can see links before reply


ته صفحه بالا دو تا فایل هست یکی فایل سی مربوط به مثال ها یکی هم کامپایل شده مثال ها که می تونید مثال ها رو روی ویندوز هم ببینید(خیلی عالیه...)



You can see links before reply
You can see links before reply

ashkanpourali
10-09-2017, 11:40
سلام. من کار با emwin تازه میخام شروع کنم می خاستم ببینم
emWin 5.18 board support package for EA1788 Board (You can see links before reply) میتونه lcd- 24bit رو درایو کنه. ممنون میشم راهنماییم کنین

mducati999
10-09-2017, 12:00
سلام وقت بخير
چطور ميتونم كاركتر دريافتي از پورت سريال رو روي MULTIEDIT نمايش بدم؟
من پنج فايل دارم كه يكيش فايل main.c و چهارتاي ديگشو با GUIBuilder ساختم در فايل main پورت سريال راه اندازي كردم و وقفه سريال رو هم قبل از تابع int main گذاشتم حالا چطور به محض دريافت كاركتر از پورت سريال(متن فارسي) اونو روي mulitedit نمايش بده ؟
در حال حاضر وقتي كاركتر دريافت ميكنم با زدن يك bottum اونو توي multiedit نمايش ميده

سلام خدمت دوستان مخصوصا آقای رئیسی
بنده نیز مشکل همین دوستمون رو دارم
درواقع یه متغییری دارم که تو تابع اینتراپت پلاس میشه حال چه طور باید متغییر به صورت اتوماتیک رو کادر editeآپدیت بشه
درحال حاضر حتما باید یه دکمه داخل صفحه رو لمس کنم تا از اون طریق بتونم مقدار جدید متغییر رو تو کادر مورد نظر نمایش بدم
گرافیک هم توسط guibuilderساخته شده
گویا کد سی تولید شده توسط این نرم افزار توسط switch,caseنوشته شده و برای آپدیت صفحه یا اصلا هرکاری را که بخوایم رو صفحه اتفاق بیافته حتما باید صفحه لمس بشه
اگه اینطور باشه چطور میشه به کمک emwinیه ساعت ساخت در اینصورت حتما باید صفحه رو لمس کنیم تا مقدار ساعت رو صفحه آپدیت بشه cry::cry::
ممنون میشم راهنمایی بفرماییدو از دوستان

mrm
10-09-2017, 12:08
سلام برای این کار شما باید با استفاده از تابع sendmessage داده مورد نظر رو بفرستید به دریچه ایی که در حال حاضر فعال هست.این طوری emwin
این پیغام رو میگیره و پیغام رو میفرسته برای دریچه.حالا شما داخل loop دریچه ، پیغام رو میگیرید و کاراکتر رو روی Editbox نمایش میدید.
این کار رو برای usart , RTC و غیره میشه انجام داد.

mducati999
10-09-2017, 13:06
سلام برای این کار شما باید با استفاده از تابع sendmessage داده مورد نظر رو بفرستید به دریچه ایی که در حال حاضر فعال هست.این طوری emwin
این پیغام رو میگیره و پیغام رو میفرسته برای دریچه.حالا شما داخل loop دریچه ، پیغام رو میگیرید و کاراکتر رو روی Editbox نمایش میدید.
این کار رو برای usart , RTC و غیره میشه انجام داد.

سلام
تابع sendmessageکه گفتید مربوط به کدوم فایل ها میشه کجا باید پیداش کنم
لازمه بگم که من دارم روstm32کارمیکنم و سورس برنامه من با سورس آموزش emwinآقای رئیسی فرق داره
درهرصورت
واینکه منظورتون از دریچه دقیقا چیه؟منظورتون windowای که باز است؟
واینکه حتما باید ازRTCوUSARTاستفاده کرد
شما منظورتون اینه که به کمک اینتراپت مثلاRTCمتغییر رو آپدیت کرد و به emwinفرستاد
حالا مثلا اگه تو حلقه whileتابع mainیه متغییری در حال افزایش باشه نمیشه این متغییر رو به داخل emwinفرستاد؟
بنظر شما کد سی تولید شده توسطguibuilderتوسط emwinیکبار آپدیت میشه و دو طول برنامه حتما برای آپدیت صفحه کاربر باید حتما صفحه رو لمس کنه تا emwinمجداا صفحه رو آپدیت کرده و دستورات داخل کد سی تولیدی رو اجرا کنه؟؟؟:cry:

mducati999
10-09-2017, 13:17
سلام برای این کار شما باید با استفاده از تابع sendmessage داده مورد نظر رو بفرستید به دریچه ایی که در حال حاضر فعال هست.این طوری emwin
این پیغام رو میگیره و پیغام رو میفرسته برای دریچه.حالا شما داخل loop دریچه ، پیغام رو میگیرید و کاراکتر رو روی Editbox نمایش میدید.
این کار رو برای usart , RTC و غیره میشه انجام داد.

پیدا کردم این تابعWM_SendMessageازتوابع خود emwinهست تو کتابخانه WM.h
الان این تابع رو کجای برنامه باید فراخوانی کنم؟؟؟

- - - Updated - - -


سلام برای این کار شما باید با استفاده از تابع sendmessage داده مورد نظر رو بفرستید به دریچه ایی که در حال حاضر فعال هست.این طوری emwin
این پیغام رو میگیره و پیغام رو میفرسته برای دریچه.حالا شما داخل loop دریچه ، پیغام رو میگیرید و کاراکتر رو روی Editbox نمایش میدید.
این کار رو برای usart , RTC و غیره میشه انجام داد.

در واقع این تابع چی رو میفرسته به emwinمنظورم اینکه متغییراشاره گر که آرگومان دوم این تابع است
باید چی باشه؟؟
(void WM_SendMessage (WM_HWIN hWin, WM_MESSAGE * p

mohammadjt
10-09-2017, 13:17
سلام :wink: روی میکرو

سلام مجدد
واقعا ممنون از راهنمایی
من وارد نیستم خیلی.
میشه فایل main که استفاده کردین رو بفرستید. نمیدونم به چه نحوی rtx رو حذف کنم از برنامم.

mohammadjt
14-09-2017, 10:49
سلام. من rtx رو حذف کردم باز هم همین مشکل وجود داره. امکانش هست شما main برنامه که استفاده کردین رو بفرستین؟ رو چه میکرویی تست کردین؟ من رو lpc1768 انجام دادم به نظر مشکل مربوط به حافظست.

- - - Updated - - -


سلام دوست عزیز احتمالا توی برنامه از rtx استفاده کردید، من هم قبلا با این مشکل برخورد کردم فکر می کنم مشکل توی مدیریت تسک ها باشه
برنامه شما بدون rtx مشکلی نداره، من کلید گراف روی برنامه شما رو چندین بار زدم و مشکلی پیش نیومد9549


سلام. من rtx رو حذف کردم باز هم همین مشکل وجود داره. امکانش هست شما main برنامه که استفاده کردین رو بفرستین؟ رو چه میکرویی تست کردین؟ من رو lpc1768 انجام دادم به نظر مشکل مربوط به حافظست.

mohammadjt
14-09-2017, 18:52
سلام من مشکلم حل شد یک سوال اساسی تر داشتم وقتی دستور GRAPH_DATA_YT_AddValue در حلقه while تابع maintask اجرا میکنم دیگه تاچ کار نمیکنه کسی میدونه باید چی.ار گنم. ممنون میشم جواب بدین.
اصلا شما خود مثال widget_GraphYT رو که اجرا میکنین نمیشه تاچ رو کار کرد. چرا؟ میشه درستش کرد. یعنی من می خوام یک داده ای رسم بشه و همچنین مثلا هر موقع که خواستم یک کلید رو فشار بدم رسمش متوقف شه

mducati999
16-09-2017, 12:58
سلام من مشکلم حل شد یک سوال اساسی تر داشتم وقتی دستور GRAPH_DATA_YT_AddValue در حلقه while تابع maintask اجرا میکنم دیگه تاچ کار نمیکنه کسی میدونه باید چی.ار گنم. ممنون میشم جواب بدین.
اصلا شما خود مثال widget_GraphYT رو که اجرا میکنین نمیشه تاچ رو کار کرد. چرا؟ میشه درستش کرد. یعنی من می خوام یک داده ای رسم بشه و همچنین مثلا هر موقع که خواستم یک کلید رو فشار بدم رسمش متوقف شه

سلام ببخشید میتونم بپرسم مشکلتون چه جوری حل شد؟aa)

mohammadjt
16-09-2017, 21:35
سلام ببخشید میتونم بپرسم مشکلتون چه جوری حل شد؟aa)

به اون شکل حل نشد از دستور GRAPH_DATA_YT_AddValue به جای ساخت و attach کردن داده به گراف استفاده کردم. ظاهرا از یک تعداد محدودی بیشتر نمیشه از دستور ساخت گراف استفاده کرد.

یک سوال دیگه داشتم من. وقتی کالیبره میکنم صفحه تاچ رو دقیق کالیبره نمیشه و نقطه موس یک مقدار با نقطه ای که لمس میکنم تفاوت مکان داره که بسته به جای صفحه تغییر میکنه و در بعضی جاها خیلی زیاد میشه.
چندین بار هم از دستور کالیبره کردن استفاده کردم همیشه همینطوریه
کالیبره بقیه هم همینطوریه؟ نمیشه دقیق دقیق کالیبره بشه؟ ممنون

mducati999
17-09-2017, 10:42
به اون شکل حل نشد از دستور GRAPH_DATA_YT_AddValue به جای ساخت و attach کردن داده به گراف استفاده کردم. ظاهرا از یک تعداد محدودی بیشتر نمیشه از دستور ساخت گراف استفاده کرد.

یک سوال دیگه داشتم من. وقتی کالیبره میکنم صفحه تاچ رو دقیق کالیبره نمیشه و نقطه موس یک مقدار با نقطه ای که لمس میکنم تفاوت مکان داره که بسته به جای صفحه تغییر میکنه و در بعضی جاها خیلی زیاد میشه.
چندین بار هم از دستور کالیبره کردن استفاده کردم همیشه همینطوریه
کالیبره بقیه هم همینطوریه؟ نمیشه دقیق دقیق کالیبره بشه؟ ممنون

سلام در مورد مشکل اول من خودم فعلا از ویجت گراف استفاده نکردم ولی تا اونجایی که متوجه شدم شما وقتی از دستور creatاستفاده میکنید یکبار یک پنجره یا یک ویجت رو ساختید حالا اگر برای فرستادن اطلاعات دائما بخواید مجددا از دستور creatاستفاده کنید این دستور باعث میشه که دائما پنجره ها و ویجت ها روی هم دیگه ساخته بشن واین موضوع در نهایت باعث میشه حافظه ramشما پر شده و دیگر قابلیت رفرش السیدی از بین رفته و دیگه شما یه صفحه ثابت رو دائما میبینید گویا سیستم هنگ کرده
بعنوان مثال خود بنده یه همچین مشکلی داشتم من سه تا پنجره مختلف داشتم که تو پنجره اول با دوتا دکمه بین پنجره ها دوم و سوم حرکت میکردم
میرفتم و برمیگشتم هر دفه که میخواستم به پنجره جدید برم از دستور creatاستفاده میکردم بدون اینکه پنجره قبلی رو ببندم و همین موضوع باعث میشد برنامه بعد از چند بار رفتن بین پنجره ها هنگ کنه نکته اینجا بود که حتما وقتی پنجره ای رو میسازیم اگه بخوایم به پنجره بعدی بریم باید پنجره قبلی رو deleteکنیم
این کاری که الان شما کردین و برای اضافه کردن اطلاعات از دستور AddValueاستفاده کردین کاره درستیه و دیگه باعث بوجود آممدن مشکل نمیشود

در مورد صفحه تاچ حتما جایی مشکل دارید وگرنه تاچ باید دقیق کار کنه و موس پرش نداشته باشه
البته من خودم از میکروی stm32استفاده میکنم و سخت افزارم با سخت افزار برد1788سایت متفاوته
ولی این موضوع هیچ ربطی به نرم افزار نداره چون با هر سخت افزاری شما باید دقیق تاچ رو کالیبره کنید
اگه از برد 1788سایت استفاده میکنید در ابتدای این postمفصل در مورد تاچ صحبت شده میتونید مراجعه کنید
حتما مشکلتون حل میشه
مجددا اگه سوالی بود مطرح کنید

sadegh.put
16-11-2017, 23:30
سلام دوستان
من میخوام یه برنامه بنویسم که یک گراف یه دو مقدار رو نشون بده ... اول یک مقدا خونده شده توسط یک سنسور و دوم یک مقداری که به صورت دستی به سیستم میدیم و به صورت متناوب نشون داده میشه و به وسیله دو باتن این مقدار دستی کم و زیاد میشه.
خب گراف داره درت کار میکنه و فعلا مقدار دستی رو به طور متناوب نشون میده اما نمیشه این مقدار رو کم و زیاد کنم چون تاچ از کار میفته ... به نظرتون دلیلش چیه؟ اگه کمک کنید ممنون میشم ...
اینم برنامه ...

البته یک نکته بگم که روتین maintask رو جداگانه نوشتم... یعنی از کدهای همراه dvdاستفاده کردم

#include "DIALOG.h"
#include "appl.h"

/************************************************** *******************
*
* Defines
*
************************************************** ********************
*/
static GRAPH_DATA_Handle _ahData; // Array of handles for the GRAPH_DATA objects
static GRAPH_SCALE_Handle _hScaleV; // Handle of vertical scale
static GRAPH_SCALE_Handle _hScaleH; // Handle of horizontal scale
static I16 _aValue=100;




#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_GRAPH_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_0 (GUI_ID_USER + 0x02)
#define ID_BUTTON_1 (GUI_ID_USER + 0x03)

// USER START (Optionally insert additional defines)
// USER END
/************************************************** *******************
*
* Static data
*
************************************************** ********************
*/
// USER START (Optionally insert additional static data)
// USER END
/************************************************** *******************
*
* _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "salam", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x0, 0 },
{ GRAPH_CreateIndirect, "Graph", ID_GRAPH_0, 0, 0, 457, 257, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button1", ID_BUTTON_0, 98, 309, 100, 50, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Button2", ID_BUTTON_1, 232, 309, 100, 50, 0, 0x0, 0 },
// USER START (Optionally insert additional widgets)
// USER END
};
static void _AddValues(void) {

_aValue +=5;
if (_aValue > 300) {
_aValue=300;
} else if (_aValue < 0) {
_aValue = 0;
}
GRAPH_DATA_YT_AddValue(_ahData, _aValue);
}
static void _MinesValues(void) {
//_aValue = 100;
_aValue -=5;
if (_aValue > 300) {
_aValue =300;
} else if (_aValue < 0) {
_aValue = 0;
}
GRAPH_DATA_YT_AddValue(_ahData, _aValue);
}


/************************************************** *******************
*
* Static code
*
************************************************** ********************
*/
// USER START (Optionally insert additional static code)
// USER END
/************************************************** *******************
*
* _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
int NCode;
int Id;
// USER START (Optionally insert additional variables)
// USER END
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'salam1'
//
hItem = pMsg->hWin;
WINDOW_SetBkColor(hItem, 0x002222FF);
//
// Initialization of 'Graph'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
GRAPH_SetBorder(hItem, 10, 15, 10, 15);

_aValue = 100;
_ahData = GRAPH_DATA_YT_Create(GUI_GREEN, 400, 0, 0);
GRAPH_AttachData(hItem, _ahData);

GRAPH_SetGridDistY(hItem, 25);
GRAPH_SetGridVis(hItem, 1);
GRAPH_SetGridFixedX(hItem, 1);

_hScaleV = GRAPH_SCALE_Create( 35, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 25);
GRAPH_SCALE_SetTextColor(_hScaleV, GUI_YELLOW);
GRAPH_AttachScale(hItem, _hScaleV);

_hScaleH = GRAPH_SCALE_Create(155, GUI_TA_HCENTER, GRAPH_SCALE_CF_HORIZONTAL, 50);
GRAPH_SCALE_SetTextColor(_hScaleH, GUI_DARKGREEN);
GRAPH_AttachScale(hItem, _hScaleH);

//
// Initialization of 'Button1'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetText(hItem, "-");
BUTTON_SetFont(hItem, GUI_FONT_16_ASCII);
//
// Initialization of 'Button2'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetText(hItem, "+");
BUTTON_SetFont(hItem, GUI_FONT_16_ASCII);


// USER START (Optionally insert additional code for further widget initialization)
// USER END
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_0: // Notifications sent by 'Button1'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
hItem = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
_MinesValues();
// USER END
break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_BUTTON_1: // Notifications sent by 'Button2'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
//CheckTouchCalibration();
// USER START (Optionally insert code for reacting on notification message)
hItem = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
_AddValues();

break;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
// USER START (Optionally insert additional code for further Ids)
// USER END
}
break;
// USER START (Optionally insert additional message handling)
// USER END
default:
WM_DefaultProc(pMsg);
break;
}
}
/************************************************** *******************
*
* Public code
*
************************************************** ********************
*/
/************************************************** *******************
*
* Createsalam1
*/

WM_HWIN CreateSample(void);
WM_HWIN CreateSample(void) {
WM_HWIN hWin;
WM_HWIN hGraph;
//_AddValues();
#if GUI_SUPPORT_MEMDEV
WM_SetCreateFlags(WM_CF_MEMDEV);
#endif
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, 0, 0, 0);
while(1){
if (!hGraph) {
hGraph = WM_GetDialogItem(hWin, GUI_ID_GRAPH0);
GRAPH_DATA_YT_AddValue(_ahData, _aValue);
}
// _AddValues();

GUI_X_Delay(1);
//return hWin;

}

}

mducati999
20-11-2017, 13:10
سلام خدمت دوستان
سوالی داشتم در رابطه با توابع کالیبره در emwinهمون طور که میدونید
برای کالیبره کردنه صفحه تاچ از تابع زیر استفاده میکنیم
;(int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phy
که این تابع
در کتابخانه GUI.hموجود میباشد
سوالم اینه که چرا این تابع opensourceنیست و چرا به کد cاین تابع نمیتوان دسترسی داشت
برای مثال مشکلی که دارم delayهست که موقع تاچ کردن صفحه وجود داره
باید حتما موقع تاچ کردنه صفحه یه زمان خیلی کم مکث داشت
البته میدونم که این تابع از تاچ کردنه صفحه نمونه برداری و میانگین رو حساب میکنه
در واقع مشکل اصلی بنده با صفحه تاچ کند بودنه تاچه
خیلی سریع نسبت به تاچ کردنه صفحه عکس العمل نشون نمیده
حتما باید با مکث صفحه رو لمس کرد تا دستورات اجرا بشن
از اینکه میخواستم دسترسی به تابع کالیبره داشته باشم این بود که بتونم تعداد نمونه برداری از صفحه تاچ رو کم کنم
تا مثلا زمان تاچ شدنه صفحه کم بشه
بشه سریع تر با صفحه کار کرد
شما فکر کنید یه صفحه کلید نه رقمی دارید و میخواید مدام رقم وارد کنید این صفحه تاچ اینقد کند عمل میکنه که کاربر خسته میشه
شما فکر میکنید این مشکل برمیگرده به تابع کالیبره emwin
یا باید بجای صفحه تاچ مقاومتی از خازنی استفاده کرد
من یادمه اوایل که گوشی های موبایل تاچ آمده بودن صفحه تاچ شون مقاومتی بود ولی اینقد کند عمل نمیکردن
مسلما مشکل باید از تابع کالیبره emwinباشه نمیدونم چور میشه دسترسی به کد سی این تابع پیدا کرد
یا اصلا روشی وجود داره که بشه سرعت تاچ کردن رو بالا برد
آیا توابعی وجود دارن که بشه این سرعت رو کم یا زیاد کرد
بشه سریع تر صفحه رو تاچ کرد

ممنون میشم از دوستان اگه اطلاعاتی دارن کمک کنن
lov:

mducati999
21-11-2017, 13:04
سلام خدمت دوستان
سوالی داشتم در رابطه با توابع کالیبره در emwinهمون طور که میدونید
برای کالیبره کردنه صفحه تاچ از تابع زیر استفاده میکنیم
;(int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phy
که این تابع
در کتابخانه GUI.hموجود میباشد
سوالم اینه که چرا این تابع opensourceنیست و چرا به کد cاین تابع نمیتوان دسترسی داشت
برای مثال مشکلی که دارم delayهست که موقع تاچ کردن صفحه وجود داره
باید حتما موقع تاچ کردنه صفحه یه زمان خیلی کم مکث داشت
البته میدونم که این تابع از تاچ کردنه صفحه نمونه برداری و میانگین رو حساب میکنه
در واقع مشکل اصلی بنده با صفحه تاچ کند بودنه تاچه
خیلی سریع نسبت به تاچ کردنه صفحه عکس العمل نشون نمیده
حتما باید با مکث صفحه رو لمس کرد تا دستورات اجرا بشن
از اینکه میخواستم دسترسی به تابع کالیبره داشته باشم این بود که بتونم تعداد نمونه برداری از صفحه تاچ رو کم کنم
تا مثلا زمان تاچ شدنه صفحه کم بشه
بشه سریع تر با صفحه کار کرد
شما فکر کنید یه صفحه کلید نه رقمی دارید و میخواید مدام رقم وارد کنید این صفحه تاچ اینقد کند عمل میکنه که کاربر خسته میشه
شما فکر میکنید این مشکل برمیگرده به تابع کالیبره emwin
یا باید بجای صفحه تاچ مقاومتی از خازنی استفاده کرد
من یادمه اوایل که گوشی های موبایل تاچ آمده بودن صفحه تاچ شون مقاومتی بود ولی اینقد کند عمل نمیکردن
مسلما مشکل باید از تابع کالیبره emwinباشه نمیدونم چور میشه دسترسی به کد سی این تابع پیدا کرد
یا اصلا روشی وجود داره که بشه سرعت تاچ کردن رو بالا برد

آیا توابعی وجود دارن که بشه این سرعت رو کم یا زیاد کرد
بشه سریع تر صفحه رو تاچ کرد

ممنون میشم از دوستان اگه اطلاعاتی دارن کمک کنن

lov:

دوستان سلام
مشکل و پیدا کردم در واقع راه حل بسیار ساده ای داشت
درواقع خنگ بازی درآوردم:mrgreen:
با کمی دقت تو توابع مربوط به تاچ متوجه مشکل شدم
این مشکل ربطی به تابع کالیبره زیرنداره
;(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باعث شده بود این مکث ایجاد بشه
و زمان اسکن صفحه تاچ طولانی بشه
همین

omid_2132
21-11-2017, 19:37
سلام.
من یک برنامه نوشتم که یک نمودار سینوسی را با فاز رندوم با فشردن یک کلیک رسم کنه. یک کلید دیگه هم گذاشتم که شکل رو پاک کنه اما بعد از اینکه 4 بار کلیک رسم شکل رو میزنم برنامه دیگه هنگ میکنه ممنون میشم کمک کنین. در ادامه هم کدی که نوشتم رو قرار میدم.
...

سلام.دوست عزیز این برنامه که کار میکنه تو کامپیوتر من(به شرط فعال کردن GUI_Init تو main task).

mohammadjt
31-12-2017, 11:24
سلام به همگی
من با میکرو lpc1788 کار میکنم. و با یک lcd تاچ 7 اینچی. چون از پورتهای پیش فرض که در 1788 برای lcd و درایور داخلی استفاده میشه در جای دیگه استفاده کردم مجبورم از درایور خارجی استفاده کنم. سوال من اینه اگه توی emwin بزنم درایور خارجی به جای درایور داخلی و پورت ها رو هم ادرسشو عوض کنم که بشه همون پرتهایی که من lcd رو وصل کردم کافیه؟ به عبارت دیگه خود emwin راه انداز driver خارجی رو داره یا باید خودم راه اندازیش کنم؟
ممنون

yraeisi
03-01-2018, 11:39
سلام.این کاری که کردین امکان پذیر نیست.اگه از درایور LCD خود میکرو استفاده می کنید باید به پورت های مربوطه وصل کنید.emwin خودش درایور نداره.

mohammadjt
07-01-2018, 20:47
ممنون از پاسختون. مثالی هست از اینکه lpc1788 با درایور خارجی lcd رو راه بندازه؟

mohammadjt
08-01-2018, 15:22
سلام. در مورد کار با درایور خارجی lcd در lpc1788 یک سری درایورها رو خود emwin ظاهرا اماده کرده. برای FLEXCOLOR که ssd1963 رو شامل میشه یک lcdcof وجود داره که از lcd_x_8080 استفاده میکنه. سوال من اینه که چیزی که نوشتم درسته؟ و باید چه چیزی تو این فایل ها تغییر بدم که متناسب با کار من بشه؟ پایه های کنترلی و دیتا نمایشگر رو کچای این برنامه تعیین کنم؟
ممنون

v_gh
29-01-2018, 12:43
من دارم یه کارهایی می کنم.
بابرد LPC1768-mini-DK دارم کار می کنم که LCD اون SPI است. البته اوایل سرعتش خیلی پایین بود چون از درایوری که توی سی دی همراه برد بود استفاده می کردم. الان خوب شده.
اولین قدم اینه که تنظیمات LCD رو درست کنید. به فایلهای LCDConf.h و LCDConf.C مراجعه کنید. بعدش باید مثالهای EmWin رو اجرا کنید. درصورتیکه موفق شدید فقط کافیه که Application رو عوض کنید و برنامه خودتون رو توی MainTask قرار بدهید.

سلام. ممکنه بگید از چه درایوری استفاده میکنید؟ منم سرعتم کنده.

Aali1364
16-02-2018, 12:40
سلام بر دوستان عزیز من یکماه دارم کلافه میشم واقعا کسی نیست به من بگه چطور عکس در برد اموزشی 1788کویر الکترونیک در نند فلش که در برد هست ریخته میشه و چطور لود میشه من الان در emwin عکس دارم نشون میدم و نندفلش رو پیکره بندی کردم ولی در رم میکرو میره حجم منو گرفته

omid_2132
24-03-2018, 14:46
سلام.من میخوام مقدار rtc رو تو یه جایی از ویجت WINDOW قرار بدم.با قرار دادن 5 تا ویجت TEXT (ثانیه-دو نقطه-دقیقه-دو نقطه-ساعت) میتونم این کار رو انجام بدم.

با دستورات مستقیم gui مثل :


GUI_DispDec(sec,2);

هم میتونم توی صفحه بک گراند بدون ویجت WINDOW کل زمان رو قرار بدم ولی میخوام همین کار رو توی صفحه اصلیم (ویجت WINDOW) کنار یکی از ویجت های دیگم قرار بدم که نمیشه چرا که ویجت WINDOW میاد و جلوش رو میگره و فرامین GUI پشت ویجت WINDOW میمونه.
چه نکته برنامه نویسیی رو پیشنهاد میکنید؟

hadi.zarghani
14-06-2018, 15:41
با سلام من تازه شروع به یادگیری emwin کردم یه مشکلی که دارم نمایش متوالی اعداد هستش میخاستم ببینم کسی هست بتونه کمک کنه البته از دستور ;()windowCreate استفاده کردم اما منطقی نیست همچنین از دستور WM_InvalidateWindow() هم استفاده کردم اما بازم جواب نگرفتم دوستان اگه کسی میتونه مشکل حل کنه لظفا راهنمای کنید.

hadi.zarghani
15-06-2018, 01:58
مشکل خودم حل کردم اگه دوستان کسی به این مشکل خورد پیام بده میتونم راهنماِی کنم

shirinamordad
05-08-2018, 17:50
سلام وقت بخیر

نرم افزار emwin مخصوص نمایشگر لمسی هست فقط؟ من دارم با میکرو lpc1768 با نمایشگر کعمولی کار میکنم
برای طراحی واسط گرافیکی از چه نرم افزاری بهتره استفاده کنیم؟

kavir
06-08-2018, 13:51
سلام وقت بخیر

نرم افزار emwin مخصوص نمایشگر لمسی هست فقط؟ من دارم با میکرو lpc1768 با نمایشگر کعمولی کار میکنم
برای طراحی واسط گرافیکی از چه نرم افزاری بهتره استفاده کنیم؟

سلام یک سیستم عامل گرافیکی هست که روی بیشتر میکروها میتونید پورت کنید و استفاده کنید . تاچ هم میتونید پورت کنید
بهترین میکرو 1788 هست و سرعت بالا و کارایی بالا داره
1768 اگر برای السیدی های درایور دار داخلی استفاده میکنید خوب هست مثلا 3.2 اینچ و 2.8 اینچ سایز بالا تر بهتره 1788 استفاده کنید

shirinamordad
09-08-2018, 18:18
ببخشید این راهنمایی که گفتید رو پس من چرا نمی تونم پیدا کنم؟ این لینک های دانلود اولین صفحه هم انگار منقضی شدن؟
please help cry::

- - - Updated - - -

دوستان من یه برنامه توی keil نوشتم یه واسط هم توی emwin طراحی کردم منتها اصلا نمی فهمم چه جوری باید اونو ببرم توی keil
کسی هست جواب بده؟؟؟

Blake
11-08-2018, 11:15
سلام به همه دوستان. میخواستم کار با emwin رو با میکروی stm32407g و درایور ssd1963 شروع کنم. برای اینکه کتابخونه emwin درایور ssd1963 رو برایم ساپورت کن باید در چه فایلهایی و چه تغییراتی رو اعمال کنم؟
و اینکه من چنتا فایل LCD.h LCD.c GUI.h GUI.c گرفتم ولی نمیدونم چرا متاسفانه نمیشه تغییری درونشون داد. حتی با Notepad هم باز کردم برای save کردن پیغام داد که این فایل فقط خواندنیس.
ممنون میشم راهنماییم کنین چون واقعا به راه اندازیش احتیاج دارم.cry::

brasil
15-02-2019, 19:59
سلام
من یه کیپد به lpc1788 متصل کردم و در محیط emwin استفاده کردم همه چیز درسته فقط وقتی پنجره دیگه ای باز میکنم هنگ میکنه.
لطفا راهنمایی کنین

afshin_rp
16-11-2019, 20:26
وقت بخیر
با توجه به تجربه شخصی ! وقتی از تاچ استفاده میکنیم button ها نسبت به کلیک واکنش دارن . در صورتی که از جوستیک استافاده بشه میتوان از release استفاده کرد .

راهنماییتون واقعا کارمو راه انداخت. البته تو یه موضوع دیگه مشکل داشتم. مربوط به سوئیچ رو صفحات که از relase استفاده کرده بودم. صفحه عوض میشد ولی انگار تاثیر releae تو حافظه مونده بود. به محض کلیک روی هرجای صفحه جدید، دوباره برمیگشت به صفحه قبلی.
به هر حال خیلی ممنون.

omid_2132
06-04-2020, 19:47
سلام.میشه یه راهنمایی بفرمایید که حداقل سخت افزار لازم برای پیاده سازی emwin روی lpc1788 چه قطعاتی هست؟
مثلا:
lpc1788
nand flash
sdram
آیسی تاچ
و ...
اگه یه شماتیکی هم باشه که عالی.

afshin_rp
07-04-2020, 11:08
سلام.میشه یه راهنمایی بفرمایید که حداقل سخت افزار لازم برای پیاده سازی emwin روی lpc1788 چه قطعاتی هست؟
مثلا:
lpc1788
nand flash
sdram
آیسی تاچ
و ...
اگه یه شماتیکی هم باشه که عالی.

سلام.
خودم با تجهیزات زیر کار کردم:
برد حرفه ای LPC1788 کویر الکترونیک (You can see links before reply)
ال سی دی 4.2 اینچ (You can see links before reply)
پکیج آموزشی EMWIN (You can see links before reply)

اگه بتونید مجموعه بالا را تهیه کنید، کارتون خیلی سریع پیش میره.
حتما باید اون پکیج اموزشی را بگیرید. گرچه خیلی غیر حرفه ای تهیه شده، اما کمک میکنه. البته قیمتی هم نداره. ولی مفیده.
میکرو LPC1788 هم برای emwin خیلی مناسبه. هم مستقیم به ال سی دی وصل میشه و هم سرعتش خیلی خوبه.
امیدوارم موفق باشد.

majidma3000
26-05-2020, 20:24
مینیمم شماتیک برای راه اندازی و کار با تغذیه 12 ولت براتون پیوست کردم.
میکروکنترلر lpc1788 هم دیجی کالا با قیمت خیلی مناسب موجود کرده، خودم گرفتم که هیچ مشکلی نداشت، چون تقلبیش توی بازار پر شده و تاحالا از چند جای دیگه که گرفته بودم مرجوع کردم، میکروهای کویر هم اورجینال هستن منتها موجود نداره.
خرید از دیجیکالا (You can see links before reply)
دانلود شماتیک (You can see links before reply)

shoniz
30-08-2020, 23:50
هیچ کدوم از لینک ها کار نمیکنند.