原创 uC/FS 中加入unicode支持 (原创)

2008-9-3 21:34 6736 8 25 分类: MCU/ 嵌入式

昨天写得时候提到了,我的文件系统尚有两个功能没有实现,


1) 长目录名,长文件名支持;


2)  中文支持;


现在已全部实现了,下面讲讲如何实现,  


1-->  今天去仔细看了一下uc/fs的手册及配置设置,发现有一个宏是控制长目录名支持的,打开即可,这里就不提了.


2-->  中文支持,大致看了一下FAT32的文件系统spec, 知道了中间实现用得是unicode码, 并实现读取了两个文件名试了下, 实际测试结果如下:    0x4e2d为"中"的unicode码, 读出来的顺序为2d 4e,  这里我要做的就是把这个unicode码转换为GB2312码就OK了,因为我的系统是支持GB2312的,具体实现方法如下,这里给出的是从unicode到GB2312的转换方法:


代码中用到的两个表在网上搜下就可以找到了,要是哪位朋友想要,却找不到,给我邮件.


5241b62b-f870-4050-aea1-de2db1c93d6c.JPG


 

文章评论17条评论)

登录后参与讨论

walnutcy_696810119 2008-9-4 18:33

to andylao : 码表已发给你,配合博文中的代码即可使用..

walnutcy_696810119 2008-9-4 18:29

http://www.programsalon.com/ 关键字好像是ucfs, efs之类的,我以前在那看到过,刚回到家,稍后把码表发给你,

用户162800 2008-9-4 17:53

要用的话你去"编程沙龙"下载网友修改好的(增加了长目录名识别与unicode转换,至于好不好用,我不清楚,我没下载过.)这个是在那里的?还有搜什么关键字?

用户162800 2008-9-4 17:43

是的,我就是用了1.34版本的,现在能读根目录下的文件了,但深一层的文件还没读写到

walnutcy_696810119 2008-9-4 17:05

另unicode到GB的码表,在这里有介绍, http://www.herongyang.com/gb2312_gb/ 或晚点我发给你.

walnutcy_696810119 2008-9-4 17:02

to andylao: 看了下,你的问题是_FS_ReadBPB未特殊处理SD卡的0扇区, 是你用的uc/fs版本太旧了,应该是1.34的吧?这个版本有不少问题的,要用的话你去"编程沙龙"下载网友修改好的(增加了长目录名识别与unicode转换,至于好不好用,我不清楚,我没下载过.), 我建议你改用fatFS,关于这个文件系统,晚上我会另写一篇移植介绍,

用户162800 2008-9-4 15:55

我的EMAIL:mzhguang@126.com谢谢

用户162800 2008-9-4 15:53

代码中用到的两个表在网上搜下就可以找到了,要是哪位朋友想要,却找不到,给我邮件. 能不能把你的表发给我一份,谢谢了 还有的是你看下你 fs_api.h 中的容量定义FS_MEDIA_SD_128MB 1080L 这个地方最大定义到多少呢

用户162800 2008-9-4 15:47

我现在已经可以正确读到文件名了,但运行到这的时候就有问题 i = _FS_fat_find_file(pFile->dev_index, unit, realname, &s, dstart, dsize); /* Delete file */ lexp_b = (FS__CLIB_strcmp(pMode, "del") == 0); /* Delete file request */ lexp_a = lexp_b && (i >= 0); 文件的首族号已经正确,i=2, pMode=="w",按照这样,那不管什么情况lexp_a都会等于0啊,那就没法再运行下边的程序了,你能帮我看看这部分的代码吗?fat_open.c文件下的FS__fat_fopen函数,我怎么都想不通这部分

walnutcy_696810119 2008-9-4 15:00

to wangxing: 本博客主要的方法是授人以渔,给思路,暂没有上传代码的打算(所以我的空间暂时未提供任何代码附件下载,只有文档与方法). 其实,对于一个真正想学点东西的兄弟来说, 有一些提示,加过程参考足够了.
相关推荐阅读
walnutcy_696810119 2012-11-21 08:37
Linux下使用smartCOM调试串口
在Windows下的串口调试一直使用sscom,在Linux下只找到一个cutecom,用了几次,很不喜欢,就着手开发了一款自己的串口调试工具,smartCOM。 smartCOM介绍:http...
walnutcy_696810119 2012-03-29 18:12
【博客大赛】原创--测量基础:什么是测量
写在正文之前: 适逢EDNChina搞活动,而我本人也算在测量业工作,就一起作下笔记吧。若有错误,请大家一起斧正。笔者写本文一方面是梳理知识,另一方面也希望与大家探讨有关测量的知识、应用等,希...
walnutcy_696810119 2011-12-20 18:29
GLONASS 15年来,首次实现24颗星在轨可用
  EDN的博客改版后,不太好用,在SINA重开一个,不过重点改为关注GNSS行业新闻 http://blog.sina.com.cn/s/blog_7420cd1701012en9....
walnutcy_696810119 2011-12-20 17:49
逆向工程第一步:通信协议分析
工程中常有这样的事,想分析下其他知名公司产品中的通信协议,以便生产设计兼容产品。 1) 逆向工程,首先要了解产品,知己知彼,百战不怠;     去年受命想仿一款GARMIN的导航盒,但无法...
walnutcy_696810119 2011-11-14 11:30
通用代码调试方法 (Keil, VCC)
调试代码一般需要定位问题,这里给出一个解决方案, 一般的编译器均支持这些宏指令。   #define DEBUG_WALT_1113     1 extern void log_t...
我要评论
17
8
关闭 站长推荐上一条 /2 下一条