NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 1306 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 15 از 56 نخستنخست 12345678910111213141516171819202122232425262728293031323334 ... آخرینآخرین
نمایش نتایج: از 281 به 300 از 1104

موضوع: آموزش emWin

  1. #281
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    نقل قول نوشته اصلی توسط skiboys نمایش پست ها
    ممنون من lcd را راه اندازی کرده ام بدون emwin برای توابع هم با استفاده از هدرهای موجود خودم هدر نوشته ام برای درایور ILI9325
    منظورم این بود که پایه های کنترلی و پایه های دیتا کجا تعریف شده اند که من طبق سخت افزار خود تغییرشان دهم؟

    برای ان برنامه نگفتید روی LCD چه چیزی مشاهده خواهیم کرد؟
    وقتی ال سی دی رو راه اندازی کردید بدون emwin، دیگه به سخت افزار کاری نخواهیم داشت. فقط به سراغ فایل LCDCONF.H بروید.
    اونجا چند تا تابع هست. السیدی من 320*240 با درایورILI9320 است که بصورت SPI به میکرو وصل شده. در فایل LCDCONF.H فایل هدر السیدی روincludeکنید.
    سپس تنظیمات ماکروهای اول فایل رو انجام بدهید:

    کد:
    // Color depth
    //
    #define LCD_BITSPERPIXEL 16 /* Currently the values 16 and 18 are supported */
    //
    // Physical display size
    //
    #define XSIZE_PHYS 320
    #define YSIZE_PHYS 240
    
    //
    // Color conversion
    //
    #define COLOR_CONVERSION GUICC_565
    
    //
    // Display driver
    //
    #define DISPLAY_DRIVER GUIDRV_FLEXCOLOR
    
    //
    // Orientation
    //
    //#define DISPLAY_ORIENTATION (0)
    //#define DISPLAY_ORIENTATION (GUI_MIRROR_X)
    //#define DISPLAY_ORIENTATION (GUI_MIRROR_Y)
    //#define DISPLAY_ORIENTATION (GUI_MIRROR_X | GUI_MIRROR_Y)
    //#define DISPLAY_ORIENTATION (GUI_SWAP_XY)
    //#define DISPLAY_ORIENTATION (GUI_MIRROR_X | GUI_SWAP_XY)
    #define DISPLAY_ORIENTATION (GUI_MIRROR_Y | GUI_SWAP_XY)
    //#define DISPLAY_ORIENTATION (GUI_MIRROR_X | GUI_MIRROR_Y | GUI_SWAP_XY)
    سپس تابع InitController رو ملاحظه کنید. در این تابع باید تابع LCDInit رو قرار بدهید و تمام.

    از اینجا به بعد شما دو انتخاب دارید:
    یکی استفاده از توابع ارسال تکی و بلوکی و دیگری توابع ارسال ساده اطلاعات/
    اگر می خواهید به روش ساده عمل کنید، تابع LCD_X_DisplayDriver رو ببینید، اونجا چند قسمت هست که در نسخه BSP همه اونها حذف شده (چون از روش اول استفاده شده).
    در نسخه precompile که با کیل اومده، فایل دست نخورده در فولدر سمپل قرار گرفته.
    در اون فایل تابع بصورت زیر تعریف شده:
    کد:
    int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
      int r;
    
      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...
        //
        // ...
        return 0;
      }
      case LCD_X_SETVRAMADDR: {
        //
        // Required for setting the address of the video RAM for drivers
        // with memory mapped video RAM which is passed in the 'pVRAM' element of p
        //
        LCD_X_SETVRAMADDR_INFO * p;
        p = (LCD_X_SETVRAMADDR_INFO *)pData;
        //...
        return 0;
      }
      case LCD_X_SETORG: {
        //
        // Required for setting the display origin which is passed in the 'xPos' and 'yPos' element of p
        //
        LCD_X_SETORG_INFO * p;
        p = (LCD_X_SETORG_INFO *)pData;
        //...
        return 0;
      }
      case LCD_X_SHOWBUFFER: {
        //
        // Required if multiple buffers are used. The 'Index' element of p contains the buffer index.
        //
        LCD_X_SHOWBUFFER_INFO * p;
        p = (LCD_X_SHOWBUFFER_INFO *)pData;
        //...
        return 0;
      }
      case LCD_X_SETLUTENTRY: {
        //
        // Required for setting a lookup table entry which is passed in the 'Pos' and 'Color' element of p
        //
        LCD_X_SETLUTENTRY_INFO * p;
        p = (LCD_X_SETLUTENTRY_INFO *)pData;
        //...
        return 0;
      }
      case LCD_X_ON: {
        //
        // Required if the display controller should support switching on and off
        //
        return 0;
      }
      case LCD_X_OFF: {
        //
        // Required if the display controller should support switching on and off
        //
        // ...
        return 0;
      }
      default:
        r = -1;
      }
      return r;
    }
    که در اون دستورات مختلفی که emwin بهش نیاز داره رو نشون داده. شما باید در هر case دستور مورد نیاز رو قرار بدهید.
    اگر میخواهید از روش اول استفاده کنید که پیشنهاد میکنم استفاده کنید، تابع LCD_X_Config رو باید اصلاح کنید:
    در این تابع، در نسخه BSP ساختاری به نام PortAPI تعریف شده که وظیفش معرفی توابع ارسال تکی و بلوکی رجیستر و داده السیدی است. توابعPortAPI برای مودهای 8، 16 و 32 وجود دارند. من مود 16 بیتی که 65K رنگ بود رو انتخاب کرده ام. چون مود 18 بیتی که السیدی ساپورت میکنه رو emwin ساپورت نمیکنه.!!
    کد:
    PortAPI.pfWrite16_A0  = LCD_X_SPI_Write00;
      PortAPI.pfWrite16_A1  = LCD_X_SPI_Write01;
      PortAPI.pfWriteM16_A1 = LCD_X_SPI_WriteM01;
      PortAPI.pfReadM16_A1  = LCD_X_SPI_ReadM01;
    در مثال فوق LCD_X_SPI_Write00 برای ارسال یک فرمان و LCD_X_SPI_Write01 برای ارسال یک داده ، LCD_X_SPI_WriteM01 برای ارسال بلوکی از داده ها و LCD_X_SPI_ReadM01 برای خواندن بلوکی از داده ها به ساختار PortAPI معرفی شده است.
    این هم شرح توابع فوق:
    کد:
    /*******************************************************************************
    * Write command                                                                *
    *   Parameter:    c: command to write                                          *
    *   Return:                                                                    *
    *******************************************************************************/
    void LCD_X_SPI_Write00(U16 c)
    {
      wr_cmd(c);
    }
    
    /*******************************************************************************
    * Write data byte                                                              *
    *   Parameter:    c: word to write                                             *
    *   Return:                                                                    *
    *******************************************************************************/
    void LCD_X_SPI_Write01(U16 c)
    {
      wr_dat(c);
    }
    
    /*******************************************************************************
    * Write multiple data bytes                                                    *
    *   Parameter:    pData:    pointer to words to write                          *
    *                 NumWords: Number of words to write                           *
    *   Return:                                                                    *
    *******************************************************************************/
    void LCD_X_SPI_WriteM01(U16 * pData, int NumWords)
    {
      LCD_CS(0);
      spi_tran_fifo(SPI_START | SPI_WR | SPI_DATA);			/* Write : RS = 1, RW = 0 */
    
      while(NumWords--)
      {
    	  spi_tran_fifo(((*pData) >>   8));					/* Write D8..D15 */
    	  spi_tran_fifo(((*(pData++)) & 0xFF));				/* Write D0..D7 */
      }
      while(LPC_SSP0->SR & (1<<4));							/* wait until done */
      LCD_CS(1);
    }
    
    /*******************************************************************************
    * Read multiple data bytes                                                     *
    *   Parameter:    pData:    pointer to words to read                           *
    *                 NumWords: Number of words to read                            *
    *   Return:                                                                    *
    *******************************************************************************/
    void LCD_X_SPI_ReadM01(U16 * pData, int NumWords)
    {
      LCD_CS(0);
      spi_tran_fifo(SPI_START | SPI_RD | SPI_DATA);			/* Read: RS = 1, RW = 1 */
      spi_tran_fifo(0);										/* Dummy byte 1 */
      while(NumWords--)
      {
    	*pData = spi_tran(0) << 8;							/* Read D8..D15 */
    	*(pData++) |= spi_tran(0);							/* Read D0..D7 */
      }
      while(LPC_SSP0->SR & (1<<4));							/* wait until done */
      LCD_CS(1);
    }
    به نحوه ارسال و دریافت بلوکی داده ها توجه کنید. در دیتاشیت درایور السیدی شماحتما در این مورد صحبت شده. اگر تصمیم دارید که سرعت نمایش تصاویر بالا باشه یااحیانا فیلم نمایش بدهید گریزی از این توابع نیست. مخصوصا اگر سرعت انتقال اطلاعات پایین باشه مثل السیدی من که SPI است. سایر توابع که مربوط به lowlevel ارسال اطلاعات با SPI بوده رو دیگه ننوشتم...
    در آخر مقادیر تعریف شده رو به emwin میفرستیم:
    کد:
    GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16);
    
      //
      // Orientation
      //
      Config.Orientation = DISPLAY_ORIENTATION;
      Config.NumDummyReads = 2;		/* 5 dummy bytes are required when reading GRAM by SPI. 1 byte is read in LCD_X_SPI_WriteM01, so 4 bytes are left */
      GUIDRV_FlexColor_Config(pDevice, &Config);
    اگه همه چیز درست باشه، با پروگرام کردن bsp دموی EMWIN اجرا خواهد شد

    این لینک هم مفیده حتما بخونید:
    http://www.nxp.com/documents/applica...te/AN11218.pdf
    نکته دیگه درباره این فایل، تعریف pDevice است. در پست بعدی توضیح می دهم
    ویرایش توسط mansoory : 12-06-2013 در ساعت 14:22

  2. کاربران : 5 تشکر کرده اند از شما mansoory برای ارسال این پست سودمند:


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #282
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    ساختار دیگه ای که در تابع LCD_X_Config تعریف شده pDevice است. باتوجه به Manual emwin در قسمت DisplayDriver باید نوعش رو درست انتخاب کنید. اکثر درایورهای السیدی ها بصورت زیر تعریف می شوند:
    کد:
    //
    // Color conversion
    //
    #define COLOR_CONVERSION GUICC_565
    
    //
    // Display driver
    //
    #define DISPLAY_DRIVER GUIDRV_FLEXCOLOR
    سپس بصورت زیر به emwin معرفی می شود:


    کد:
    pDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
    برای مطالعه بیشتر به این لینک مراجعه کنید خیلی مفیده و جواب همه سوالات رو در اینجا میبینید:
    SEGGER Microcontroller - Embedded Software Solutions - GUIDRV_FlexColor

  5. کاربران : 3 تشکر کرده اند از شما mansoory برای ارسال این پست سودمند:


  6. #283
    کاربر فعال sjafarim آواتار ها
    تاریخ عضویت
    Jan 2008
    نام
    جعفری
    نوشته ها
    225
    تشکر
    93
    تشکر شده 297 بار در 141 پست

    پیش فرض

    2تا نکته راجع به بکاگیری emwin در rtos ها:
    1- تسک های کم اهمیت رو با اولویت کمتر از emwin قرار بدین، emwin فرصت پردازش به اونا رو هم میده.
    2- tick time سیستم رو کم (حدود 1ms) قرار بدین تا emwin روون تر کار بکنه.(round robin timeout=5) اگر زمان tick رو زیاد کنید مثلا list wheel ها کند عمل میکنن.

  7. کاربران : 5 تشکر کرده اند از شما sjafarim برای ارسال این پست سودمند:


  8. #284
    کاربر فعال
    تاریخ عضویت
    Aug 2011
    نام
    Dany
    نوشته ها
    257
    تشکر
    138
    تشکر شده 185 بار در 106 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mansoory نمایش پست ها
    وقتی ال سی دی رو راه اندازی کردید بدون emwin، دیگه به سخت افزار کاری نخواهیم داشت. فقط به سراغ فایل LCDCONF.H بروید.
    اونجا چند تا تابع هست. السیدی من 320*240 با درایورILI9320 است که بصورت SPI به میکرو وصل شده. در فایل LCDCONF.H فایل هدر السیدی روincludeکنید.
    خیلی ممنون از جواب های کاملی که می دهید من هدر LCD خودم را به LCDCONF.H اضافه کردم برای initialize کردن LCD من از مدi80/9-bit System Interface استفاده می کنم به صورتی که 16 پایه از یک پورتی را به data اختصاص داده ام و چندتا هم به پایه های کنترلی، شما پایه های کنترلی را به پایه های SPI متصل کرده اید؟ من پایه های SPI را به مموری متصل کرده ام فکر کنم اگر بخواهم برای LCD هم از SPI استفاده کنم باید برم سراغ SSP
    راستی این تابعLCD_X_ فقط برای حالتی هستند که LCD را درمد SPI راه اندازی کنیم درسته؟ اگه من LCD را با SPI راه اندازی نکنم برای استفاده از emwin چه کاری باید انجام دهم؟
    داخل سایت SEGGER دوتا بخش برای راه اندازی این درایورها داره
    GUIDRV_FlexColor و GUIDRV_CompactColor_16 فرقشون چیه؟
    ویرایش توسط skiboys : 13-06-2013 در ساعت 15:03

  9. تشکرها از این نوشته :


  10. #285
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    نقل قول نوشته اصلی توسط skiboys نمایش پست ها
    خیلی ممنون از جواب های کاملی که می دهید من هدر LCD خودم را به LCDCONF.H اضافه کردم برای initialize کردن LCD من از مدi80/9-bit System Interface استفاده می کنم به صورتی که 16 پایه از یک پورتی را به data اختصاص داده ام و چندتا هم به پایه های کنترلی، شما پایه های کنترلی را به پایه های SPI متصل کرده اید؟ من پایه های SPI را به مموری متصل کرده ام فکر کنم اگر بخواهم برای LCD هم از SPI استفاده کنم باید برم سراغ SSP
    راستی این تابعLCD_X_ فقط برای حالتی هستند که LCD را درمد SPI راه اندازی کنیم درسته؟ اگه من LCD را با SPI راه اندازی نکنم برای استفاده از emwin چه کاری باید انجام دهم؟
    داخل سایت SEGGER دوتا بخش برای راه اندازی این درایورها داره
    GUIDRV_FlexColor و GUIDRV_CompactColor_16 فرقشون چیه؟
    سلام. یک اشکالی که به نظرم میاد اینه که ظاهرا هنوز السیدی رو مستقل از emwin راه اندازی نکرده اید. آیا در توضیحاتی که گفته شد به نحوه ارتباط السیدی به میکرو هم اشاره شد؟
    من فقط یک مثال رو تشریح کردم که در اون السیدی بصورت spi وصل بوده. در اون مثال توابع مربوطه رو نشون دادم و مهم اینه که بفهمیم اون توابع رو کجا و چطوری به emwin معرفی کنیم.
    شما هم باید همین کار رو انجام بدین. اینکه السیدی چطوری به میکرو وصل شده lowlevel است و شما باید در توابع مربوط به السیدی به این موارد بپردازید... مطالبی که در پستهای قبلی گفتم کلی است.

  11. تشکرها از این نوشته :


  12. #286
    کاربر فعال sjafarim آواتار ها
    تاریخ عضویت
    Jan 2008
    نام
    جعفری
    نوشته ها
    225
    تشکر
    93
    تشکر شده 297 بار در 141 پست

    پیش فرض

    این یه نمونه از guiکامل فارسی که برای یه دستگاه لاگر طراحی شده:
    (پیوست شد)
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط sjafarim : 21-06-2013 در ساعت 12:36

  13. کاربران : 10 تشکر کرده اند از شما sjafarim برای ارسال این پست سودمند:


  14. #287
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    یک مقاله درباره کالیبراسیون تاچ:
    همونطور که می دونید emwin از روش خطی ساده برای کالیبراسیون تاچ استفاده کرده. تابع GUI_TOUCH_Calibrate دو تا نقطه بعنوان نقاط مرجع روی ال سی دی میگیره و مختصات دو نقطه هم ه از خروجی A/D تاچ میگیره و ضرایب تناسب رو با محاسبه می کنه.
    وقتی ابعاد تاچ بزرگ میشه، رابطه خطی دیگه صادق نیست؛ مثلا در گوشه های تاچ. ضمنا در کالیبراسیون تاچ، 3 فاکتور جابجایی، کشیدگی و دوران محورهای تاچ نسبت به السیدی، روی معادله کالیبراسیون تاثیر میگذارند. وقتی از 2نقطه برای کالیبراسیون استفاده بشه، اثر کشیدگی و دوران درهم ادغام میشه که خیلی مناسب نیست.
    برای السیدیهای کوچک از روش 3نقطه و برای السیدیهای بزرگتر 5 یا 9 نقطه استفاده می شود.
    این مقاله به بررسی معادلات مربوطه و روش نوشتن تابع کالیبراسیون پرداخته است.
    امیدوارم مفید باشه
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: zip AN-1021.zip (148.6 کیلو بایت, 354 نمايش)
    ویرایش توسط mansoory : 22-06-2013 در ساعت 15:01

  15. کاربران : 10 تشکر کرده اند از شما mansoory برای ارسال این پست سودمند:


  16. #288
    کاربر فعال titery آواتار ها
    تاریخ عضویت
    Dec 2011
    نام
    وثوق
    نوشته ها
    166
    تشکر
    363
    تشکر شده 218 بار در 89 پست

    پیش فرض

    اینم emwin520 برای کوره برد همراه با تاچ و موس.ولی من هنوز نفهمیدم چرا سرعت رفرش صفحه در ورژن 5.16 داخل سی دی کوره برد سرعتش خیلی بیشتر از 5.18 و 5.20 هست.
    start520_coreboard(4).rar

  17. کاربران : 7 تشکر کرده اند از شما titery برای ارسال این پست سودمند:


  18. #289
    عضو جدید
    تاریخ عضویت
    Sep 2011
    نوشته ها
    7
    تشکر
    13
    تشکر شده 8 بار در 3 پست

    پیش فرض

    سلام من هر کاری میکنم مثال emwin داخل dvd کور بورد روی ال سی دی 7 اینچ اجرا نمیشه حتی فایل شما را هم پروگرم کردم ,و سایز lcd به 7 انیچ تغییر دادم .صفحه کاملا سفیده ایا دلیلی داره ؟
    ولی مثال GLCD کاملا جواب میده .
    ویرایش توسط mehrdad224 : 05-07-2013 در ساعت 17:54

  19. #290
    مدیر انجمن
    تاریخ عضویت
    Jul 2007
    نام
    امید آزاده
    نوشته ها
    357
    تشکر
    177
    تشکر شده 279 بار در 133 پست

    پیش فرض

    سلام به همه دوستان .....
    یه سوال ..
    کی تو emwin با امکانات multi layer کار کرده ...
    هر کاری میکنم درست از آب در نمیاد...
    ممنون

  20. #291
    کاربر فعال sjafarim آواتار ها
    تاریخ عضویت
    Jan 2008
    نام
    جعفری
    نوشته ها
    225
    تشکر
    93
    تشکر شده 297 بار در 141 پست

    پیش فرض

    دقیق بگو مشکلت چیه؟
    چیکارمی خوای بکنی و کجاش مشکل داری؟
    کد برنامتم پیوست کن.

  21. #292
    مدیر انجمن
    تاریخ عضویت
    Jul 2007
    نام
    امید آزاده
    نوشته ها
    357
    تشکر
    177
    تشکر شده 279 بار در 133 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sjafarim نمایش پست ها
    دقیق بگو مشکلت چیه؟
    چیکارمی خوای بکنی و کجاش مشکل داری؟
    کد برنامتم پیوست کن.
    سلام به همه ....
    ممنون از جوابت ...
    مثلا یک شکل هندسی دارم مثل دایره .... میخوام یک شکل دیگه مثل مستطیل بتونه روش حرکت کنه .... بدون اینکه شکل دایره خراب بشه ....

  22. #293
    کاربر فعال sjafarim آواتار ها
    تاریخ عضویت
    Jan 2008
    نام
    جعفری
    نوشته ها
    225
    تشکر
    93
    تشکر شده 297 بار در 141 پست

    پیش فرض

    ببین هر دوتا چیزی که میخوای رو هم حرکت کنن واقعا دوتا شکل هندسی هستن؟
    چند ضلعی هستن؟ اگر مثلا یکی یه ویندوز هست و یکی شکل فرق میکنه، یا هر دو ویندوز، یا این که دو تا شکل مد نظر فرزند یک ویندوز هستن یا نه؟دقیق بگو چیه، حتی اگر عکس باشن باز روشش فرق داره...(علاوه برین روش های مختلف نیاز به رم و پردازش متفاوتی دارن)
    الان برداشت من از حرف شما اینه که دو تا شکل (مثلا چندضلعی) که هر دو فرزند یه ویندوز (البته این نکترو توجه کن که اگر از ویندوز منیجر استفاده کنی برای رسم اشکال دو بعدی در یک صفحه فقط باید از مسیج overlay استفاده کنی و کارت سخت و با پردازش سنگین میشه پس بهتره دو شکل مذکور به عنوان فرزند background win باشن که مستقیما قابل رسم باشن و اگر از وین منیجر استفاده نکنی کارت راحت تر خواهد بود و مستقیم همه چی قابل رسمه اما قابلیت های زیادی رو از دست میدی) هستن قراره روی هم حرکت کنن، برای این کار کافیه یه مموری دیوایس بسازی، انتخابش کنی، شکلتو رسم کنی، به lcd منتقل کنی. بعد هر تغییرات مکانی یا زاویه ای خواستی رو هندل مموریت میدی...
    برای هر دو شکل به همین صورت عمل میکنی،یعنی هر شکل یه مموری دیوایس و ...
    یه فایل مثال هم تو خود emwin بود که اگه اشتباه نکنم WM_Sample بود که همین چیزی که شما میخوایو مثال زده... (البته با اون فقط میشه 4 ضلعی رو کار کرد چون از win به عنوان شکل استفاده کرده)
    راه دیگش هم sprite هست که برای کار شما استفاده ازش معقول نیست...
    * به نظر من در مورد مباحث وراثت پنجره ها و نحوه ترسیم بواسطه پیغام ها همچنین نحوه عملکرد ویندوز منیجر بیشتر تحقیق کنید...
    موفق باشید.
    ویرایش توسط sjafarim : 10-07-2013 در ساعت 14:58

  23. تشکرها از این نوشته :


  24. #294
    مدیر انجمن
    تاریخ عضویت
    Jul 2007
    نام
    امید آزاده
    نوشته ها
    357
    تشکر
    177
    تشکر شده 279 بار در 133 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sjafarim نمایش پست ها
    ببین هر دوتا چیزی که میخوای رو هم حرکت کنن واقعا دوتا شکل هندسی هستن؟
    چند ضلعی هستن؟ اگر مثلا یکی یه ویندوز هست و یکی شکل فرق میکنه، یا هر دو ویندوز، یا این که دو تا شکل مد نظر فرزند یک ویندوز هستن یا نه؟دقیق بگو چیه، حتی اگر عکس باشن باز روشش فرق داره...(علاوه برین روش های مختلف نیاز به رم و پردازش متفاوتی دارن)
    الان برداشت من از حرف شما اینه که دو تا شکل (مثلا چندضلعی) که هر دو فرزند یه ویندوز (البته این نکترو توجه کن که اگر از ویندوز منیجر استفاده کنی برای رسم اشکال دو بعدی در یک صفحه فقط باید از مسیج overlay استفاده کنی و کارت سخت و با پردازش سنگین میشه پس بهتره دو شکل مذکور به عنوان فرزند background win باشن که مستقیما قابل رسم باشن و اگر از وین منیجر استفاده نکنی کارت راحت تر خواهد بود و مستقیم همه چی قابل رسمه اما قابلیت های زیادی رو از دست میدی) هستن قراره روی هم حرکت کنن، برای این کار کافیه یه مموری دیوایس بسازی، انتخابش کنی، شکلتو رسم کنی، به lcd منتقل کنی. بعد هر تغییرات مکانی یا زاویه ای خواستی رو هندل مموریت میدی...
    برای هر دو شکل به همین صورت عمل میکنی،یعنی هر شکل یه مموری دیوایس و ...
    یه فایل مثال هم تو خود emwin بود که اگه اشتباه نکنم WM_Sample بود که همین چیزی که شما میخوایو مثال زده... (البته با اون فقط میشه 4 ضلعی رو کار کرد چون از win به عنوان شکل استفاده کرده)
    راه دیگش هم sprite هست که برای کار شما استفاده ازش معقول نیست...
    * به نظر من در مورد مباحث وراثت پنجره ها و نحوه ترسیم بواسطه پیغام ها همچنین نحوه عملکرد ویندوز منیجر بیشتر تحقیق کنید...
    موفق باشید.
    ببین من میخوام یه اسکرین artificial horizon که تو هواپیما بکار رفته درست کنم ... مثل شکل ....
    یه دایره داریم بعنوان صفحه اصلی و اون قسمت قهوه ای یه مستصیل هستش که باید روی دایره حرکت کنه ....
    تصاوير کوچک فايل پيوست تصاوير کوچک فايل پيوست برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: ah.jpg
