W嵌入开发一些经验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
W嵌入开发一些经验

[wincenet相关]嵌入开发(WinCE)的一些经验(网友sunny12) 森森特 发表于 2005-11-17 10:01:09 WindowsCE下Unicode和Ansi字符间互相转换的例子 纵所周知,WindowsCE下编程99%的问题都和Unicode有关.比如文件编辑,一般都保存为Ansi格式;无线通讯中控制Modem需要发送的AT指令,必须是Ansi格式;网络通讯中,PC端一般都是Ansi的,为了和PC上协议兼容,在WindowsCE中必须把要发送的一个指令从Unicode 转换成Ansi格式...等等.很多初学者对于这些问题总是感到很麻烦.其实WindowsCE中有标准的API实现了Unicode和Ansi字符间的互转.下面就是网络通讯中的程序片断. m_psocket是指向一个从CCeSocket派生的类,如果没有连接的话其为NULL; m_snd是要发送的CString,和一个EDIT相对应. //发送函数片断 void CClient1Dlg::OnButtonSend() { ? // TODO: Add your control notification handler code here ? if (!m_psocket) //无Socket连接,退出 ? { ? ? ? MessageBox(TEXT(无连接!),TEXT(信息)); ? ? ? return; ? } ? UpdateData(TRUE); //保存输入的字符串到m_snd ? unsigned char buf[129]; //发送缓冲区 ? ZeroMemory(buf,sizeof(buf)); //缓冲区清零 ? CString tmpstr(m_snd); //复制要发送的字符串 ? int multibytelen=WideCharToMultiByte( //计算从Unicode转换到Ansi后需要的字节数 ? CP_ACP, //根据ANSI code page转换 ? WC_COMPOSITECHECK | WC_DEFAULTCHAR, //转换出错用缺省字符代替 ? tmpstr.GetBuffer(m_snd.GetLength()), //要转换的字符串地址 ? ? ? m_snd.GetLength(), //要转换的个数 ? ? ? 0, //转换后字符串放置的地址 ? ? ? 0, //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节 ? ? ? 0, //缺省的字符:\0 ? ? ? 0 //缺省的设置 ? ? ); ? WideCharToMultiByte( //转换Unicode到Ansi ? ? ? CP_ACP, ? ? ? WC_COMPOSITECHECK | WC_DEFAULTCHAR, ? ? ? tmpstr.GetBuffer(m_snd.GetLength()), ? ? ? m_snd.GetLength(), ? ? ? (char *)buf, //转换到缓冲区中 ? ? ? 128, //最多128个字节 ? ? ? 0, ? ? ? 0 ? ? ); ? int sendcount=m_psocket-Send(buf,multibytelen+1); //发送转换后的缓冲区 ? CString statusstr; ? statusstr.Format(TEXT(共发送字节数:%d),sendcount); ? m_status.SetWindowText(statusstr); //更新显示栏 } 程序接收到的字符串最后保存到CString tmpstr中. //接收函数片断 void MyCeSocket::OnReceive(int nErrorCode) { ? // TODO: Add your specialized code here and/or call the base class ? unsigned char p[129]; //接受缓冲区 ? ZeroMemory(p,sizeof(p)); //接收缓冲区清零 ? this-Receive(p,128); //接收128个字节 ? int widecharlen=MultiByteToWideChar( //计算从Ansi转换到Unicode后需要的字节数 ? ? ? CP_ACP, ? ? ? MB_COMPOSITE, ? ? ? (char*)p, //要转换的Ansi字符串 ? ? ? -1, //自动计算长度 ? ? ? 0, ? ? ? 0 ? ); ? CString tmpstr; ? tmpstr.GetBuffer(widecharle

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档