串口通信程序 BYTE数组赋值问题
我的串口通信程序可以正常收发数据,但我需要把接收到的数据赋值给BYTE类型的一个数组,以便提取有用数据进行判断;接收串口数据的函数中,把接收到的数据赋值给BYTE型数组的程序如下:LONG CMFC2Dlg::OnCommunication(WPARAM ch, LPARAM port) //接收显示串口数据
{
if (port <= 0 || port > 4)
return -1;
//不添加以下几个语句,程序可以正常收发数据。BYTE RxData[255]我已经定义并初始化了。编译可以通过,但实际接收数据时SetSize(),GetSize(),GetAt()这三个程序会产生中断(没有具体的错误说明)。
CByteArray *RXBytes1 ;
// RXBytes1->SetSize(256);
RXBytes1=(CByteArray*)ch;
int lengthTemp = (int)RXBytes->GetSize();
for (int i = 0; i < lengthTemp; i++)
{
RxData[i] = RXBytes->GetAt(i);
}
……用于显示接收数据的部分就不贴出来了。(串口类用的是网上很常见的SerialPort类)
小弟已经困惑很久了,跪求大神指点迷津。
注:产生中断的位置如下:
AFXCOLL_INLINE INT_PTR CByteArray::GetSize() const //这个位置产生中断产生中断,经过我的测试CByteArray类的函数,只要在上面使用了,都会产生相应的中断
{ return m_nSize; }
_AFXCOLL_INLINE INT_PTR CByteArray::GetCount() const
{ return m_nSize; }
_AFXCOLL_INLINE BOOL CByteArray::IsEmpty() const
{ return m_nSize == 0; }
_AFXCOLL_INLINE INT_PTR CByteArray::GetUpperBound() const
{ return m_nSize-1; }