现在的位置: 首页 > 综合 > 正文

GUI_成长历程_part1

2013年04月07日 ⁄ 综合 ⁄ 共 7193字 ⁄ 字号 评论关闭

名    称: GUI_成长历程_part1
文章内容:在windows模拟液晶显示屏
基本参数:物理尺寸 480*272
          像    素 16位色,565模式
运行环境:VS2008 VS2010
开发语言:标准C
模块构成:1 模拟FAT文件系统。以后可以加入真实的FAT
          2 uc/GUI  是主要的。 jpeg文件夹是为了显示JPEG图片,否则可以不要。

          3 opengl  详细见opengl_test工程
编    者:张永辉
日    期:2013年1月7日
//****************************************************************************************
1 文件目录层次
    \FAT                        模拟文件系统
        \Picture
            J326203.jpg         在存储器的文件
        fat.c                   *对文件的读取操作
        fat.h                   *
    \GUI
        \Config
            GUIConf.h           *必须的配置文件
            GUITouchConf.h      *触摸屏支持
            LCDConf.h           *
        \ConvertColor
            LCDP565.c           GUI390 565色
        \ConvertMomo            黑白转换,暂时不用
        \Core                   GUI390
            ...
        \Font                   GUI390
            F10S_1.c
            F10S_ASCII.c
            F6x8.c
            FComic24B_1.c
            FComic24B_ASCII.c
        \GuiTest
            b240150.h           图片数据
            b480272.h           图片数据
            J480272.h           图片数据
            GuiPicture.c        *显示图片测试 依赖:FAT+GUI
            GuiPicture.h        *
            GuiTouch.c          *触摸屏测试
            GuiTouch.h          *
            MainTask.c          GUI390
自带测试
            MicriumLogo.C       GUI390
            MicriumLogo_1bpp.c  GUI390
        \JPEG
            GUI_JPEG.c          必须的
            ...                 需要包含所有的
        \LCDDriver              修改此文件夹的内容,即可改平台
            GUI_X_1788.c        *依赖:OpenglLcd.h
            GUI_X_1788.h        *
            OpenglLcd.c         *最低层次提供显示屏和触摸相关函数
            OpenglLcd.h         *
            sim_1788.c          *模拟1788 依赖:OpenglLcd.h
            sim_1788.h          *
    \main
        main.c                  *
//****************************************************************************************
2 实现思路
    1 opengl使用2个线程(外部不看见),提供显示屏 触摸屏(鼠标模拟) 键盘
      所以,上层文件都可以脱离wdows平台。将调试好的程序,很容易移植到其他平台。

//****************************************************************************************
名    称: GUI_成长历程_part1
文章内容:main.c
          fat.h
          fat.c
          GUIConf.h
          GUITouchConf.h
          LCDConf.h
/*****************************************************************************************
文    名: main.c
/*****************************************************************************************
#include <Windows.h>
#include "GuiTouch.h"
#include "GuiPicture.h"
#include "GUI.h"
void MainTask(void);
int main(void)
{   

    GUI_Init();
    GuiThouchTest();
    GuiPictureTest();
    MainTask();
    return 0;
}
/*****************************************************************************************
文    件:fat.h
功    能:模拟文件系统
*****************************************************************************************/
#ifndef __FAT_H_
#define __FAT_H_
//****************************************************************************************
void FatTest(void);
void FatInit(void);
unsigned int FatReadJpegFile(unsigned char *tmp,unsigned int tmpLen,const unsigned char *filename);
unsigned int FatGetJpegLen(const unsigned char *filename);
//****************************************************************************************
#endif

/*****************************************************************************************
文    件:fat.h
功    能:模拟文件系统
编    者:张永辉 2013年1月4日
*****************************************************************************************/
#include <stdio.h>
#include "FAT.h"

