اطلاعیه

Collapse
No announcement yet.

سوال در مورد نمایش عکس از sd card در emwin

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد نمایش عکس از sd card در emwin

    سلام بر دوستان.

    بنده حدود دو سه هفته*ای هست روی یه پروژه که بیشتر جنبه فان داره و هدف خاصی ازش ندارم کار می*کنم...
    بعد از راه اندازی sdio و تاچ و ال سی دی و سوار کردن stemwin روی اون الان می*خوام از روی اس دی کارت یه عکس لود کنم و روی صفحه نشون بدم خارج از محیط emwin زیاد سخت نیست (فقط کافیه که آدرس ram درایور ال سی دی رو بهش بدم که توش کپی بشه. اما توی خود emwin یکم اوضاع پیچیده می*شه و به مشکل بر می*خورم.

    این کدی هستش که خارج از emwin می*زنم:

    FATFS myFATFS;
    FIL myFILE;
    UINT myBYTES;
    FRESULT myRES;
    char SDPath[4];
    int size;
    uint8_t* add = (uint8_t *)0xC0000000; // Some address of external SD






    f_mount(&myFATFS, SDPath, 1);
    f_open(&myFILE, "file.bmp", FA_READ);
    size = f_size(&myFILE);
    myRES = f_read(&myFILE, add, size, (UINT *)myBYTES); // read the file and copy it into the external SD RAM
    f_close(&myFILE);




    برای نمایش عکس از حافظه خارجی توی emwin از دستور:

    GUI_BMP_DrawEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0);


    استفاده میشه که x0 و y0 نقطه*ای هستش که می*خوایم عکس از اونجا به بعد نمایش داده بشه و pfGetData تابعی هستش که قراره برامون حافظه رو بخونه و p هم اشاره*گر به مکانی هستش که عکس توی اون جا قرار گرفته.
    از اونجایی که من عادت ندارم چیزا رو عمقی یاد بگیرم متوجه منظور این دو تا نمی*شم!! توی خود فروم segger هم پرسیدم و چنین جوابی بهم داد:

    کد:
    [COLOR=#666666][FONT=&amp]Hi,[/FONT][/COLOR]
    
    [COLOR=#666666][FONT=&amp]GUI_BMP_DrawEx() expects a pointer to a GetData function as first and the file handle as second parameter. The GetData function reads the file using the file handle, so that emWin can draw the BMP image with the data that was read.[/FONT][/COLOR]
    
    [COLOR=#666666][FONT=&amp]There is an example [/FONT][/COLOR][URL="https://wiki.segger.com/External_image_-_BMP_(Sample)"]in the wiki[/URL][COLOR=#666666][FONT=&amp] that demonstrates this. The example can be run in both the Windows simulation and on a target (using emFile).[/FONT][/COLOR]
    
    [COLOR=#666666][FONT=&amp]You can apply this example to the file system you are using, since the steps are the same. The code you posted should be moved into a GetData function. Then you can call GUI_BMP_DrawEx() and pass a pointer to that function and a pointer to your file handle.[/FONT][/COLOR]
    
    [COLOR=#666666][FONT=&amp]Best regards,[/FONT][/COLOR]
    [COLOR=#666666][FONT=&amp]Florian[/FONT][/COLOR]
    که زیاد متوجه منظورش نشدم...

    حالا سوالم اینه که.. دوستان شما تجربه چنین کاری نداری؟ اگه هم ندارید.. متوجه شدید که باید چی کار کنم که کارم راه بیوفته؟

    خیلی ممنون.
    جدیدترین ویرایش توسط ReMadza; ۱۶:۱۷ ۱۳۹۹/۰۵/۲۲.

    #2
    پاسخ : سوال در مورد نمایش عکس از sd card در emwin

    سلامی دوباره...

    خب حل شد!

    می*ذارم اینجا برای افرادی که بعدا دوست داشتن استفاده کنند:

    FATFS myFATFS;
    FIL myFILE;
    UINT myBYTES;
    FRESULT myRES;
    static U8 _acBuffer[0x2000];
    int main{
    ...
    GUI_Init();
    f_mount(&myFATFS, SDPath, 1);
    f_open(&myFILE, "yukino.bmp", FA_READ);
    size = f_size(&myFILE);
    GUI_BMP_DrawEx(APP_GetData, &myFILE, 0, 0);
    ...
    }
    int APP_GetData(void * p, const U8 * * ppData, unsigned NumBytesReq, U32 Off)
    {
    FIL * phFile;
    UINT NumBytesRead;
    //f_open(&phFile, (TCHAR const*)p, FA_READ);
    phFile = (FIL *) p;
    // Check buffer size
    if (NumBytesReq > sizeof(_acBuffer)) {
    NumBytesReq = sizeof(_acBuffer);
    }
    // Set file pointer to the offset location
    f_lseek(phFile, Off);
    // Read data into buffer
    f_read(phFile, _acBuffer, NumBytesReq, (UINT *)&NumBytesRead);
    // Set data pointer to the beginning of the buffer
    *ppData = _acBuffer;
    // Return number of available bytes
    return NumBytesRead;
    }


    دیگه تحلیلش با خودتون

    دیدگاه


      #3
      پاسخ : سوال در مورد نمایش عکس از sd card در emwin

      سلام وقتتون بخیر،
      من از بورد STM32F746G استفاده می کنم و میخوام با استفاده از نرم افزار keil روی LTDC یک مستطیل و خطوط افقی و عمودی نشون بدم. ممنون میشم راهنماییم کنید.

      دیدگاه


        #4
        پاسخ : سوال در مورد نمایش عکس از sd card در emwin

        نوشته اصلی توسط mah_sa نمایش پست ها
        سلام وقتتون بخیر،
        من از بورد STM32F746G استفاده می کنم و میخوام با استفاده از نرم افزار keil روی LTDC یک مستطیل و خطوط افقی و عمودی نشون بدم. ممنون میشم راهنماییم کنید.
        سلام.
        اگه از من پرسسیدید که باید بگم تا حالا با LTDC کار نکردم.. کلا این بار اولی بود که با lcd کار کردم .. که اینم با FSMC بود نه LTDC

        دیدگاه

        لطفا صبر کنید...
        X