eric2013 发表于 2022-9-30 03:31:00

无需内嵌代码的全新GUI截图方案在TouchGFX,ThreadX GUIX,emWin,LVGL,AWTK全部测试通过,含多缓冲方式玩法

已经正式发布:
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118116

static/image/hrline/4.gif

搞GUI这么多年来,这个问题一直是个心病,通过这段时间的研究,终于有个产品样子了。

早期包括现在做产品效果展示,需要截屏时,很多时候依然采用的SD卡/U盘这种的古老方案,不仅麻烦,而且繁琐。

emWin早期的时候有推出过emSPY截图功能,需要用户移植RTT或者网络协议栈,后续新版本更新,经常出现花屏,几乎没法使用。

近期搞H7-TOOL的RTOS Trace功能,发现当前机制用于各种GUI截图也贼方便。用户仅需接上SWD接口,无需用户嵌入代码到目标,填入显存地址即可,通过过这个功能,会大大方便大家产品效果展示。

截图800*480*2分辨率显示屏,1.5秒左右。
视频:

https://www.bilibili.com/video/BV16P411n7LF

https://www.bilibili.com/video/BV16P411n7LF


(1) ThreadX GUIX展示:

https://img.anfulai.cn/dz/attachment/forum/202209/29/005812szxveex222n3aguz.png

https://img.anfulai.cn/dz/attachment/forum/202209/29/005825p8cv9yff1vmwv21z.png

(2)emWin

emWin有个双缓冲,三缓冲模式,今天花时间也解决了,可以依次将三个缓冲内存全部展示出来,方便查看每个缓冲的截图效果。

https://img.anfulai.cn/dz/attachment/forum/202209/30/010835o7l49jd3ly8yub48.png

(3)TouchGFX







(4)LVGL


(5)AWTK



(6 ) 当然,裸机也是没问题的







eric2013 发表于 2022-9-30 03:31:12

整理完毕

芯跳不止 发表于 2022-9-30 07:19:18

厉害了,等成品了购买一套学习研究

xudongqiang 发表于 2022-9-30 08:31:28

牛啊!!!

zhang0352505 发表于 2022-9-30 09:30:17

牛批!这个真的很不错

有梦为马 发表于 2022-9-30 09:51:09

以上都是全缓冲的例子,类似lvgl支持的半缓冲,以至于四分之一缓冲,这样的是否支持呢,是否就要操作总线从LCD的GRAM里去读了

eric2013 发表于 2022-9-30 10:42:15

有梦为马 发表于 2022-9-30 09:51
以上都是全缓冲的例子,类似lvgl支持的半缓冲,以至于四分之一缓冲,这样的是否支持呢,是否就要操作总线从 ...

对,这种的不能直接读显存,要从GRAM里面读取。像RA8875就是这样,可以控制RA8875进入读像素模式。

amfy 发表于 2022-9-30 10:57:13

需要使用SWDIO接口嘛,还是直接使用SWD-DAT和SWD-CLK两根数据线?

eric2013 发表于 2022-9-30 16:06:54

amfy 发表于 2022-9-30 10:57
需要使用SWDIO接口嘛,还是直接使用SWD-DAT和SWD-CLK两根数据线?
SWDDAT就是SWDIO,你说的SWDIO应该是想说SWO专用引脚吧。我们没有用,就是两线制CLK和数据线。

guo_xb 发表于 2022-9-30 16:52:28

坐等H7更新,早日用上

eric2013 发表于 2022-10-9 12:48:31

硬件接口:8080 16位 RGB565,ILI9488驱动IC,480*320
https://img.anfulai.cn/dz/attachment/forum/202210/05/125849h8zyqihcs6bnpgsh.png

硬件接口:8080 16位 RGB565,RA8875驱动IC,480*272(截图中的白色和黑色方框是未更新字库Flash)
https://img.anfulai.cn/dz/attachment/forum/202210/08/091834zaw9ufcw2wwakisa.png

etter 发表于 2022-11-1 15:20:51

