OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12889|回复: 40

myprintf格式化输出液晶迎来了V2.0版本

[复制链接]

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-12-9 13:03:34 | 显示全部楼层 |阅读模式
非常感谢网友“solo”的支持与反馈,非常感谢!!!

此版本主要更新功能如下红色字体所示,修正了几个bug,显示字符串的时候,中英文混合一起输出还是有个bug,还没什么好的方法实现,最近没时间折腾了,过段时间在仔细研究研究,呵呵

测试平台为战舰STM32开发板(我的战舰已经出掉,手上剩下原子哥的探索者了),测试工程没放上来
谍照这里有首版的http://www.openedv.com/posts/list/38085.htm


一、关于使用默认参数说明
    1.1 在“my_printf.h”文件中集合了相关的宏定义开关,使用于使用不同功能的场合
    1.2 默认使用的显示液晶分辨率参数为:横向240,纵向320,需要修改请调用“myPrintf_SetLCDSize()”函数进行设置
    1.3 默认使用的英文字符显示大小为:宽度8,高度16,需要修改请调用“myPrintf_SetCharSize()”函数进行修改
    1.4 默认支持中文显示开关为关闭,需要请将其设置为1
    1.5 默认使用的中文显示大小为:宽度16,高度16,需要修改请调用“myPrintf_SetGBKSize()”函数进行修改

二、关于移植方法
    2.1 移植方法非常简单,在“my_printf_port.c”文件中按照提示添加合适的函数即可
            需要提供的函数有:
            1、显示单个英文字符函数;
            2、显示单个汉字函数;
            3、显示器初始化函数(可不用)
            4、液晶带颜色设置打点函数(需打开myPrintf_ShowMade_EN或者myPrintf_ShowICO_EN,否则不需增加)
    2.2 在“my_printf.h”文件中集合了各功能开关宏定义,按需打开即可

三、用户调用函数使用说明
    3.1 myPrintf_Init()函数
            这个函数可以不使用,当需要集合的时候添加,视情况而定。
    3.2 myPrintf_GotoxPhys()函数
            调用此函数设置的是横坐标。
    3.3 myPrintf_GotoyPhys()函数
            调用此函数设置的是纵坐标。
    3.4 myPrintf_GotoxyPhys()函数
            调用此函数一次性设置好横坐标和纵坐标
    3.5 myPrintf_SetMode()函数
            调用此函数设置显示操作的各种模式。
            mode形参为8位:
            [0,0]: 显示模式设置,这个和移植的显示单个英文字符、中文汉字函数中的mode相关,当移植的函数没有,可忽略此位
            [1,1]: 显示数字的时候,高位为0是否显示。0: 不显示;1: 显示
            [2,2]: 0: 左端补空格,1: 右端补空格。缺省值为0
            [3,3]: 显示小数时此位功能。0: 补空格,1: 补0,缺省值为0
            [7,4]: 保留
    3.6 myPrintf_GetxPhys()函数
            调用此函数返回当前横坐标位置。
    3.7 myPrintf_GetyPhys()函数
            调用此函数返回当前纵坐标位置。
    3.8 myPrintf_GetCharNum()函数
            调用此函数返回的是本次总共输出字符个数。
    3.9 myPrintf_SetCharSize()函数
            调用此函数设置英文字符大小。
    3.10 myPrintf_SetGBKSize()函数
            调用此函数设置中文字符大小。
    3.11 myPrintf_SetLCDSize()函数
            调用此函数设置显示液晶的分辨率。
    3.12 myPrintf()函数
            此函数实现了基本的液晶显示格式,具体格式使用请参照下一节。

