datasheet

LPC54608生成PDF文件

2018-10-23来源: eefocus 关键字:LPC54608  PDF文件

主机环境:Win10 64bit


开发环境:MDK5.23


目标板:LPC54608


之前在NXP论坛里得到了一块LPC54608开发板,最吸引人的地方是带了一块屏,如下图:

这也是第一次接触NXP的开发板,之前一直都是用的ST的MCU,NXP的库跟ST的还是差别蛮大的,自我感觉ST的开发入手要快一些,而NXP的相对慢一些,入手开发板之后就看了库里面自带的一些基本驱动例程,只熟悉了一下基本外设的开发,之前有次在群里看到有人询问单片机生成PDF的问题,突然觉得有些兴趣所以就有了前面的libHaru学习笔记,libHaru库是一个十分不错的库,对于PDF的实现来说也是相当齐全的,在PC上使用是完全没有问题的,但在资源紧张的MCU上,还是有些困难的,因此就想找一下适用于MCU的生成PDF的库,结果不太理想,都是一些需要实现动态内存管理的平台才行,而且这些库都是把生成的数据放在了内存中,直到保存文件时才写入到文件中,这对于一般只有几十或者几百KB级别的单片机来说更不可能了,于是乎,萌发了自己动手写一个基本的能用于MCU的生成PDF文件的库,我称之为libpdf,其中的接口参考了libHaru,如下所示:

当然有些接口还没有实现,但基本的操作还是可以的,等以后再逐渐完善吧,pdflib是生成pdf文件的,因此要基于Fatfs来实现文件的操作,pdflib库只有两个文件,也相应的参考了pdfgen库,该库在后面有链接,


头文件如下:



#ifndef __PDFLIB_H__

#define __PDFLIB_H__

 

#include "ff.h"

/*----- standard C library functions -----------------------------------------*/

 

#define LPDF_FOPEN                  f_open

#define LPDF_FCLOSE                 f_close

#define LPDF_FREAD                  f_read

#define LPDF_FWRITE                 f_write

#define LPDF_FFLUSH                 f_sync

#define LPDF_FSEEK                  f_seek

#define LPDF_FTELL                  f_tell

#define LPDF_FEOF                   f_eof

#define LPDF_FERROR                 f_error

#define LPDF_RENAME                 f_rename

#define LPDF_REMOVE                 f_unlink

#define LPDF_MALLOC                 malloc

#define LPDF_FREE                   free

#define LPDF_FILE                   FIL

#define LPDF_TIME                   time

#define LPDF_PRINTF                 printf

#define LPDF_SPRINTF                sprintf

#define LPDF_FPRINTF                f_printf

#define LPDF_VOID                   void

#define LPDF_SIN                    sin

#define LPDF_COS                    cos

 

/*  native OS integer types */

typedef  signed int          LPDF_INT;

typedef  unsigned int        LPDF_UINT;

 

 

/*  32bit integer types

 */

typedef  signed int          LPDF_INT32;

typedef  unsigned int        LPDF_UINT32;

 

 

/*  16bit integer types

 */

typedef  signed short        LPDF_INT16;

typedef  unsigned short      LPDF_UINT16;

 

 

/*  8bit integer types

 */

typedef  signed char         LPDF_INT8;

typedef  unsigned char       LPDF_UINT8;

 

 

/*  8bit binary types

 */

typedef  unsigned char       LPDF_BYTE;

 

 

/*  float type (32bit IEEE754)

 */

typedef  float               LPDF_REAL;

 

 

/*  double type (64bit IEEE754)

 */

typedef  double              LPDF_DOUBLE;

 

 

/*  boolean type (0: False, !0: True)

 */

typedef  signed int          LPDF_BOOL;

 

 

/*  error-no type (32bit unsigned integer)

 */

typedef  unsigned long       LPDF_STATUS;

 

#define LPDF_OK                     0

#define LPDF_FAILED                 1

 

