Chinaunix

标题: 显示出的是乱码,怎么解决? [打印本页]

作者: joneson119    时间: 2008-06-04 11:07
标题: 显示出的是乱码,怎么解决?
我的电脑的com串口通过485连接了一个网络视频服务器,现在我通过如下代码接收到com串口缓冲区的数据。接收的数据我写入到c:\text.txt文件中,但是接收到的是乱码。我想问题是接收到的数据没有得到数据转换,请问,怎么转换呀,我觉得不单单是一个转换函数就可以搞定的吧!


  1. void CComDlg::OnReceive()
  2. {
  3.         // TODO: Add your control notification handler code here
  4.         OVERLAPPED m_osRead;
  5.         memset(&m_osRead,0,sizeof(OVERLAPPED));
  6.         m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);

  7.         COMSTAT ComStat;
  8.         DWORD dwErrorFlags;
  9.        
  10.         char str[512];
  11.         memset(str,0,512);
  12.         DWORD dwBytesRead=512;//读取的字节数
  13.         BOOL bReadStat;

  14.         ClearCommError(hCom,&dwErrorFlags,&ComStat);

  15.         dwBytesRead=min(dwBytesRead, (DWORD)ComStat.cbInQue);

  16.         bReadStat=ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);

  17.         if(!bReadStat)
  18.         {
  19.                 if(GetLastError()==ERROR_IO_PENDING)
  20.             //GetLastError()函数返回ERROR_IO_PENDING,表明串口正在进行读操作
  21.                 {
  22.                         WaitForSingleObject(m_osRead.hEvent,2000);
  23.                     //使用WaitForSingleObject函数等待,直到读操作完成或延时已达到2秒钟
  24.                     //当串口读操作进行完毕后,m_osRead的hEvent事件会变为有信号
  25.                 }
  26.         }
  27.                         FILE* stream = fopen("C:\\text.txt", "a+");
  28.                         fwrite(str, 1, sizeof(str), stream);
  29.                         fclose(stream);

  30.         PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
  31.         UpdateData(FALSE);
  32. }


复制代码

作者: joneson119    时间: 2008-06-04 11:44
大伙帮帮忙吧!Waiting online
作者: net_robber    时间: 2008-06-04 12:06
com口似乎要设置波特率

其他问题我想不到了

PS:我没有实践过
作者: joneson119    时间: 2008-06-04 14:46
波特率我在初始化代码中已经设置过了。这跟出现乱码没有关系的。
我试图用 fprintf(stream,"%x",str)替代fwrite(str, 1, sizeof(str), stream);
不过结果还是乱码。
作者: Sorehead    时间: 2008-06-04 17:27
网络视频,那不是二进制的吗,二进制跟乱码有关系吗。
作者: zhq_xue    时间: 2008-06-04 17:29
波特率不一致??
作者: joneson119    时间: 2008-06-05 15:07
我设置的波特率是一致的。程序和服务器设置是一样的。38400,19200,14400,9600。它们这几个我全试过了,均出现不同的乱码。上午我感觉是否超时。但还是一样的结果。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2