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

串口写线程发生的异常 0xC0000005: 读取位置 0x00000680 时发生访问冲突.大家分析上,是什么原因

2012-08-08 
串口写线程发生的错误 0xC0000005: 读取位置 0x00000680 时发生访问冲突.,大家分析下,是什么原因BOOL CCES

串口写线程发生的错误 0xC0000005: 读取位置 0x00000680 时发生访问冲突.,大家分析下,是什么原因
BOOL CCESeries::WritePort(BYTE *buf, int bufLen)
{
DWORD dwNumBytesWritten;
DWORD dwHaveNumWritten =0 ; //已经写入多少
PurgeComm( m_hComm, PURGE_RXCLEAR |PURGE_RXABORT);//清除接收。
ASSERT(m_hComm != INVALID_HANDLE_VALUE);
do
{
if (WriteFile (m_hComm,//串口句柄 
buf+dwHaveNumWritten,//被写数据缓冲区 
bufLen - dwHaveNumWritten, //被写数据缓冲区大小
&dwNumBytesWritten,//函数执行成功后,返回实际向串口写的个数
NULL))//此处必须设置NULL
{
dwHaveNumWritten = dwHaveNumWritten + dwNumBytesWritten;
//写入完成-------------------------走到这句一下子就跳到读线程了if (dwHaveNumWritten ==(DWORD) bufLen)
{
break;
}
}
else
{
return FALSE;
}
}while (TRUE);
return TRUE;
}

跳到读线程这句
//触发读取回调函数
ceSeries->m_OnSeriesRead(ceSeries->m_pPortOwner,readBuf,actualReadLen);
就走不动了,弹出上述错误:
Unhandled exception at 0x00000680 in dfss.exe: 0xC0000005: 读取位置 0x00000680 时发生访问冲突.

[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

[解决办法]
actualReadLen值异常 最好一个一个字节的读
[解决办法]
ceSeries->m_pPortOwner,readBuf
多半是指针ceSeries或者readBuf指向的地方不正确.

热点排行