记得以前项目做了一个截图保存BMP格式文件的方案。把屏幕截图保存为bmp文件,通过串口传出来。当时压缩方案也有,就是没时间做成jpg格式。

eric2013 发表于 2022-11-2 10:09:20

etter 发表于 2022-11-1 15:20
记得以前项目做了一个截图保存BMP格式文件的方案。把屏幕截图保存为bmp文件,通过串口传出来。当时压缩方案 ...

对,之前的玩法都是这样的。

missfox 发表于 2023-1-7 13:15:11

坐等发布中,墙裂期待:lol

flyarm1 发表于 2023-5-18 15:04:53

来学习一下

inceboy 发表于 2024-4-13 20:32:09

HI 大佬
想請教一下.
這些GUI都有視頻播放了??
不過看EMWIN的做法好像是你得先把檔案分成視頻.EMF和.MP3
不是可以直接播放視頻檔案??
謝謝??

eric2013 发表于 2024-4-14 10:17:04

inceboy 发表于 2024-4-13 20:32
HI 大佬
想請教一下.
這些GUI都有視頻播放了??


实际上都一样的,我们这里是提前都提取出来了,方便使用,不过现在的emWin6.x已经支持AVI格式,可以不用提取emf了,仅提取音频即可。

像是要ffmpeg音视频处理,也是解析后分别处理的音频和视频。

inceboy 发表于 2024-4-16 01:36:49

HI 大佬

那這個您發的"
最新的emWin6.36例子模板,配套最新的AppWizard V1.42,这个库版本支持MDK,IAR和GCC,不限制IC厂家使用(2024-02-20) "
這個也有支援.AVI了嗎??

謝謝.

eric2013 发表于 2024-4-17 08:06:37

inceboy 发表于 2024-4-16 01:36
HI 大佬

那這個您發的"


对,很早之前的版本就支持了。

inceboy 发表于 2024-4-23 09:54:02

HI 大佬,目前試到有兩個問題:

1: 是PC上的模擬器MOVIE PLAYER OK了, 但是就是用EJECT去抓HDD裡的媒體檔.

然後APPWIZARD裡也試到有了, 但有個問題是它內部產出是小檔案,但我用自己匯入的大檔案時, 燒錄時KEIL會報

"OUT OF MEM",

因為產出的媒體檔太大,但它有個可以打勾放在外部記憶體的選項,但是那個路
徑不知道怎麼抓?? 然後打勾放在外部記憶體就不會報記憶體不夠了, 但是V7板開不了機.
不知道它是不是路徑指定不對找不到檔案就GUI都開不起來??

2:那是說我找的專案要把SD卡致能嗎???

因為說明書找不到其他線索,所以想和您請教一下,謝謝.

eric2013 发表于 2024-4-23 10:00:00

inceboy 发表于 2024-4-23 09:54
HI 大佬,目前試到有兩個問題:

1: 是PC上的模擬器MOVIE PLAYER OK了, 但是就是用EJECT去抓HDD裡的媒體檔. ...

生成的大数组前面加个const试试

inceboy 发表于 2024-4-25 16:22:19

本帖最后由 inceboy 于 2024-4-25 16:25 编辑

HI 大佬,好像己經有加了.....

APPWIZARD在產出數組時己經有加了.
如果在建媒體檔或匯入媒體檔時,那個EXT不打勾的話.
但產出的數值大小一定大於2M
最後還是得到一個"OUT OF MEM"......

但是加了EXT打勾的話, 那個路徑現在不明, 不知道怎麼樣讓它抓到.
所以變成
1:EXT不打勾, 產出的燒錄檔過大,
2:EXT打勾, 可以燒得進去, 但是開不了機,因為它可能嘗試去抓媒體檔在那裡,但是找丕到.

以上是APPZIARD的狀況.

我是想弄成像模擬器那樣子,一開機就是PLAYER
然後用EJECT去找SD的媒體檔來播這樣子.
摸索中..................

inceboy 发表于 2024-4-25 19:18:55

HI 大佬

