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

求大神看看小弟我的程序哪里出错了?编译没错,但是运行到这就错了

2012-08-13 
求大神看看我的程序哪里出错了?编译没错,但是运行到这就错了。unsigned char UartRCV_Buffer[3][60]//主串

求大神看看我的程序哪里出错了?编译没错,但是运行到这就错了。

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;
}


[解决办法]
单步调试和设断点调试是程序员必须掌握的技能之一。

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

[解决办法]
打印log,CE是最难调试的啦@!~
长期Wince建议写一个通用的Log库!~
[解决办法]

探讨

单步调试和设断点调试是程序员必须掌握的技能之一。

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

热点排行