高级会员

- 积分
- 564
- 金钱
- 564
- 注册时间
- 2016-3-31
- 在线时间
- 139 小时
|
1金钱
cc936.c文件的转换代码是这样的:这个函数 转换 没 问题,我把函数 单独拿出来 测试过。
WCHAR ff_convert ( /* Converted code, 0 means conversion error */
WCHAR chr, /* Character code to be converted */
UINT dir /* 0: Unicode to OEM code, 1: OEM code to Unicode */
)
{
WCHAR c;
UINT bread1
u8 res=0;
u32 i, n, li, hi;
WCHAR buffer936[2] = {0}; /* file copy buffer */
if (chr < 0x80) /* ASCII */
c = chr;
else //½«ÒªÊ¹Óà ±í¸ñ ת»»
{
if (dir)/* OEM ת unicode */
res = f_open(&pFile, "0:/System/oem2uni.bin", FA_OPEN_EXISTING | FA_READ);
else /* Unicode ת OEM */
res = f_open(&pFile, "0:/System/uni2oem.bin", FA_OPEN_EXISTING | FA_READ );
if(res == FR_OK)
{
hi = f_size(&pFile);
hi = hi / 4-1;
li = 0;
for (n = 16; n; n--)
{
i = li + (hi - li) / 2;
f_lseek (&pFile, i * 4);
f_read (&pFile, buffer936, 4, &bread);
if (chr == buffer936[0])
break;
if (chr > buffer936[0])
li = i;
else
hi = i;
}
c = n ? buffer936[1] : 0;
}
else
c=0;
f_close(&pFile); //¹Ø±ÕÎļþ
}
return c;
}
问题在于放在整个代码中就有问题,只能转换第一个汉字,转换之后的汉字时候,就会变成 表格文件的名字:uni2oem.bin
例如有个文件:新建文档文件.txt
读出来就是 :新uni2oem.bin
这怎么解决呢???????????????
我看例程都是把 转换表格 放在FLASH的。有放在SD卡的例程吗????
*********************************************************************************
我还发现 : 只要执行 f_open(&pFile, "0:/System/uni2oem.bin", FA_OPEN_EXISTING | FA_READ );
就会出错。
求助啊,谢谢
|
|