void FatTest(void)
{}
/*****************************************************************************************
功    能:FAT初始化
*****************************************************************************************/
void FatInit(void)
{   ;
}
/*****************************************************************************************
功    能:读取JPEG图片数据
入    参:tmp      装载数据的数组。
          tmpLen   最大接收长度。
          filename 文件名
出    参:已经读取的长度。
          =0 表示读取失败 或文件不存在
*****************************************************************************************/
unsigned int FatReadJpegFile(unsigned char *tmp,unsigned int tmpLen,const unsigned char *filename)
{
    FILE *fp;
    unsigned int filelen;

    //以2进制打开。经验:以“r”打开,部分数据读出错了的。
    fopen_s(&fp,filename,"rb");

    if(fp==NULL)
    {   //文件打开失败
        return 0;
    }

    //读取文件,当前位置在末尾了
    fread(tmp,tmpLen,1,fp);         //读取数据

    //当前位置即长度
    filelen = ftell(fp);            //数据长度
    fclose(fp);

    filelen = (tmpLen < filelen) ? tmpLen:filelen;
    return filelen;
}
/*****************************************************************************************
功    能:获取JPEG图片数据的长度, 单位:字节
入    参:filename 文件名
出    参:数据的长度
          =0 表示读取失败 或文件不存在
*****************************************************************************************/
unsigned int FatGetJpegLen(const unsigned char *filename)
{
    FILE *fp;
    unsigned int filelen;

    fopen_s(&fp,filename,"rb");

    if(fp==NULL)
    {   //文件打开失败
        return 0;
    }

    fseek (fp, 0, SEEK_END);
    //获取文件当前位置
    filelen = ftell(fp);            //数据长度
    fclose(fp);
    return filelen;
}

/***************************************************************************************************
File    : GUIConf.h
功    能: GUI高层配置
*/
#ifndef GUICONF_H
#define GUICONF_H

#define GUI_OS                    (0)   /* Compile with multitasking support */
#define GUI_SUPPORT_TOUCH         (1)   /* Support a touch screen (req. win-manager) */
#define GUI_SUPPORT_UNICODE       (0)   /* Support mixed ASCII/UNICODE strings */

#define GUI_DEFAULT_FONT          &GUI_Font6x8
#define GUI_ALLOC_SIZE            2048  /* Size of dynamic memory ... For WM and memory devices*/

/*****************************************************************************************
*         Configuration of available packages
*/
#define GUI_WINSUPPORT            0     /* Window manager package available */
#define GUI_SUPPORT_MEMDEV        0     /* Memory devices available */
#define GUI_SUPPORT_AA            0     /* Anti aliasing available */
#undef WIN32
//****************************************************************************************
#endif

/*****************************************************************************************
文    件:GUITouchConf.h
*****************************************************************************************/
#ifndef GUITOUCH_CONF_H
#define GUITOUCH_CONF_H

#define GUI_TOUCH_SWAP_XY    0      //=0 xy轴不交换,=1交换
#define GUI_TOUCH_MIRROR_X   0      //x轴镜像
#define GUI_TOUCH_MIRROR_Y   0      //Y轴镜像

#define GUI_TOUCH_AD_LEFT   0       //AD转换的X最小值
#define GUI_TOUCH_AD_RIGHT  480     //AD转换的X最大值
#define GUI_TOUCH_AD_TOP    0       //AD转换的Y最小值
#define GUI_TOUCH_AD_BOTTPM 272     //AD转换的Y最大值

#define GUI_TOUCH_XSIZE     LCD_XSIZE
#define GUI_TOUCH_YSIZE     LCD_YSIZE

#endif /* GUITOUCH_CONF_H */

/*****************************************************************************************
文    件:LCDConf.h
功    能: LCD配置
*****************************************************************************************/
#ifndef LCDCONF_H
#define LCDCONF_H
/*****************************************************************************************
*                   General configuration of LCD
*****************************************************************************************/
#define LCD_XSIZE      (480)                //* X-resolution of LCD, Logical coor. */
#define LCD_YSIZE      (272)                //* Y-resolution of LCD, Logical coor. */

#define LCD_BITSPERPIXEL (16)               //16位颜色 按565模式
#define LCD_CONTROLLER  (1788)              //控制器 LPC1788
//****************************************************************************************
#endif

抱歉!评论已关闭.