求大神看看我的程序哪里出错了?编译没错,但是运行到这就错了。
小羊同学 2012-06-29 03:52:45
unsigned char UartRCV_Buffer[3][60]; //主串口数据接收buffer
unsigned char UartRCV_pkt_InIdx;
unsigned char* pUartRx;//接收缓存指针
int CSerialPortDlg::FuncReceiveDataPacket(unsigned char * nRecvData/*,unsigned char *pRecv*/)
{
unsigned char nRECV_COUNT = *nRecvData;
static char PktLen = 3, Uart_RxCount;//用來計數
if(UartRCV_pkt_InIdx>2)UartRCV_pkt_InIdx=0;
if (Uart_RxCount == 0)
{
if (nRECV_COUNT== 0xfe)
{
Uart_RxCount++;
}
return 0;
}
else if (Uart_RxCount == 1) //接收第二字节
{
if ((nRECV_COUNT >> 6) > VOICE)//同步或者监听
{
PktLen = 4;
}
else if ((nRECV_COUNT >> 6) == VOICE)
{
PktLen = 25;
}
else
{
PktLen = ((nRECV_COUNT&0x07) << 2) + 2;
}
pUartRx = &UartRCV_Buffer[UartRCV_pkt_InIdx][0] ;// &UartSlotPst->Buffer[Uart_Index][0];
pUartRx[0] = 0xfe;
pUartRx[Uart_RxCount++] = nRECV_COUNT;
return 0 ;
}
else if (Uart_RxCount < (PktLen - 1))
{
pUartRx[Uart_RxCount++] = nRECV_COUNT;
return 0;
}
else if (Uart_RxCount == (PktLen - 1))
{
pUartRx[Uart_RxCount] = nRECV_COUNT;
Uart_RxCount = 0;
}
//更新索引
if ((++UartRCV_pkt_InIdx) >( 3-1))
{
UartRCV_pkt_InIdx = 0;
return 0;
}
else
{
Uart_RxCount = 0;
}
return 0;
}