我的程序需要在WINCE下和一块不支持UNICODE的卡通信。我在发送函数里用
WideCharToMultiByte( CP_ACP, 0, buf, -1, temp, 256, NULL, NULL );
fWriteState=WriteFile(hPort,temp,dwCharToWrite,&dwBytesWritten,NULL);
把UNICODE转换成ASCII通过串口发送。在接收函数里用
fReadState=ReadFile(hPort,temp,dwLength,&dwLength,NULL);
MultiByteToWideChar(CP_ACP,0,temp,strlen(temp)+1,buf,sizeof(buf)/sizeof(buf[0]));
把ASCII码转换成UNICODE,结果显示出来的不正确。如我发送“123”,接收到“12”,而当我发“12345678”的时候,接收也是“12”,不知道是哪出了问题?
WideCharToMultiByte( CP_ACP, 0, buf, -1, temp, 256, NULL, NULL );
fWriteState=WriteFile(hPort,temp,dwCharToWrite,&dwBytesWritten,NULL);
把UNICODE转换成ASCII通过串口发送。在接收函数里用
fReadState=ReadFile(hPort,temp,dwLength,&dwLength,NULL);
MultiByteToWideChar(CP_ACP,0,temp,strlen(temp)+1,buf,sizeof(buf)/sizeof(buf[0]));
把ASCII码转换成UNICODE,结果显示出来的不正确。如我发送“123”,接收到“12”,而当我发“12345678”的时候,接收也是“12”,不知道是哪出了问题?
然后你的WriteFile中dwCharToWrite,&dwBytesWritten这两个参数值是多少?
我的写函数如下:
DWORD CSerial::WritePort(TCHAR *buf,DWORD dwCharToWrite)
{
BOOL fWriteState;
DWORD dwBytesWritten;
char *temp=new char[256];
WideCharToMultiByte( CP_ACP, 0, buf, -1, temp, 256, NULL, NULL );
fWriteState=WriteFile(hPort,temp,dwCharToWrite,&dwBytesWritten,NULL);
if(!fWriteState)
{
MessageBox(NULL,TEXT("Can't Write"),TEXT("Error"),MB_OK);
dwBytesWritten=0;
} return dwBytesWritten;
}