一种实现简单易移植的格式化输出函功能的方法技术

技术编号:8347843 阅读:202 留言:0更新日期:2013-02-21 01:08
本发明专利技术公开了一种实现简单易移植的格式化输出函功能的方法,包括如下步骤:(1)在堆栈定义一个N字节的发送缓冲区print_buf;(2)通过库函数sprintf函数将需要格式化的内容输出到缓冲区print_buf内;(3)通过发送字符串的函数sendString函数输出缓冲区print_buf内的数据。本发明专利技术提供的一种实现简单易移植的格式化输出函功能的方法,使用宏定义功能,利用现有系统库函数sprintf,非常简单的实现了printf功能,实践表明,该方法可以兼容printf的功能,并且易于移植。

【技术实现步骤摘要】

本专利技术涉及计算机系统开发方法,尤其涉及。
技术介绍
格式化输出函数(printf函数)是计算机系统尤其是嵌入式系统开发过程中最常用、也是最重要的库函数之一,printf函数用于向控制台(屏幕、串口、telnet端口或JTAG 调试终端)打印信息,是系统调试过程中最常用的库函数之一。printf 函数的原型为 int printf (char*format, ),其中 format 为用户指定的格式,argument为不固定数量的变量,argument为整数、浮点数、字符串等类型。printf 函数用于输出调试信息,便于调试者查看系统运行信息,在嵌入式系统开发或移植过程中,printf函数通常使用系统内置函数,系统内置的printf函数通常会打印到系统默认的输出控制台,如果调试者希望输出的其他输出控制台,往往需要函数重定向或移植其他功能的格式化输出函数,这样会存在如下问题(I)不同平台或同一平台不同调试软件函数重定向规则不一致,甚至不提供函数重定向功能,导致移植困难;(2)如果自己实现printf函数功能,往往只能实现比较简单的格式化输出功能, 如只能支持打印整数、字符串,不支持长整形、浮点数,函数的名称不能为printf,只能改为其他名字,同样会导致系统移植困难。综上所述,printf函数在嵌入式系统调试中经常会导致移植繁琐,开发困难等问题。
技术实现思路
专利技术目的为了克服现有技术中存在的不足,本专利技术提供,利用宏定义以及现有的系统库函数sprintf函数,技术方案为实现上述目的,本专利技术采用的技术方案为,包括如下步骤(I)在堆栈定义一个N字节的发送缓冲区print_buf ;(2)通过库函数sprintf函数将需要格式化的内容输出到缓冲区print_buf内;(3)通过发送字符串的函数sendString函数输出缓冲区print_buf内的数据。优选的,所述缓冲区print_buf的大小可以根据需要进行调整,一般可以设计为 1024 字节,即 N=1024。上述方法中,sprintf函数的原型是 int sprintf (char*buffer, const char*format, …),其中buffer是存放格式化字符串的缓冲区,format为用户指定的格式,argument为不固定数量的变量,argument为整数、浮点数、字符串等类型;sendString函数是系统发送字符串的函数,可以由开发者自定义。该方法进行了一次宏定义,使用时将该宏定义放置在一个库文件中,使源文件中包含该库文件即可。有益效果本专利技术提供的,使用宏定义功能,利用现有系统库函数sprintf,非常简单的实现了 printf功能,实践表明,该方法可以兼容printf的功能,并且易于移植。具体实施方式下面结合实例对本专利技术作更进一步的说明。,包括如下步骤(I)在堆栈定义一个1024字节的发送缓冲区print_buf ;(2)通过库函数sprintf函数将需要格式化的内容输出到缓冲区print_buf内;(3)通过发送字符串的函数sendString函数输出缓冲区print_buf内的数据。 可以通过下面的程序语言实现上述方法#include<stdio.h>#deflne printf(…) do \unsigned char print_buf; \ sprintf((void*)print buf, VA ARGS_); \ sendString(prmtbuf) ;\}while(0)上述程序语言巧妙利用do while (O)结构、系统库函数sprintf函数、宏定义功能、可变参数宏(…)、宏定义中的—VA_ARGS—关键字,实现了 printf全部功能,在实际使用中,可以非常方便的进行系统移植和调试。比如系统调用printf如下printf(“the value is %d,,,1000);函数展开为do{unsigned char print_buf; sprintf((void*)print_buf, “the value is %d”,1000); sendString(print_buf);}while(0)以上所述仅是本专利技术的优选实施方式,应当指出对于本
的普通技术人员来说,在不脱离本专利技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本专利技术的保护范围。权利要求1.,其特征在于包括如下步骤(1)在堆栈定义一个N字节的发送缓冲区print_buf;(2)通过库函数sprintf函数将需要格式化的内容输出到缓冲区print_buf内;(3)通过发送字符串的函数sendString函数输出缓冲区print_buf内的数据。2.根据权利要求I所述的实现简单易移植的格式化输出函功能的方法,其特征在于 所述 N=1024。全文摘要本专利技术公开了,包括如下步骤(1)在堆栈定义一个N字节的发送缓冲区print_buf;(2)通过库函数sprintf函数将需要格式化的内容输出到缓冲区print_buf内;(3)通过发送字符串的函数sendString函数输出缓冲区print_buf内的数据。本专利技术提供的,使用宏定义功能,利用现有系统库函数sprintf,非常简单的实现了printf功能,实践表明,该方法可以兼容printf的功能,并且易于移植。文档编号G06F9/44GK102937894SQ20121039321公开日2013年2月20日 申请日期2012年10月16日 优先权日2012年10月16日专利技术者姚艳松, 郭立煌, 周建波, 雍太利, 朱学海, 陈靖公, 王程谦 申请人:国电南京自动化股份有限公司本文档来自技高网
...

【技术保护点】
一种实现简单易移植的格式化输出函功能的方法,其特征在于:包括如下步骤:(1)在堆栈定义一个N字节的发送缓冲区print_buf;(2)通过库函数sprintf函数将需要格式化的内容输出到缓冲区print_buf内;(3)通过发送字符串的函数sendString函数输出缓冲区print_buf内的数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:姚艳松郭立煌周建波雍太利朱学海陈靖公王程谦
申请(专利权)人:国电南京自动化股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1