/*----- font state -----------------------------------------------------------*/

#define   LPDF_FONT_INVALID                 0x00FF

#define   LPDF_FONT_COURIER                 0x0000

#define   LPDF_FONT_COURIER_B               0x0001

#define   LPDF_FONT_COURIER_O               0x0002

#define   LPDF_FONT_COURIER_OB              0x0003

#define   LPDF_FONT_HELVETICA               0x0004

#define   LPDF_FONT_HELVETICA_B             0x0005

#define   LPDF_FONT_HELVETICA_O             0x0006

#define   LPDF_FONT_HELVETICA_BO            0x0007

#define   LPDF_FONT_TIMES_R                 0x0008

#define   LPDF_FONT_TIMES_B                 0x0009

#define   LPDF_FONT_TIMES_I                 0x000A

#define   LPDF_FONT_TIMES_BI                0x000B

#define   LPDF_FONT_SYMBOL                  0x000C

#define   LPDF_FONT_ZAP                     0x000D

/*----- Graphis mode ---------------------------------------------------------*/

#define   LPDF_GMODE_PAGE_DESCRIPTION       0x0001

#define   LPDF_GMODE_PATH_OBJECT            0x0002

#define   LPDF_GMODE_TEXT_OBJECT            0x0004

#define   LPDF_GMODE_CLIPPING_PATH          0x0008

#define   LPDF_GMODE_SHADING                0x0010

#define   LPDF_GMODE_INLINE_IMAGE           0x0020

#define   LPDF_GMODE_EXTERNAL_OBJECT        0x0040

#define   LPDF_GMODE_INVALID                0x0080

#define   LPDF_GMODE_OVER                   0x0100

 

#define OBJ_MAX_NUM     256

 

/* Page的结构信息是否需要树形结构 */

typedef enum 

{

    OBJ_info,

    OBJ_stream,

    OBJ_font,

    OBJ_page,

    OBJ_catalog,

    OBJ_pages,

    OBJ_image,

}LPDF_ObjType;

 

typedef struct

{

    LPDF_ObjType objType;

    LPDF_UINT16 objIdx;

    LPDF_UINT16 height;

    LPDF_UINT16 width;

    LPDF_UINT16 length;

    LPDF_UINT gMode;

    LPDF_BYTE fontType;

    LPDF_BYTE fontSize;

    LPDF_BYTE pState;

    LPDF_VOID *doc;

}LPDF_Obj;

 

typedef struct

{

    LPDF_Obj obj[OBJ_MAX_NUM];

    LPDF_UINT32 offset;

    LPDF_UINT16 objNumber;

    LPDF_FILE file;

}LPDF_Doc_Rec;

 

typedef LPDF_Doc_Rec *LPDF_Doc;

typedef LPDF_Obj *LPDF_Page;

typedef LPDF_Obj *LPDF_Image;

extern const char *font_list[];

/*----- LPDF Interfaces-------------------------------------------------------*/

const char * LPDF_GetVersion(void);

LPDF_Doc LPDF_New(void);

LPDF_Page LPDF_AddPage(LPDF_Doc pdf);

LPDF_STATUS LPDF_SaveToFile(LPDF_Doc pdf,const char *file_name);

LPDF_STATUS LPDF_Free(LPDF_Doc pdf);

LPDF_STATUS LPDF_Page_CheckState(LPDF_Page page, LPDF_UINT mode);

LPDF_STATUS LPDF_Page_SetFontAndSize(LPDF_Page page,

                           const char *font_name, LPDF_UINT8 size);

LPDF_STATUS LPDF_Page_SaveParams(LPDF_Page page);

LPDF_STATUS LPDF_Page_SaveContext(LPDF_Page page);

LPDF_STATUS LPDF_Page_BeginText(LPDF_Page page);

LPDF_STATUS LPDF_Page_EndText(LPDF_Page page);

LPDF_UINT16 LPDF_Page_GetHeight(LPDF_Page page);

