一个关于串口编程的问题

pursuit 2003-10-09 11:10:49
我要用WINCE下的应用程序通过串口去控制一块控制卡,控制卡的接收为ANSI字符,而WINCE下为UNICODE字符,是否需要在传输和接收时进行UNICODE与ANSI的转换,如何转换?有什么别的解决方法没有?谢谢
...全文
29 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonelyprince 2003-11-14
  • 打赏
  • 举报
回复
ReadFile()读到的数据也存到btCmd里,
然后MultiByteToWideChar(),就可以了,如果要显示的话,
字符转换是不可避免的!
lonelyprince 2003-11-13
  • 打赏
  • 举报
回复
WideCharToMultiByte转换后发送出去的是ANSI字符!
用WINCE下的应用程序通过串口去控制控制卡,这应该用不到显示,所以我觉得没有必要用
unicode,用ANSI字符就行了,
比如,你想控制modem,如此定义:
BYTE btCmd[20];
btCmd[0]='A';
btCmd[1]='T';
btCmd[2]='D';
btCmd[3]='1';
btCmd[4]='6';
btCmd[5]='3';
btCmd[6]=13;
btCmd[7]=10;
WriteFile(m_hComm,btCmd,8,&len,NULL);
就可以了。

pursuit 2003-11-13
  • 打赏
  • 举报
回复
lonelyprince(龙):
但我要把从控制卡返回的信息显示给用户看的
yaj95 2003-11-12
  • 打赏
  • 举报
回复
用这个函数试试
wcstombs(szTmp, string, length );
pursuit 2003-11-11
  • 打赏
  • 举报
回复
hk028(胡里胡涂):
不转换的话发送接收正确。用WideCharToMultiByte转换后发送,接收函数中接收后用MultiByteToWideChar转换显示发送和接收的字符不一致。
lonelyprince(龙) :
那是不是说我用WideCharToMultiByte转换后发送出去的是ANSI字符,而没有转换的话发送的则是UNICODE字符呢?
lonelyprince 2003-11-05
  • 打赏
  • 举报
回复
"串口通讯的函数ReadFile()和WriteFile()也是基于UNICODE的,"哪里有这种说法?
EVC下显示函数都是UNICODE版本的,ReadFile(),WriteFile()支持ANSI字符。

hk028 2003-11-05
  • 打赏
  • 举报
回复
如果不转换是否发送是否正确呢
yifeng_ch 2003-10-29
  • 打赏
  • 举报
回复
WideCharToMultiByte,MultiByteToWideChar
pursuit 2003-10-10
  • 打赏
  • 举报
回复
问题是在WINCE中,串口通讯的函数ReadFile()和WriteFile()也是基于UNICODE的,把要发送的字符用楼上的函数处理,接收到的字符用MultiByteToWideChar处理后,自发自收都不正确啊
wwqhai 2003-10-09
  • 打赏
  • 举报
回复
需要转换为ASCII字符串,具体的函数可以使用WideCharToMultiByte(),该函数的使用方法可以在MSDN上找到。
另外如果你的字符串全是英文的话,可以自己做个函数检查每个字符串,将Unicode字符串中的偶数字节去掉,就变为ASCII字符串了,然后在通过窗口发送出去,一切就OK了!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