有找到一些範例和解釋了, 大概的方向都是一定要想辦法帶進你的外部記憶體 TO EMWIN.
不管是SD或是SPI MEM, 不過看大家帶進的都是SD卡居多.
都要先把SD的檔案系統開起來才行.........

還在莫索中.................

inceboy 发表于 2024-4-25 22:48:38


HI 大老,搞錯了.它的APPZIZARD產出的影像.C檔是這樣寫的:
"File      : Logo_480x272.c
Purpose   : Conversion into c-array.
            Generated file do NOT edit!
---------------------------END-OF-HEADER------------------------------
*/

#include "AppWizard.h"

GUI_CONST_STORAGE unsigned char acLogo_480x272 = {
0x47, 0x55, 0x49, 0x4D, 0x4A, 0x50, 0x45, 0x47, 0x30, 0x00, 0xE0, 0x01, 0x10, 0x01, 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x09, 0x5C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x37, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x02, 0x00, 0x00, 0x88, 0x00, 0x87, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x10, 0x4C, 0x61, 0x76, 0x63, 0x35, 0x39, 0x2E, 0x33, 0x37, 0x2E, 0x31, 0x30, 0x30, 0x00, 0xFF, 0xDB,
0x00, 0x43, 0x00, 0x08, 0x0A, 0x0A, 0x0B, 0x0A, 0x0B, 0x0D, 0x0D, 0x0D..............."

把GUI_CONST_STORAGE 換成CONST 試試嗎??
謝謝.

eric2013 发表于 2024-4-26 09:30:54

inceboy 发表于 2024-4-25 22:48
HI 大老,搞錯了.它的APPZIZARD產出的影像.C檔是這樣寫的:
"File      : Logo_480x272.c
Purpose      ...

这个GUI_CONST_STORAGE是表示已经存到内部Flash了。貌似是你的Flash不足吧,这个图片还挺大,220K

inceboy 发表于 2024-4-26 11:38:09

eric2013 发表于 2024-4-26 09:30
这个GUI_CONST_STORAGE是表示已经存到内部Flash了。貌似是你的Flash不足吧,这个图片还挺大,220K
HI 大佬....不是,這一張己經是預設的SEGGER開機畫面.
展示MOIVE的功能.大概兩秒而己.
H7板的2M還放得下.

放上自己的視頻還不打勾EXT, 就一定超出2M.

inceboy 发表于 5 天前

HI 大佬
模擬器產出的原始碼好像不能照抄.......因為它好像會去找二個FS.H和RTOS.H的檔,但找半天找不到...........
然後又會有一個結構,FS_FILE * pFile 它也找不到,然後找半天這個結構是和SQL有關??
在FW也是找半天找不到, 一直錯.

看來只能從APP WIZARD下手, 因為唯一可以在V7板上跑的範例是從APPWIZARD產出的.
模擬器只能在PC上跑.

eric2013 发表于 5 天前

inceboy 发表于 2024-4-29 00:27
HI 大佬
模擬器產出的原始碼好像不能照抄.......因為它好像會去找二個FS.H和RTOS.H的檔,但找半天找不到... ...

这部分自己手动处理比较方便。

inceboy 发表于 5 天前

eric2013 发表于 2024-4-29 08:23
这部分自己手动处理比较方便。

YES 大佬
摸索中.

inceboy 发表于 5 天前

eric2013 发表于 2024-4-29 08:23
这部分自己手动处理比较方便。

Hi 大佬
目前參考APPZIZARD和模擬器和下面兩個範例:
"基于RTX+emWin+FlashFS+USB+TCPnet+CAN+Modbus的DEMO"--FOR F429
"RTX5+RL-USB+FL-FlashFS+RL-TCPnet+emWin6.x" --For V7

inceboy 发表于 前天 02:36

大佬
APP WIZARD裡好有提它用SD卡的FILESYSTEM是用:
emFile ?? 所以我得去匯入這個檔案系統囉?
页: [1]
查看完整版本: 无需内嵌代码的全新GUI截图方案在TouchGFX,ThreadX GUIX,emWin,LVGL,AWTK全部测试通过,含多缓冲方式玩法