怺逺_海子 发表于 2014-8-14 01:43:36

中文及长文件名支持库——修改版本移至Flash空间

#include "W25QXX.h" //modify v1.1

#if !_USE_LFN || _CODE_PAGE != 936
#error This file is not needed in current configuration. Remove from the project.
#endif

//modify v1.1
#define __SPI_CC936   1
#define UNI2OEM                                ((u32)2404)
#define UNI2OEMEND                ((u32)89576)
#define OEM2UNI                                ((u32)89577)
#define OEM2UNIEND                ((u32)176749)

#ifdef __SPI_CC936
const WCHAR uni2oem;
const WCHAR oem2uni;

//add v1.1
ULONG SizeOfTableuni2oem(void)
{
        return UNI2OEMEND-UNI2OEM;
}

ULONG SizeOfTableoem2uni(void)
{
        return OEM2UNIEND-OEM2UNI;
}

//modify v1.1
WCHAR ff_convert (        /* Converted code, 0 means conversion error */
        WCHAR        chr,        /* Character code to be converted */
        UINT        dir                /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
)
{
        //modify v1.1 const WCHAR *p;
        WCHAR c;
       int i, n, li, hi;
        u32 p;//add v1.1
WCHAR tem;
        if (chr < 0x80) {        /* ASCII */
                c = chr;
        } else {
                if (dir) {                /* OEMCP to unicode */
                        p = OEM2UNI;
                        hi = SizeOfTableoem2uni() / 4 - 1;
                } else {                /* Unicode to OEMCP */
                        p = UNI2OEM;
                        hi = SizeOfTableuni2oem() / 4 - 1;
                }
                li = 0;
                for (n = 16; n; n--) {
                        i = li + (hi - li) / 2;
                        W25Q128_BufferRead((u8 *)tem,p+(i * 2),2);
                        if (chr == (*(u16*)tem) ) break;
                        if (chr > (*(u16*)tem) )
                                li = i;
                        else
                                hi = i;
                }
          W25Q128_BufferRead((u8 *)tem, p+(i * 2 + 1),2);
                c = n ? (*(u16*)tem) : 0;
        }
        return c;
}
页: [1]
查看完整版本: 中文及长文件名支持库——修改版本移至Flash空间