资深版主
- 积分
- 12010
- 金钱
- 12010
- 注册时间
- 2013-9-10
- 在线时间
- 427 小时
|
本帖最后由 八度空间 于 2016-1-10 12:32 编辑
看emWin手册,看到这API
可以实现截屏了,赶紧开工,编写代码(工程来自这里http://www.openedv.com/thread-52354-1-1.html),测试,呵呵,小有成就
[mw_shl_code=applescript,true]/**
*****************************************************************************
* @Name : emWin向文件写入一个字节数据
*
* @Brief : none
*
* @Input : Data: 要写入的数据
* *p: 路径
*
* @Output : none
*
* @Return : none
*****************************************************************************
**/
static void _WriteByte2File(U8 Data, void * p)
{
UINT nWrite = 0;
f_write((FIL *)p, (TCHAR *)&Data, 1, &nWrite);
}
/**
*****************************************************************************
* @Name : emWin得到一幅图片并写入存储器
*
* @Brief : none
*
* @Input : *FileName: 文件名称
* (x0, y0): 起点坐标
* xSize: 图片X方向大小
* ySize: 图片Y方向大小
*
* @Output : none
*
* @Return : none
*****************************************************************************
**/
void emWin_CreateBMPPicture(uint8_t * FileName, int x0, int y0, int xSize, int ySize)
{
static FIL hFile;
GUI_COLOR forecolor, backcolor;
//
//保险起见,先保存一下
//
forecolor = GUI_GetColor(); //获取前景颜色
backcolor = GUI_GetBkColor(); //获取背景颜色
//
//创建一个文件
//
f_open(&hFile, (const TCHAR *)FileName, FA_READ | FA_WRITE | FA_CREATE_ALWAYS);
GUI_BMP_SerializeEx(_WriteByte2File, x0, y0, xSize, ySize, &hFile);
f_close(&hFile); //写完,关闭文件
GUI_SetColor(forecolor); //恢复前景颜色
GUI_SetBkColor(backcolor); //恢复背景颜色
}[/mw_shl_code]
实现上面两个函数,添加FatFs代码文件(直接用原子哥的),在main函数里面添加代码,通过按键触发截屏,按键任务代码如下
[mw_shl_code=applescript,true]/**
*****************************************************************************
* @Name : OS创建按键任务
*
* @Brief : none
*
* @Input : none
*
* @Output : none
*
* @Return : none
*****************************************************************************
**/
void Key_Task(void * pdata)
{
u8 i = 0;
u8 buf[100];
pdata = pdata;
while (1)
{
OSTimeDlyHMSM(0, 0, 0, 20); //延时500ms
if (KEY0 == 0)
{
OSSchedLock(); //调度器上锁
LED1 = 0; //亮灯表示正在截屏
sprintf ((char *)buf, "0:/SCREENSHORT_%d.bmp", i);
emWin_CreateBMPPicture(buf, 0, 0, 800, 480); //截屏
LED1 = 1; //完成了,灭灯
i++;
OSSchedUnlock(); //调度器解锁
}
};
}[/mw_shl_code]
下载板子测试,全部的demo都开了,效果还可以,下面是样张
|
|