首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

串口ReadPortThread读到数据后,怎样正确显示出来?解决方法

2012-03-30 
串口ReadPortThread读到数据后,怎样正确显示出来?DWORDWINAPIReadPortThread(LPVOIDlpvoid){BYTEByteDWOR

串口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用的是宽字符

热点排行