symbian基本数据类型转化汇集(三)

本文介绍了S60平台中各种数据类型之间的转换方法,包括TTime与TBuf、TDateTime与TBuf、TBuf与Tint等类型的相互转换。此外还提供了串与数字、不同字符集间的转换技巧。

1.TTime转TBuf型

TBuf<32> theTime;//存储转换后的时间
TTime tt;
tt.HomeTime();
_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");//格式为:2006-03-04 12:12:12
tt.FormatL(theTime,KTimeFormat);//FormatL()会以KTimeFormat字符串的形式来格式化时间在赋值给theTime

2. TDateTime转TBuf型

TTime currentTime;//声明一个TTime类型
currentTime.HomeTime();//设置TTime为当前时间
TDateTime tdt=currentTime.DateTime();//TTime    --->    TDateTime
TBuf<32> tmp;//存储转换完的Buf
tmp.AppendNum(tdt.Year());//用AppendNum()方法将一个Tint加入到TBuf中。
_LIT(gang,"-");//声明一个横线分隔年月日,同样可声明冒号分隔小时分秒
tmp.Append(gang);
tmp.AppendNum(tdt.Month());
tmp.Append(gang);
tmp.AppendNum(tdt.Day());…………时分秒的转换同上

3. TBuf转Tint型

// 15位数字
TInt iNum1(123456789009876);
// 将缓存的内容设置为iNum1
iBuf.Num(iNum1);
// 使用iBuf包含的内容创建TLex对象
// the 15 digit number
TLex iLex(iBuf);
// iNum1
TInt iNum2;
//iNum2现在包含了15位数字
iLex.Val(iNum2);

4. Tint转TBuf型

TBuf<10>tmp;
Tint ti=190;
Tmp.AppendNum(ti);

5. TBuf转TDateTime型

将长的TBuf截成小段,分别是年月日时分秒,通过下面TBuf转TInt ,再分别把转换成TInt的年月日取出,通过TDateTime的setYear(),setMonth()等方法将时间set进TDateTime

6. 其他转换

TBuf    转换为 TPtrC16

TBuf<32> tText(_L("2004/11/05 05:44:00"));
TPtrC16 tPtrSecond=tText.Mid(17,2);

TPtrC16 转换为 TBufC16

TPtrC16 tPtrSecond=tText.Mid(17,2);
TBufC16<10> bufcs(tPtrSecond);

TBufC16 转换为    TPtr16

TBufC16<10> bufcs(tPtrSecond);
TPtr16 f=bufcs.Des();

TPtr16 转换为 TBuf

TBuf<10> bufSecond;
bufSecond.Copy(f);

TBuf 转换为 TPtr16

TBuf<10> bufSecond(_L("abc"));
TPtr16 f;
f.Copy(bufSecond);

TBuf 转换为 TInt

      TInt aSecond;
      TLex iLexS(bufSecond);
      iLexS.Val(aSecond);

TInt 转换为 TBuf

      TBuf<32> tbuf;
      TInt i=200;
      tbuf.Num(i);

memset主要应用是初始化某个内存空间。用来对一段内存空间全部设置为某个字符。
memcpy是用于COPY源空间的数据到目的空间中,用来做内存拷贝可以拿它拷贝任何数据类型的对象。
strcpy只能拷贝字符串了,它遇到'/0'就结束拷贝。

以下是S60的数据类型转换(巨有用)

1.串转换成数字

     TBuf16<20> buf(_L( "123" ) );
      TLex lex( buf );
      TInt iNum;
      lex.Val( iNum );

2.数字转换成串

     TBuf16<20> buf;
     TInt iNum = 20;
     buf.Format( _L( "%d" ) , iNum    );

3.将symbian串转换成char串

      char* p = NULL;
      TBuf8<20> buf( _L( "aaaaa" ) );
      p = (char *)buf.Ptr();

4.UTF-8转换成UNICODE

      CnvUtfConverter::ConvertToUnicodeFromUtf8( iBuf16 , iBuf8 );

5.UNICODE转换成UTF-8

      CnvUtfConverter::ConvertFromUnicodeToUtf8( iBuf8 , iBuf16 );

6.将char串转换成symbian串

      char* cc = "aaaa";
      TPtrC8 a;
      a.Set( (const TUint8*)cc , strlen(cc) );

再加一点:

TDesC8 & buf ;
TUint8     * pdata ;
pdata = buf.Ptr() ;
然后,这个pdata就可以当成unsigned char *用了,这在网络通讯的时候很重要。
如果,怕pdata破坏的话,可以
TBuf8<1024> tmp_buf ;
tmp_buf.Copy(buf) ;
pdata = tmp_buf.Ptr() ;
这样就可以保护一下buf的数据了,尤其是如果这个buf是Socket的接收的数据是接收函数自己分配的时候。



strcpy

原型:extern char *strcpy(char *dest,char *src);
用法:#include <string.h>
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

         返回指向dest的指针。

memcpy

原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

memset

原型:extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。

------------------------------------------------------------------------------

将TDesC类型 转换成char *型

const char* cp = reinterpret_cast<const char*>(desc.Ptr()); // or use PtrZ()
char* p = const_cast<char*>(cp);

Remember that the length of the string is desc->Size() (or desc->Length()*2), and the max length of the string is desc->MaxLength()*2(including the '/0' terminator, if any).

具体看:
"Conversion bitween 8 and 16 bits descriptors"
http://forum.newlc.com/index.php/topic,1075.0.html

 

----------------------------------------------------------------------------------

http://www.sf.org.cn/Article/symbiandev/200511/2577.html

这里有些关于描述符的介绍,有兴趣的可以看下

 

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值