LPDF_UINT16 LPDF_Page_GetWidth(LPDF_Page page);

LPDF_STATUS LPDF_Page_SetHeight(LPDF_Page page, LPDF_UINT16 value);

LPDF_STATUS LPDF_Page_SetWidth(LPDF_Page page, LPDF_UINT16 value);

LPDF_STATUS LPDF_Page_ShowText(LPDF_Page page, const char *text);

LPDF_STATUS LPDF_Page_MoveTextPos(LPDF_Page page,

                         LPDF_INT x, LPDF_INT y);

LPDF_STATUS LPDF_Page_TextOut(LPDF_Page page, 

                         LPDF_UINT16 x, LPDF_UINT16 y,

                         const char *text);

LPDF_STATUS LPDF_Page_SetRGBStroke(LPDF_Page page,

                         LPDF_REAL r,

                         LPDF_REAL g,

[1] [2] [3] [4]

关键字:LPC54608  PDF文件

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news102341971.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32学习笔记之USB工程目录文件分析
下一篇:ARM处理器工作模式及寄存器结构

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

关于LPC1768的存储地址、运行地址、向量地址

对于编写程序而言,程序的运行地址很重要。默认情况下都是直接按照软件的模块进行设置即可,此前并没有太过于关心,最近在研究iap的时候需要做到这个方面的改进。以NXP官方提供的IAR例程为例,IAR既可以做flash的调试还支持SRAM的调试,那这是如何做到的呢?在程序中,有以下的一段切换代码:在FLASH模式下:在RAM模式下:翻译以后,可以得到以下内容:当FLASH调试时,设置向量地址为:0x00000000;当RAM   调试时, 设置向量地址为:0x10000000;LPC1768的为512K的flash和32K的sram,其地址如下图所示:因此答案很清除,当要在flash调试时,将向量地址指向flash
发表于 2018-11-30
关于LPC1768的存储地址、运行地址、向量地址

LPC1788 SystemInit函数分析

; /* EMC使用的时钟速率是CPU的一半               */  LPC_SC->PCLKSEL   = PCLKSEL_Val;      /* 输入时钟120M经过2分频产生APB时钟60M         */   LPC_SC->PCONP     = PCONP_Val;        /* Power Control
发表于 2018-11-30

LPC1768菜鸟学习之ADC

是否转换完成才能得到转换后的数据,            data=( LPC_ADC->ADGDR >> 4) &0xFFF;因为ADGDR的31位,A/D转换结束置1,当数据被读出就自动清0了。 ADC_Data = (ADC_Data * 3300)/4096;这句话的意思就是在参考电压3300mv下得到的电压,4960=,12位AD的意思,不过看网上说应该4059好些,理由摘抄如下:ADC采集出来的数据,是0~4095,不会出现4096这个值,如果你4096等分,那就不能得到3.3V了。会比3.3V少那么一点点。按4095等分
发表于 2018-11-30

LPC11XX 使用keil for arm 和j-link连接问题

、 J-link连接问题。 Lpc1114采用的是SW方式连接。Port里改sw方式。不能使用jatg方式做链接。否则会出现如下问题 2、 使用SW方式后,还要修改 3、 全勾或全不选。
发表于 2018-11-30
LPC11XX 使用keil for arm 和j-link连接问题

Keil4 Ulink2调试Cortex-M3 LPC1788的配置

上两张图,懂的自然看得懂。 
发表于 2018-11-30
Keil4 Ulink2调试Cortex-M3 LPC1788的配置

LPC2000 启动代码Start.s文件简要分析

;  EQU     1PLLCFG_Val      EQU     0x00000024 ;表示向CFG配置寄存器写入的值为0 01 00100,跟系统所需的频率有关。     ;LPC2119的主频最高是60MHz,振荡器的主频是10MHz     ;分频值为1,倍频值为4,所以主频为40Mhz
发表于 2018-11-29

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">