Chinaunix
标题:
显示出的是乱码,怎么解决?
[打印本页]
作者:
joneson119
时间:
2008-06-04 11:07
标题:
显示出的是乱码,怎么解决?
我的电脑的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);
}
复制代码
作者:
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