《一种实现简单易移植的格式化输出函功能的方法.pdf》由会员分享,可在线阅读,更多相关《一种实现简单易移植的格式化输出函功能的方法.pdf(4页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102937894 A (43)申请公布日 2013.02.20 CN 102937894 A *CN102937894A* (21)申请号 201210393217.4 (22)申请日 2012.10.16 G06F 9/44(2006.01) (71)申请人 国电南京自动化股份有限公司 地址 210009 江苏省南京市鼓楼区新模范马 路 38 号 (72)发明人 姚艳松 郭立煌 周建波 雍太利 朱学海 陈靖公 王程谦 (74)专利代理机构 南京纵横知识产权代理有限 公司 32224 代理人 董建林 (54) 发明名称 一种实现简单易移植的格式化输出函功能的 方法 。
2、(57) 摘要 本发明公开了一种实现简单易移植的格式化 输出函功能的方法, 包括如下步骤 :(1) 在堆栈定 义一个 N 字节的发送缓冲区 print_buf ;(2) 通过 库函数 sprintf 函数将需要格式化的内容输出到 缓冲区 print_buf 内 ;(3)通过发送字符串的函 数sendString函数输出缓冲区print_buf内的数 据。本发明提供的一种实现简单易移植的格式化 输出函功能的方法, 使用宏定义功能, 利用现有系 统库函数 sprintf, 非常简单的实现了 printf 功 能, 实践表明, 该方法可以兼容 printf 的功能, 并 且易于移植。 (51)Int。
3、.Cl. 权利要求书 1 页 说明书 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 2 页 1/1 页 2 1. 一种实现简单易移植的格式化输出函功能的方法, 其特征在于 : 包括如下步骤 : (1) 在堆栈定义一个 N 字节的发送缓冲区 print_buf ; (2) 通过库函数 sprintf 函数将需要格式化的内容输出到缓冲区 print_buf 内 ; (3) 通过发送字符串的函数 sendString 函数输出缓冲区 print_buf 内的数据。 2. 根据权利要求 1 所述的实现简单易移植的格式化输出函功能的方法, 其特征在于 :。
4、 所述 N=1024。 权 利 要 求 书 CN 102937894 A 2 1/2 页 3 一种实现简单易移植的格式化输出函功能的方法 技术领域 0001 本发明涉及计算机系统开发方法, 尤其涉及一种实现简单易移植的格式化输出函 功能的方法。 背景技术 0002 格式化输出函数 (printf 函数) 是计算机系统尤其是嵌入式系统开发过程中最常 用、 也是最重要的库函数之一, printf 函数用于向控制台 (屏幕、 串口、 telnet 端口或 JTAG 调试终端) 打印信息, 是系统调试过程中最常用的库函数之一。 0003 printf 函数的原型为 int printf(char*fo。
5、rmat,argument), 其中 format 为 用户指定的格式, argument 为不固定数量的变量, argument 为整数、 浮点数、 字符串等类 型。 0004 printf 函数用于输出调试信息, 便于调试者查看系统运行信息, 在嵌入式系统开 发或移植过程中, printf 函数通常使用系统内置函数, 系统内置的 printf 函数通常会打印 到系统默认的输出控制台, 如果调试者希望输出的其他输出控制台, 往往需要函数重定向 或移植其他功能的格式化输出函数, 这样会存在如下问题 : 0005 (1) 不同平台或同一平台不同调试软件函数重定向规则不一致, 甚至不提供函数 重定。
6、向功能, 导致移植困难 ; 0006 (2) 如果自己实现 printf 函数功能, 往往只能实现比较简单的格式化输出功能, 如只能支持打印整数、 字符串, 不支持长整形、 浮点数, 函数的名称不能为 printf, 只能改为 其他名字, 同样会导致系统移植困难。 0007 综上所述, printf 函数在嵌入式系统调试中经常会导致移植繁琐, 开发困难等问 题。 发明内容 0008 发明目的 : 为了克服现有技术中存在的不足, 本发明提供一种实现简单易移植的 格式化输出函功能的方法, 利用宏定义以及现有的系统库函数 sprintf 函数, 0009 技术方案 : 为实现上述目的, 本发明采用的。
7、技术方案为 : 0010 一种实现简单易移植的格式化输出函功能的方法, 包括如下步骤 : 0011 (1) 在堆栈定义一个 N 字节的发送缓冲区 print_buf ; 0012 (2) 通过库函数 sprintf 函数将需要格式化的内容输出到缓冲区 print_buf 内 ; 0013 (3) 通过发送字符串的函数 sendString 函数输出缓冲区 print_buf 内的数据。 0014 优选的, 所述缓冲区 print_buf 的大小可以根据需要进行调整, 一般可以设计为 1024 字节, 即 N=1024。 0015 上 述 方 法 中, sprintf 函 数 的 原 型 是 i。
8、nt sprintf(char*buffer,const char*format,argument), 其中 buffer 是存放格式化字符串的缓冲区, format 为用 户指定的格式, argument 为不固定数量的变量, argument 为整数、 浮点数、 字符串等类型 ; 说 明 书 CN 102937894 A 3 2/2 页 4 sendString 函数是系统发送字符串的函数, 可以由开发者自定义。该方法进行了一次宏定 义, 使用时将该宏定义放置在一个库文件中, 使源文件中包含该库文件即可。 0016 有益效果 : 本发明提供的一种实现简单易移植的格式化输出函功能的方法, 使。
9、用 宏定义功能, 利用现有系统库函数 sprintf, 非常简单的实现了 printf 功能, 实践表明, 该 方法可以兼容 printf 的功能, 并且易于移植。 具体实施方式 0017 下面结合实例对本发明作更进一步的说明。 0018 一种实现简单易移植的格式化输出函功能的方法, 包括如下步骤 : 0019 (1) 在堆栈定义一个 1024 字节的发送缓冲区 print_buf ; 0020 (2) 通过库函数 sprintf 函数将需要格式化的内容输出到缓冲区 print_buf 内 ; 0021 (3) 通过发送字符串的函数 sendString 函数输出缓冲区 print_buf 内。
10、的数据。 0022 可以通过下面的程序语言实现上述方法 : 0023 0024 上述程序语言巧妙利用 do while(0) 结构、 系统库函数 sprintf 函数、 宏定义功 能、 可变参数宏 ()、 宏定义中的 _VA_ARGS_ 关键字, 实现了 printf 全部功能, 在实际使 用中, 可以非常方便的进行系统移植和调试。 0025 比如系统调用 printf 如下 : 0026 0027 以上所述仅是本发明的优选实施方式, 应当指出 : 对于本技术领域的普通技术人 员来说, 在不脱离本发明原理的前提下, 还可以做出若干改进和润饰, 这些改进和润饰也应 视为本发明的保护范围。 说 明 书 CN 102937894 A 4 。