OpenEdv-开源电子网

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

急! 数据格式转换? unsigned short 转换为char型

[复制链接]

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
发表于 2011-9-28 10:44:03 | 显示全部楼层 |阅读模式

 我现在在MINISTM32开发板上已经成功移植了FATFS0.08,可以实现 .txt文件创建与读写, 也可以创建文件夹. 现在的问题是我想实现根据STM32  RTC得到的日期创建文件夹和利用时间创建.txt文件,可是在创建文件夹的过程中发现时数据格式不对,问题如下:

1 RTC中返回日期和时间是通过tm结构体,
     typedef struct 
     {
         u8 hour;
         u8 min;
         u8 sec;   
         //公历日月年周
         u16 w_year;
         u8  w_month;
         u8  w_date;
         u8  week;   
     }tm;      
     extern tm timer;
2 u16 w_year ;的定义如下: typedef  unsigned short  u16; (见stm32f10x_type.h 第40行)
3 创建文件目录函数声明 FRESULT f_mkdir (const TCHAR*); 
4 TCHAR声明  typedef char TCHAR;(FATFS 中Ff.h 066行)

问题是如何将u16类型数据转换为TCHAR型字符?  或者有没有其他更好实现上述功能的方法,多谢指点!

事无巨细 循序渐进
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-9-28 12:46:39 | 显示全部楼层
回复【楼主位】葱花鱼:
---------------------------------
fatfs中创建文件,我一般不加时间的.
格式不对,只需要稍作修改即可,你看看fatfs的时间格式是什么样的.
//获得时间
//User defined function to give a current time to fatfs module          */
//31-25: Year(0-127 org.1980), 24-21: Month(1-12), 20-16: Day(1-31) */                                                                                                                                                                                                                                          
//15-11: Hour(0-23), 10-5: Minute(0-59), 4-0: Second(0-29 *2) */                                                                                                                                                                                                                                                
DWORD get_fattime (void)
{
return 0;
}

这个是格式说明,你按照上面的格式把年月日时分秒,自己组织成一个32位的数据.返回即可.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-9-28 13:25:12 | 显示全部楼层
原子哥:
DWORD get_fattime (void) ;这个函数我看懂了,九九的程序里面这个返回的时间也是根据RTC提供的数据然后经过移位按照一定规则组成的一个32位数据.  我想实现的过程是: 例如现在时间是2011-09-28 13:22  我想创建一个20110928的文件夹.    而和FRESULT f_mkdir (const TCHAR*);创建目录的数据格式不对, get_fattime 返回的是32位的,而TCHAR是8位,我用get_fattime 没有实现才直接利用RTC程序中的数据timer.w_year也是数据格式不对 
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-9-28 13:56:30 | 显示全部楼层
回复【3楼】葱花鱼:
---------------------------------
直接被你雷倒....
一个是文件名,一个是文件创建时间.你到底搞清楚你想干嘛了没有?
根据你说的,你是想创建一个文件夹的名字为20110928,这不简单么?
u8 *name="20110928";
f_mkdir((TCHAR *)name);
!!!!
面壁思过吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-9-28 14:19:39 | 显示全部楼层
原子哥:
      你说的这个我已经实现了,可能是我表述的有问题,造成误解了.我是想实现根据RTC中的日期创建文件.比如:我今天测试的数据存储在20110928文件夹内,明天测试的数据存储在20110929文件夹内,按照你说的方法没法实现啊?? 
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-9-28 16:29:03 | 显示全部楼层
回复【5楼】葱花鱼:
---------------------------------
那你把时间拼凑成一个string类型不就可以了...
很简单的说....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-9-28 17:40:53 | 显示全部楼层
试试看.....
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-9-29 16:46:49 | 显示全部楼层
利用数字转化为字符串,问题已经解决,谢谢原子哥!
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2015-11-12
在线时间
19 小时
发表于 2017-9-11 09:29:04 | 显示全部楼层
好贴,拿来学习。谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 07:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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