مشاهده: 61
حجم: 10.0 کیلو بایت  

  25. #295
    کاربر فعال sjafarim آواتار ها
    تاریخ عضویت
    Jan 2008
    نام
    جعفری
    نوشته ها
    225
    تشکر
    93
    تشکر شده 297 بار در 141 پست

    پیش فرض

    پروسسورت چیه؟رم چقدر داری؟
    از همون روش مموری دیوایس که گفتم استفاده کن. (شاید یکم سخت تر باشه ولی من ترجیح میدم اینکارو)
    راه دیگشم اینه که مستطیل زیریرو یه ویندوز بزرگتر با virtual display بگیری، بعد یه ویندوز خالی تو ارتفاع بالاتر ازون قبلی بزاری و با استفاده از پیغام overlay مربوط به owner drow این ویندوز حاشیه دورتو نمایش بدی. حالا ویندوز زیریو کامل بالا پایین کنی با ویندوز منیجر... (این راه رم بیشتری نیاز داره)

  26. کاربران : 2 تشکر کرده اند از شما sjafarim برای ارسال این پست سودمند:


  27. #296
    مدیر انجمن
    تاریخ عضویت
    Jul 2007
    نام
    امید آزاده
    نوشته ها
    357
    تشکر
    177
    تشکر شده 279 بار در 133 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sjafarim نمایش پست ها
    پروسسورت چیه؟رم چقدر داری؟
    از همون روش مموری دیوایس که گفتم استفاده کن. (شاید یکم سخت تر باشه ولی من ترجیح میدم اینکارو)
    راه دیگشم اینه که مستطیل زیریرو یه ویندوز بزرگتر با virtual display بگیری، بعد یه ویندوز خالی تو ارتفاع بالاتر ازون قبلی بزاری و با استفاده از پیغام overlay مربوط به owner drow این ویندوز حاشیه دورتو نمایش بدی. حالا ویندوز زیریو کامل بالا پایین کنی با ویندوز منیجر... (این راه رم بیشتری نیاز داره)
    ممنون از جوابت دوست عزیز ...
    والا من core board LPC1788 رو از فروشگاه تهیه کردم....

  28. #297
    کاربر فعال sjafarim آواتار ها
    تاریخ عضویت
    Jan 2008
    نام
    جعفری
    نوشته ها
    225
    تشکر
    93
    تشکر شده 297 بار در 141 پست

    پیش فرض

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

  29. کاربران : 2 تشکر کرده اند از شما sjafarim برای ارسال این پست سودمند:


  30. #298
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    نقل قول نوشته اصلی توسط microprocesor_2002 نمایش پست ها
    ببین من میخوام یه اسکرین artificial horizon که تو هواپیما بکار رفته درست کنم ... مثل شکل ....
    یه دایره داریم بعنوان صفحه اصلی و اون قسمت قهوه ای یه مستصیل هستش که باید روی دایره حرکت کنه ....
    همونطور که آقای جعفری گفتند، راه حل شما استفاده از MEMDEVICE است. ابتدا در راهنمای emwin بخش مربوط به Memory Devices رو مطالعه کنید. انشالله به کمک آقای جعفری موفق خواهید شد. مثال MEMDEV_Banding.c رو هم مطالعه کنید

  31. کاربران : 3 تشکر کرده اند از شما mansoory برای ارسال این پست سودمند:


  32. #299
    عضو جدید
    تاریخ عضویت
    Jun 2013
    نوشته ها
    7
    تشکر
    0
    تشکر شده 1 بار در 1 پست

    پیش فرض

    نرم افزار uvision 4.7 رو از سايت keil‌دانلود كنيد. و با patchهاي ورژنهاي قبلي كركش كنيد. همه كتابخانه هاي emwin رو به همراه نرم افزارهاي توليد صفحات گرافيكي ميتونيد داشته باشيد. در ضمن help خوبي هم داره.

  33. #300
    مدیر انجمن
    تاریخ عضویت
    Jul 2007
    نام
    امید آزاده
    نوشته ها
    357
    تشکر
    177
    تشکر شده 279 بار در 133 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sjafarim نمایش پست ها
    برد خوبیه،نیازتو کامل ارضا میکنه...
    استارتشو بزن هرجا مشکل داشتی بگو با دوستان اگر کمکی از دستمون بر بیاد پشتت هستیم...
    نتایج کارتم همینجا آخر سر قرار بده که به عنوان نمونه همه استفاده کنن...
    موفق باشی.
    آخه یه مشکلی که دارم اینه که نمیتونم کاری کنم که میکرو بجای استفاده از فلش و رم داخلی (که خیلی کمه)، از فلش و رم خارجی که رو خود بورد هست استفاده کنه.... البته نمیدونم اصلا این میکرو میتونه واسه بوت شدن از اونا اسنفاده کنه یا اونا صرفا یه حافظه جانبی محسوب میشه مثل at2402 ...
    ویرایش توسط microprocesor_2002 : 13-07-2013 در ساعت 14:15

صفحه 15 از 56 نخستنخست 12345678910111213141516171819202122232425262728293031323334 ... آخرینآخرین

موضوعات مشابه

  1. [سوال] جزوه آموزشی برد آموزشی lpc1768
    توسط pooriya_nic18 در انجمن LPC series (NXP)
    پاسخ: 5
    آخرين نوشته: 07-12-2013, 14:49
  2. ثبت نام در مسابقات رباتیک وزارت آموزش و پرورش
    توسط elhghasemi در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 0
    آخرين نوشته: 03-08-2012, 21:14

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •