OpenEdv-开源电子网

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

关于原子图片显示程序(库函数版本FATFS),不能使用长文件显示中文的讨论

[复制链接]

18

主题

162

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2012-4-4
在线时间
0 小时
发表于 2012-4-23 21:37:28 | 显示全部楼层 |阅读模式

 debug+跟踪了好几天了~~还是木有找到出错的地方,只能来求助坛友了,发挥集体力量
具体:
   BOOL AI_LoadPicFile(u8 *filename,u16 sx,u16 sy,u16 ex,u16 ey)
{// FIL* f_bmp;
 
 int funcret;//返回值 
 //得到显示方框大小 
 u8 fileTpe; 
 int index;
    for( index=0;index<1024;index++)
    iclip[index]=0;

 if(ey>sy)PICINFO.S_Height=ey-sy;
 else PICINFO.S_Height=sy-ey; 
 if(ex>sx)PICINFO.S_Width=ex-sx;
 else PICINFO.S_Width=sx-ex;
 //显示区域无效
 if(PICINFO.S_Height==0||PICINFO.S_Width==0)
 {
  ICINFO.S_Height=LCD_H;
  ICINFO.S_Width=LCD_W;
  return FALSE;  
 }
 //影响速度
 //SD_Init();//初始化SD卡,在意外拔出之后可以正常使用
 //显示的开始坐标点
 ICINFO.S_YOFF=sy;
 ICINFO.S_XOFF=sx;

 fileTpe=f_typetell((u8*)filename); //得到文件的类型
 if(fileTpe==T_BMP)//得到一个BMP图像
 {
  funcret=BmpDecode(filename); //得到一个BMP图像
  return funcret;       
 }
 else if(fileTpe==T_JPG||fileTpe==T_JPEG)//得到JPG/JPEG图片
 {  
     funcret=f_open(f_jpeg,(const TCHAR*)filename,FA_READ);//打开文件
  if(funcret==FR_OK){   
   f_read(f_jpeg,jpg_buffer,1024,(UINT*)&br);
   InitTable();
   if((funcret=InitTag())!=FUNC_OK)return FALSE;
   if((SampRate_Y_H==0)||(SampRate_Y_V==0))return FALSE ;
   AI_Drow_Init();
   funcret=Decode();
  }
  f_close(f_jpeg);
 }else return FALSE;  //非图片格式!!!
 if(funcret==FUNC_OK)return TRUE;//解码成功
 else return FALSE;   //解码失败 
}
我跟踪了下,当在支持长文件格式下显示以中文命名的图片时,在红色代码处返回是0x06 
代表: FR_INVALID_NAME,  /* (6) The path name format is invalid */
进入函数跟踪的话,就是一大串的fatfs的函数操作了,blabla......一片迷糊中
PS:单独测试过filename的输出,是正确的,排除之

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

162

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2012-4-4
在线时间
0 小时
 楼主| 发表于 2012-4-23 21:38:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-4-23 22:19:50 | 显示全部楼层
要看fatfs实现长文件名支持了没有.
现在的代码应该是还没实现的.所以不支持长文件名.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

162

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2012-4-4
在线时间
0 小时
 楼主| 发表于 2012-4-24 19:21:04 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
#define  _USE_LFN  1

......
#if _USE_LFN
    static char lfn[_MAX_LFN + 1];
    fileInfo.lfname = lfn;
    fileInfo.lfsize = sizeof(lfn);
这样子应该就算支持长文件名了吧?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-4-24 20:49:43 | 显示全部楼层
需要C936文件.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

162

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2012-4-4
在线时间
0 小时
 楼主| 发表于 2012-4-25 09:50:02 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
加了你修改过的c936  (mycc936.c)
回复 支持 反对

使用道具 举报

18

主题

162

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2012-4-4
在线时间
0 小时
 楼主| 发表于 2012-4-25 13:08:25 | 显示全部楼层
顶上去~~~~~~~
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2012-4-25 16:44:52 | 显示全部楼层
最近正在学习FATFS网上也查了 说是文件名8.3格式,后面看源码也发现

typedef struct {
DWORD fsize; /* File size */
WORD fdate; /* Last modified date */
WORD ftime; /* Last modified time */
BYTE fattrib; /* Attribute */
TCHAR fname[13]; /* Short file name (8.3 format) */
#if _USE_LFN
TCHAR* lfname; /* ointer to the LFN buffer */
UINT  lfsize; /* Size of LFN buffer in TCHAR */
#endif
} FILINFO;

fname[13] 我想问题就在这边了
1-1
回复 支持 反对

使用道具 举报

18

主题

162

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
406
金钱
406
注册时间
2012-4-4
在线时间
0 小时
 楼主| 发表于 2012-4-25 18:17:28 | 显示全部楼层
回复【8楼】mygod:
---------------------------------
这个有啥问题?
回复 支持 反对

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-11-20
在线时间
0 小时
发表于 2013-12-1 19:42:17 | 显示全部楼层
回复【6楼】barden:
---------------------------------
请问cc936是什么? 为什么有它就支持长文件名?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-1 20:53:29 | 显示全部楼层
回复【10楼】lyc374312116:
---------------------------------
是unicode与gbk码的互换码表。
因为长文件名是用的unicode码表示的,而我们的字库是按照gbk码做的,所以必须先将UNICODE码转换为gbk码,才能显示。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-11-20
在线时间
0 小时
发表于 2013-12-3 11:27:09 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
如果不显示中文是不是就不用cc936?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-3 16:30:22 | 显示全部楼层
是的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-3 16:30:39 | 显示全部楼层
应该说,不使用长文件名。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2013-8-11
在线时间
0 小时
发表于 2013-12-14 17:11:59 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
原子哥,长文件名,实现了但是中文文件名,怎么实现,,,,
没有学不会的事情
回复 支持 反对

使用道具 举报

7

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2013-8-11
在线时间
0 小时
发表于 2013-12-14 19:12:25 | 显示全部楼层
楼主,你将原子哥那个,显示出中文的问题解决了吗?能不能发个源码
没有学不会的事情
回复 支持 反对

使用道具 举报

7

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2013-8-11
在线时间
0 小时
发表于 2013-12-14 19:14:03 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
原子哥,你那个图片显示的例程我看了,要是我想直接将中文命名的图片显示出来该怎莫做,,,长文件名我现在已经实现
没有学不会的事情
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-14 20:43:10 | 显示全部楼层
回复【17楼】969813073@qq.com:
---------------------------------
我例程就支持中文长文件名啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
461
金钱
461
注册时间
2013-10-18
在线时间
72 小时
发表于 2014-11-4 14:11:28 | 显示全部楼层
回复【4楼】barden:
---------------------------------
一年了,你解决了???
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-10-21
在线时间
0 小时
发表于 2014-11-24 19:19:17 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
原子哥你的程序好像不支持中文名文件哦!!!我换成非中文的文件名能显示,中文名就不能显示!!苦恼啊!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-25 00:51:07 | 显示全部楼层
回复【20楼】zengjianfeng:
---------------------------------
不可能啊,你用我们什么开发板?
下载那个例程?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-10-21
在线时间
0 小时
发表于 2014-11-25 09:51:38 | 显示全部楼层
回复【21楼】正点原子:
---------------------------------
回复【21楼】正点原子:
---------------------------------
用的是MINI版和MINI版的例程!显示图片的时候我用英文名可以显示,用中文名就不行!!!
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-10-21
在线时间
0 小时
发表于 2014-11-25 15:35:08 | 显示全部楼层
回复【21楼】正点原子:
---------------------------------
原子哥,我发现一个问题,在读中文名文件的时候,每次都要刷一次FLASH才能读!!这是什么情况???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-25 16:18:18 | 显示全部楼层
回复【23楼】zengjianfeng:
---------------------------------
啥意思?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-25 16:18:28 | 显示全部楼层
回复【22楼】zengjianfeng:
---------------------------------
我测试都可以。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-10-21
在线时间
0 小时
发表于 2014-11-25 16:22:17 | 显示全部楼层
回复【25楼】正点原子:
---------------------------------
就是读中文名文件的时候如果不把SD卡里的UNI2GBK和GBK16重新更新到FLASH里面的话就会读失败!!!不是更新一次就够了吗??是不是我的FLASH坏了??
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-25 23:26:17 | 显示全部楼层
回复【26楼】zengjianfeng:
---------------------------------
一次够了,但你得把所有资料都更新了啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-10-21
在线时间
0 小时
发表于 2014-11-26 08:13:40 | 显示全部楼层
回复【27楼】正点原子:
---------------------------------
原子哥问题已经解决了!!初步认定是没有进行字库的初始化!!!但是还有待确认!!还有#define _FFCONF 6502 /* Revision ID */和#define _FFCONF 8237 /* Revision ID */这两个版本的FATFS应该都支持中文名文件吧?感谢原子哥这几天的耐心教导!!大大的赞一个!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-26 14:34:19 | 显示全部楼层
回复【28楼】zengjianfeng:
---------------------------------
这两个就是版本了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-11-26
在线时间
0 小时
发表于 2015-6-5 16:50:03 | 显示全部楼层
回复【29楼】正点原子:
---------------------------------
#define _FFCONF 6502  这个也有关系??  我现在就是长英文名 显示不全。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-28 18:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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