四、输出格式使用说明
    4.1 支持回车功能“\n”,回到上次设置的坐标起点,主要为横坐标,当纵坐标超过界限时,回到原点
    4.2 支持换行功能“\r”,横坐标回到0,纵坐标下一行显示
    4.3 支持Tab功能“\t”,默认四个ASCII字符宽度
    4.4 直接打印字符串,支持中文(需打开显示中文开关)
    4.5 输出字符格式“%c”
    4.6 输出百分比符号“%%”
    4.7 输出十进制,有正负之分
            4.7.1 直接输出十进制“%d”
            4.7.2 输出指定字段宽度十进制“%md”
                    当输入十进制数长度 < m时,左端补空格,否则按实际位数输出,不支持右端补空格。
    4.8 输出字符串
            4.8.1 直接输出字符串“%s或%S”,支持中文(需打开显示中文开关)
            4.8.2 输出指定长度字符串,左端补空格“%ms或%mS或%5s”
                    输出字符串占m列,当字符串本身长度 < m时,左端补空格,否则按字符串实际长度输出。
                    ◆支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度
            4.8.3 输出指定长度字符串,右端补空格“%-ms或%-mS或%-5s”
                    输出字符串占m列,当字符串本身长度 < m时,输出字符串左靠齐,右端补空格。
                    ◆支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度
            4.8.4 输出指定长度字符串,左端补空格“%m.ns或%m.nS或%10.5s”
                    输出字符串占m列,但只取字符串左端n个字符输出,输出这n个字符右靠齐,左端补空格,如果n > m时,保证输出n个字符。
                    ◆支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度
            4.8.5 输出指定长度字符串,右端补空格“%-m.ns或%-m.nS或%-10.5s”
                    输出字符串占m列,但只取字符串左端n个字符输出,输出这n个字符左靠齐,右端补空格,如果n > m时,保证输出n个字符。
                    ◆支持中文(需打开显示中文开关),左端补充空格宽度为英文字符宽度
    4.9 输出浮点数,有正负之分,默认域宽(包括小数点在内)为7,小数精度为3,域宽和精度可变时,限制最大的域宽是8,精度为6
            4.9.1 直接输出浮点数“%f”,小数位不足3位的,后面补0,不足域宽左端补0或空格(可设置),详见3.5说明
                    比如输出浮点数3.1,最终的显示结果为:3.100
            4.9.2 输出一定长度和精度的浮点数“%12.5f”,其中12为域宽,5为精度,不足域宽左端补0或空格(可设置),详见3.5说明
            4.9.3 输出长度和精度可变的浮点数“%m.nf”,其中m为域宽,n为精度,不足域宽左端补0或空格(可设置),详见3.5说明
            4.9.4 输出长度和精度可变的浮点数“%-m.nf”
                    输出占m列,有n位小数,输出数值长度 < m时,右端填充0或者空格(可设置),具体由结构体mode中的bit3进行控制,详见3.5说明。
            4.9.5 输出由整数转换得来的小数“%tf”,除了前面多了一个t,其他和“%f”格式差不多
    4.10 输出八进制数,默认前面显示“0”
            4.10.1 直接输出八进制“%o”
            4.10.2 输出指定字段宽度八进制“%mo”,当输入八进制数长度 < m时,左端补空格,否则按实际位数输出
    4.11 输出十六进制数,默认前面显示“0x”
            按实际长度输出。
    4.12 指数形式输出实数(此功能不是很完善
            4.12.1 直接输出“%e”,默认长度和%f默认长度一样,小数精度默认为6位,指数占用4位
            4.12.2 长度和精度可调输出“%m.ne”,最大宽度15,最大精度14,小数不足精度要求的后面补“0”
    4.13 显示自定义类
            涉及到得函数文件“my_printf_made.c”和“my_printf_ico.c”,可按需增加或减少数组。
                4.13.1 显示自定义数字,提供字体有:普通形式数字32 * 16,四正形式数字32 * 16,相关显示标号宏定义在myPrintf.h文件中
                        显示格式为:"%ns",其中“n”代表的是数字形式,“s”代表的是大小
                4.13.2 显示自定义单色ico图标,提供大小有:16 * 16正方形,16 * 32卧倒长方形,相关显示标号宏定义在myPrintf.h文件中
                        显示格式为:"%is",其中“i”代表的是ico意思,“s”代表的是大小

具体使用在压缩包里面doc文件夹也有说明,同样的,不喜欢的朋友也假装喜欢的样子,也是可以的,嘿嘿

还是非常感谢各位朋友的支持与反馈

my_printf.rar

19.44 KB, 下载次数: 683

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-12-2
在线时间
11 小时
发表于 2014-12-22 19:35:26 | 显示全部楼层
这个怎么没人顶呢,顶起~~必须的!!!
生命在于运动
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2014-12-23 08:09:36 | 显示全部楼层
升级到V2.2版本,主要完善了下面功能:
1、增加%bcd格式输出,b代表要显示的BCD码,c代表要显示的长度,d代表的是显示大小
2、修正port接口函数,增加字体大小设置形参
3、引出几个用到的转换函数
4、修正%d、%md格式左靠齐,右端补空格,多位数变为1位数时,上次多余显示没清掉的bug
5、增加%-md格式,当输入十进制数长度 < m时,右端靠齐,左端补空格,否则按实际位数输出
6、修正_myPrintf_Get_NumLen()函数,输入数字为0时,返回一位有效位
7、修正_myPrintf_PutDec()函数,当输入数字是0时,直接输出0字符
8、增加ICO图标,天线符号、蓝牙图标、摄氏度符号、华氏度符号、静音符号
9、删掉myPrintf_Init()初始化函数,直接调用用户显示驱动初始化函数
10、完善%e、%m.ne、%.ne格式输出,支持指数形式输出的浮点数有:123.456789、1.2345、0.12345、0.0012345,当显示超过域宽时,裁剪小数精度位输出
11、将获取字符串函数通用并输出用户调用,可以同时输出中文和英文长度,空格不管在中文字符串还是英文字符串里,都计算到英文长度中

my_printf.rar

22.83 KB, 下载次数: 625

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2014-12-23 08:10:33 | 显示全部楼层
回复【2楼】bytoly:
---------------------------------
谢谢!
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2014-4-25
在线时间
17 小时
发表于 2015-1-12 17:52:21 | 显示全部楼层
不错,收藏一个。。。
学习会使你永远立于不败之地。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-1-12 23:01:24 | 显示全部楼层
cool   不错啊,顶.....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-1-13 12:36:01 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
看到置酷了,感谢原子哥!这么百忙中光临小贴,非常感动啊
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-1-25
在线时间
0 小时
发表于 2015-4-7 20:40:19 | 显示全部楼层
LZ这是太强了,佩服。
花了多少时间完成的呀。。
看我移植的。
图形显示LZ没说清楚啊,我还是看了myprintf的代码,大体猜出应该这么写。
myPrintf("%is",0,16);
myPrintf("%is",1,16);
myPrintf("%is",2,16);
myPrintf("%is",3,16);
myPrintf("%is",0,32);
myPrintf("%is",1,32);
myPrintf("%is",2,32);
myPrintf("%is",3,32);
搞了老半天。
还有,感觉还是有点怪怪的,封装的不够彻底,说不出来哪里,以后想到了,再补上。
期望LZ持续更新,哈,造福万民。。。。
非常感谢。

回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-4-8 21:08:22 | 显示全部楼层
回复【8楼】w860316:
---------------------------------
这个我也就是想到就封装了,还没优化呢,后面有时间再说
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-16 17:16:33 | 显示全部楼层
很棒,能够搞定格式化输出,是相当艰巨的一项任务。
有软件开发经验,从0硬件基础学习STM32开发。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-8-16 18:30:57 | 显示全部楼层
回复【10楼】dragon7799:
---------------------------------
现在遇到转义字符\r和\n的问题了,换行之后显示不对劲了,\r之后设计是X回到0点的,现在\r之后有8个像素点了,还没找到原因,\n倒是回到0点了,啊。。。。
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-16 18:42:26 | 显示全部楼层
回复【11楼】八度空间:
---------------------------------
\r 和 \n 其实是两个不同的操作。
单独的 \r 不应该换行,只是将 x 回 0 即可,y 是不变的。
单独的\n 恰好相反。组合后,可以实现从下一行开始。
不过下一行为空时,往往 \n 自己就能完成类似的组合效果。

虽然你的问题我还没有看到代码,不过,从描述中,你在 \r 后换行,那就不对了。
有软件开发经验,从0硬件基础学习STM32开发。
回复 支持 反对

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-16 19:24:15 | 显示全部楼层

下载了2.2版的,看了下,你的 \t 处理也是不对的,\t 并不是无条件的向后移动固定个数的字符宽度。而是按照设置好的栏距移动。

比如你设置的是 4 个字符为一个 \t,那么每栏的起始字符是第1、5、9...。如果在前面有5个字符时,也就是说现在位置为第6个字符开始处,你输出一个\t 并不是跳到第 10 个字符的开始处,而是跳到第 9 个字符的的开始处(第8个字符结束处后一个像素),如果前面有6个字符,仍然是跳到第9个字符的开始处。\t是跳固定栏距,而不是相对前一个字符移动一个栏距。


我用C#写了个简单的演示,你看下效果

有软件开发经验,从0硬件基础学习STM32开发。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-8-16 20:12:53 | 显示全部楼层
回复【13楼】dragon7799:
---------------------------------
这没注意呢 \t 只是初步规定了一个而已,还没仔细研究这个
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-8-16 20:55:38 | 显示全部楼层
回复【13楼】dragon7799:
---------------------------------
现在改掉,只是保留 \n 和 \r 两个

\n就回到下一行开始位置

\r伪造一个回到下一行位置,对齐上一行开始位置
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-16 21:37:39 | 显示全部楼层

回复【15楼】 八度空间 :
---------------------------------
其实 \r 没必要这么麻烦,直接将 x 回到本行开始即可。y不要动。

同样,可以看看标准的处理方法示例

输入光标在整个输入结束后,停在4的下方。\r是回车,模拟打字机回拉,重新定位到本行开始,后续的输出会覆盖之前的输出。

有软件开发经验,从0硬件基础学习STM32开发。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-8-16 21:53:43 | 显示全部楼层
回复【16楼】dragon7799:
---------------------------------
覆盖本行不好吧
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2015-8-17 08:57:42 | 显示全部楼层
回复【17楼】八度空间:
---------------------------------
\r本身不是覆盖本行的意思,是回到本行开始。是否会覆盖本行,要看\r后面的字符。
如果后面是 \n,那\n会在y 上下移一行,此时就不涉及覆盖问题了。
如果后面是其他字符,那么这些字符输出时,会覆盖掉输出位置上的内容,此时就有了覆盖的效果。

\r 原本的使用就是这样定义的,所以,如果为了让大家都能兼容的使用这个库,最好还是按照规定去实现。
有软件开发经验,从0硬件基础学习STM32开发。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-8-18 12:34:07 | 显示全部楼层
回复【18楼】dragon7799:
---------------------------------
我是参照emWin这个GUI的做法的,他的 \n 是回到下一行的开始位置的 \r     \t  这两个是没作用的,忽略
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

3

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2012-7-19
在线时间
63 小时
发表于 2015-8-18 13:50:38 | 显示全部楼层
回复【19楼】八度空间:
---------------------------------
\t确实是下一个制表位,否则就无法用ascii码制作出表格了
单独的\r确实是回到本行开始处,\n一般效果同\r\n
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-8-19 08:44:16 | 显示全部楼层
回复【20楼】myxiaoniao:
---------------------------------
ASCII自己理解的意思,不过 \t 这个还是没有真正理解它的具体实现方法
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

3

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2012-7-19
在线时间
63 小时
发表于 2015-8-19 11:08:18 | 显示全部楼层
回复【21楼】八度空间:
---------------------------------
制表符呀 我估计你得记住本行光标偏移了几个字节 接收到\t时就计算到下一个\t位置
回复 支持 反对

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
金钱
1000
注册时间
2015-8-24
在线时间
240 小时
发表于 2015-10-23 15:04:27 | 显示全部楼层
本想伸手用你写的这个来显示浮点数,却发现有问题,你能帮忙看看吗?



也没有图标指到是哪个错了,几个myPrintf_PutChar我都看了一下,没什么问题呀
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-10-23 20:32:45 | 显示全部楼层
回复【23楼】沉默焚烧:
---------------------------------
是不是什么文件没添加到工程呀
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
金钱
1000
注册时间
2015-8-24
在线时间
240 小时
发表于 2015-10-24 08:00:32 | 显示全部楼层
回复【24楼】八度空间:
---------------------------------
我就把你的这个.C和.H文件添加进去了,还要加别的吗?
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-10-24 11:56:06 | 显示全部楼层
回复【25楼】沉默焚烧:
---------------------------------
没啥文件了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1367
注册时间
2014-2-13
在线时间
169 小时
发表于 2015-10-24 12:41:01 | 显示全部楼层
看来我又错过了什么
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-10-24 13:15:02 | 显示全部楼层
回复【27楼】solo:
---------------------------------
啥???
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1367
注册时间
2014-2-13
在线时间
169 小时
发表于 2015-10-24 13:55:09 | 显示全部楼层
回复【28楼】八度空间:
---------------------------------
之前我用sprintf时遇到一个问题,在格式化%md时,如果要格式化的数的长度超过m则原输出,要是能强制按m来的话就好(可以截断前面或者后面)。这样处理的可以防止当原数长度不确定造成的缓存区溢出或者你的myprintf超出想要显示的目标区域。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2015-10-24 22:02:11 | 显示全部楼层
回复【29楼】solo:
---------------------------------
记得有这方面的限制
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-10-25
在线时间
44 小时
发表于 2016-8-20 08:28:09 | 显示全部楼层
好东西呀 cooool
回复 支持 反对

使用道具 举报

2

主题

394

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2085
金钱
2085
注册时间
2012-5-8
在线时间
312 小时
发表于 2016-8-20 09:30:44 | 显示全部楼层
学习!
回复 支持 反对

使用道具 举报

头像被屏蔽

65

主题

277

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2013-8-11
在线时间
29 小时
发表于 2017-2-9 14:55:55 | 显示全部楼层
谢谢楼主!!!
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2016-1-25
在线时间
79 小时
发表于 2017-2-9 16:08:42 | 显示全部楼层
假装喜欢一下
回复 支持 反对

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2014-9-18
在线时间
21 小时
发表于 2017-3-29 18:14:22 | 显示全部楼层
佩服佩服!!楼主好技术,这要写多久啊!
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-3-29 23:40:22 | 显示全部楼层
yc21 发表于 2017-3-29 18:14
佩服佩服!!楼主好技术,这要写多久啊!

一直在优化完善功能ing,呵呵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

0

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2021-3-4
在线时间
29 小时
发表于 2021-3-7 13:50:47 | 显示全部楼层
直接拿来学习学习
回复 支持 反对

使用道具 举报

8

主题

161

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5183
金钱
5183
注册时间
2013-3-16
在线时间
610 小时
发表于 2021-5-11 10:04:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2022-8-24
在线时间
50 小时
发表于 2024-9-10 10:07:08 | 显示全部楼层
这怎么使用啊
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2022-8-24
在线时间
50 小时
发表于 2024-9-10 10:10:01 | 显示全部楼层
把附件加入到LCD工程中,再主文件中使用myPrintf()函数没有作用
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2022-8-24
在线时间
50 小时
发表于 2024-9-11 16:26:51 | 显示全部楼层
作者您好,麻烦解答一下void myPrintf_PutChar(int x, int y, char ch, char size, char mode)
{
        //添加你的液晶显示单个字符函数
//        LCD_Set_CharSize(size);
        LCD_Draw_Char(x,y,ch,mode);
//        LCD_Set_CharSize(size);
       
}
如何利用size参数呢,我试了一下以上注释的行,显示就不行了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 07:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表