wce 串口通讯编程每个人都会遇到的问题
平台wce6.0, 开发工作vs2008,
我在wce平台下编写了一个串口通讯程序,用的是vs2008自带的SerialPort类,
public SerialPort comm = new SerialPort(); //new 一个实例
XP平台用串口调试助手
现象:
XP平台-->WCE平台 发送数据的时候,一切正常
比如: XP平台发字符串"0123456789" WCE平台串口接收"0123456789"
XP平台-->WCE平台 发送数据的时候,每个字符多一个空格
比如: WCE平台串口发字符串"0123456789" XP平台接收"0 1 2 3 4 5 6 7 8 9"
我使用a1.Replace(" ","");想把空格符取代掉都不行,好像WCE平台并不认为有空格,我也知道这是因为WCE是宽字符引起的,但是怎么解决呢,望高人指点.
还有,我的串口除了传数据以外,还要传JPEG图片,那要怎么处理一下呢?
[解决办法]
WinCE是宽字符的,一个字符占两字节,所以在WinXP上就多了个空格,你发送的时候用字节类型的接口就可以,不要用字符串类型的接口,我没有用什么自带的,我是自己写的,SendLine发送字符串,Send发送字节流.字节流是要指定长度的.
[解决办法]
发送数据到串口的时候,一般都需要把数据转成BYTE类型。串口接收到的也是BYTE类型数据,再转换出来就OK。
[解决办法]
int wideLen=MultiByteToWideChar(CP_ACP,MB_COMPOSITE,(char*)buf,-1,0,0);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,(char*)buf,-1,pRecvBuffer,wideLen);
[解决办法]
我的资源里面有实例,你可以看看
[解决办法]
不明白,楼下·····
[解决办法]
C#.net自己封装的函数不是很清楚,坛子里大多数人都用c++。
不过c#如果想进行宽窄字符的转换,也可以使用MultiByteToWideChar和MultiByteToWideChar两个API函数。c#调用API之前,先DllImport一下就可以了。
其实楼上们已经给你答案了,自己仔细思考动手实践一下吧。
直接用BYTE字节发送接收,WCE接收到串口数据之后直接格式化显示出来即可,也不用非要用上面两个API转换。
CString szReadData, szTemp;
for(int i = 0; i < nReadDataLength; ++i)
{
szTemp.Format(TEXT("%c"), *(uReadBuffer + i));
szReadData += szTemp;
}