读书人

串口ReadPortThread读到数据后怎样正

发布时间: 2012-03-30 17:32:09 作者: rapoo

串口ReadPortThread读到数据后,怎样正确显示出来?
DWORD WINAPI ReadPortThread(LPVOID lpvoid)
{
BYTE Byte;
DWORD dwCommModemStatus,
dwBytesTransferred;
CString tempStr;

// Specify a set of events to be monitored for the port.
SetCommMask (hPort, EV_RXCHAR);

WaitCommEvent (hPort, &dwCommModemStatus, 0);
if (dwCommModemStatus & EV_RXCHAR)
{
DWORD length=0;
COMSTAT ComStat;
DWORD dwErrorFlags;
char *buf=NULL;
ClearCommError(hPort,&dwErrorFlags,&ComStat);
length=ComStat.cbInQue;
ReadFile(hPort,buf,length,&length,NULL);

CString temp=buf;
MessageBox(NULL,temp,TEXT( "Result "),MB_OK);
}

// Retrieve modem control-register values.
GetCommModemStatus (hPort, &dwCommModemStatus);
}
则消息框里为空。
在下查到些方案,如
if(dwLength> 0)

{

//从串口读取数据

TCHAR* buf=new TCHAR[256];

fReadState=ReadFile(hPort,buf,dwLength,&dwLength,NULL);
if(!fReadState)
{
//不能从串口读取数据
MessageBox(NULL,TEXT( "Error in read from serial port "),TEXT( "Read Error "),MB_OK);
}


else
{
//把数据赋值给全局变量
strInChar=buf;
}
delete[] buf;
}
问题抖出在类型转化、缓冲区之间数据拷贝的问题,不知道怎样解决。 各位帮帮忙看看。


[解决办法]
好像有类型转换函数,具体是什么忘了,自己看看书找找
[解决办法]
读出一串char,然后用mbstowcs转成WCHAR,就可以显示出来了
PDA用的是宽字符

读书人网 >WinCE

热点推荐