[ZLG-ARM] 是不是ZLG_GUI有问题啊,请高手帮我分析一下

[复制链接]
 楼主| yanghui os 发表于 2007-8-17 07:48 | 显示全部楼层 |阅读模式
GUI, lg, ST, tc, FOR
/****************************************************************************<br />*&nbsp;名称:GUI_PutChar24_32()<br />*&nbsp;功能:显示ASCII码(24*32字体),显示值为'0'-'9'、'.'、'+'、'-'及':'(若为其它值,则显示'&nbsp;')。<br />*&nbsp;入口参数:&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定显示位置,x坐标<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定显示位置,y坐标<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要显示的ASCII码值。<br />*&nbsp;出口参数:返回值为1时表示操作成功,为0时表示操作失败。<br />*&nbsp;说明:操作失败原因是指定地址超出有效范围。<br />****************************************************************************/<br />uint8&nbsp;&nbsp;GUI_PutChar24_32(uint32&nbsp;x,&nbsp;uint32&nbsp;y,&nbsp;uint8&nbsp;ch)<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;&nbsp;&nbsp;font_dat;<br />&nbsp;&nbsp;&nbsp;uint8&nbsp;&nbsp;&nbsp;i,&nbsp;j;<br />&nbsp;&nbsp;&nbsp;TCOLOR&nbsp;&nbsp;bakc;<br /><br />&nbsp;&nbsp;&nbsp;/*&nbsp;参数过滤&nbsp;*/<br />&nbsp;&nbsp;&nbsp;if(&nbsp;x&gt=(GUI_LCM_XMAX-8)&nbsp;)&nbsp;return(0);<br />&nbsp;&nbsp;&nbsp;if(&nbsp;y&gt=(GUI_LCM_YMAX-8)&nbsp;)&nbsp;return(0);<br />&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt14;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;if(FONT24x32_TAB==ch)&nbsp;break;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;ch&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;for(i=0;&nbsp;i&lt32;&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;显示共32行<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;for(j=0;&nbsp;j&lt24;&nbsp;j++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;每行共24点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;/*&nbsp;若当前点为0、8、16点,读取点阵数据&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;(j&0x07)==0&nbsp;)&nbsp;font_dat&nbsp;=&nbsp;FONT24x32[ch][i*3+j&gt&gt3];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置相应的点为color或为back_color&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;(font_dat&DCB2HEX_TAB[j])==0&nbsp;)&nbsp;GUI_CopyColor(&bakc,&nbsp;back_color);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;GUI_CopyColor(&bakc,&nbsp;disp_color);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GUI_Point(x,&nbsp;y,&nbsp;bakc);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;指向下一行<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;-=&nbsp;24;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;恢复x值<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;return(1);<br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />/****************************************************************************<br />*&nbsp;名称:GUI_PutString()<br />*&nbsp;功能:输出显示字符串(没有自动换行功能)。<br />*&nbsp;入口参数:&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定显示位置,x坐标<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定显示位置,y坐标<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要显示的ASCII码字符串<br />*&nbsp;出口参数:无<br />*&nbsp;说明:操作失败原因是指定地址超出有效范围。<br />****************************************************************************/<br />void&nbsp;&nbsp;GUI_PutString2432(uint32&nbsp;x,&nbsp;uint32&nbsp;y,&nbsp;char&nbsp;*str)<br />{&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;if(&nbsp;(*str)=='\0'&nbsp;)&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;GUI_PutChar24_32(x,&nbsp;y,&nbsp;*str++)==0&nbsp;)&nbsp;break;//此行本人改为上面的涵数,原为GUI_PutChar(5*7)的字符涵数.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;+=&nbsp;24;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;下一个字符显示位置,y不变(即不换行)<br />&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />以上程序我用的ZLG的,只改为了一行程序,结果显示不出来数字??改为5*7的字符涵数,能正常输出??<br />为什么啊,是不是GUI_PutChar24_32这涵数有问题??<br />小弟先谢谢了<br />
xxqarm 发表于 2007-8-17 09:31 | 显示全部楼层

有点BUG,搜一下贴子

  
yingq5594 发表于 2007-8-18 11:50 | 显示全部楼层

re

你可能是没有将zlg_gui配置文件中的24*32字体的使能打开,默认是使用5*7字体,我曾经遇到过此类问题,郁闷了好几天!
boming 发表于 2011-9-17 19:38 | 显示全部楼层
同问,最近在移值,其它的都OK,就是这个不行
linas 发表于 2011-9-19 17:19 | 显示全部楼层
amini 发表于 2011-9-27 10:42 | 显示全部楼层
结贴了?我还是没明白啊。
coco11 发表于 2011-10-24 14:21 | 显示全部楼层
找类似的贴
xuannin 发表于 2011-10-26 15:19 | 显示全部楼层
if( (font_dat&DCB2HEX_TAB[j&7])==0 ) GUI_CopyColor(&bakc, back_color);
ty新气象 发表于 2011-10-27 16:52 | 显示全部楼层
菜鸟路过学习的
lcj2011 发表于 2011-11-2 12:02 | 显示全部楼层
可以用emWIN图形库了~~
snakeemail 发表于 2011-11-2 20:34 | 显示全部楼层
zlg网站上没有介绍zlg gui的呀?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部