- 论坛徽章:
- 0
|
我的电脑的com串口通过485连接了一个网络视频服务器,现在我通过如下代码接收到com串口缓冲区的数据。接收的数据我写入到c:\text.txt文件中,但是接收到的是乱码。我想问题是接收到的数据没有得到数据转换,请问,怎么转换呀,我觉得不单单是一个转换函数就可以搞定的吧!
- void CComDlg::OnReceive()
- {
- // TODO: Add your control notification handler code here
- OVERLAPPED m_osRead;
- memset(&m_osRead,0,sizeof(OVERLAPPED));
- m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
- COMSTAT ComStat;
- DWORD dwErrorFlags;
-
- char str[512];
- memset(str,0,512);
- DWORD dwBytesRead=512;//读取的字节数
- BOOL bReadStat;
- ClearCommError(hCom,&dwErrorFlags,&ComStat);
- dwBytesRead=min(dwBytesRead, (DWORD)ComStat.cbInQue);
- bReadStat=ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);
- if(!bReadStat)
- {
- if(GetLastError()==ERROR_IO_PENDING)
- //GetLastError()函数返回ERROR_IO_PENDING,表明串口正在进行读操作
- {
- WaitForSingleObject(m_osRead.hEvent,2000);
- //使用WaitForSingleObject函数等待,直到读操作完成或延时已达到2秒钟
- //当串口读操作进行完毕后,m_osRead的hEvent事件会变为有信号
- }
- }
- FILE* stream = fopen("C:\\text.txt", "a+");
- fwrite(str, 1, sizeof(str), stream);
- fclose(stream);
- PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
- UpdateData(FALSE);
- }
复制代码 |
|