Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526049
  • 博文数量: 87
  • 博客积分: 4086
  • 博客等级: 上校
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 15:55
文章分类

全部博文(87)

文章存档

2012年(3)

2010年(13)

2009年(7)

2008年(64)

我的朋友

分类: 嵌入式

2009-12-13 12:55:34

最近移植MiniGUI-1.6.10到ecos上,在移植好了以后,运行时总不能正确启动图形界面,出现类似如下的错误:
 

.DI:Not supported charset:ISO8859-1
GDI:Error in loading raw bitmap


只好跟踪代码,最后定位到问题出现在src/font/charset.c文件中的GetCharsetOpsEx函数。该函数接受的参数为从MiniGUI.cfg配置文件中解析出来的表示字符编码名称的字符串,完成的工作就是将这个表示名称的字符串与系统内部定义的能够支持的字符集的名称做比较,如果内部有这个相同的名称,则返回指向该字符集的CHARSETOPS指针,否则返回NULL。出现说不支持ISO8859-1的现象应该就是因为传入的字符串与内部的不一样。

最开始时打印传入的名称,与Charset内定义的名称显示是完全一样的,ISO8859-1都有,为什么还是返回了NULL。那就再打印它们各自的ascii码,一看终于明白了:传入的字符串的ascii码在接着ISO8859-1的后面还出现了一个ascii码13,而13就是'\r',即回车,而内部的没有这个多余的字符。而MiniGUI程序中使用strcmp库函数来比较这两个字符串当然就认为不一样了。看来原因就是这里了。

以前听说过在windows中用记事本或者写字板,在换行的时候会先插入一个回车符'\r',然后再是换行符'\n',而linux里面vi是不会插入回车符的,于是把整个MiniGUI.cfg文件在linux系统里面重新写一次,然后再烧写资源文件,果然把问题解决了。

我觉得出现这个问题还是因为MiniGUI的移植性不是太好吧,希望他们能改善!

 

阅读(4801) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-18 23:31:28

这位兄弟,最近部门在内部推荐,机会较好,真诚希望你或者这里的朋友能关注下 ------------------------------------------------------------------------------------------ 全球TOP3通信公司创新项目招募人才(机会较好,待遇从优) 地点:上海   包括但不限于以下方面:(1)嵌入式技术和linux开发(2)编译环境开发(3)应用和业务软件开发(4)浏览器和互联网技术(5)媒体平台:媒体技术和算法(6)通信协议:传输,组网以及协议开发等   招聘范围:中高级技术专家,技术带头人,3年以上工作经验   待遇:从优,只要您有实力,待遇一切可谈   关于我们:提供一个良好的技术和开发环境,提供优越的个人发展空间通道以及完善的培训制度,个人配股激励计划。   若有任何疑问或者兴趣,欢迎邮件:BlankHt@163.com   静候您或者您的朋友回音。