我该怎么避免使用全局变量
dsp上的串口接收来的命令,判断命令号来执行不同的动作
switch(gSciRecBuf[2])
{
case CMD_TEST_REDAY:
Sci_TestReady(gSciRecBuf[3]);
break;
case CMD_MOVE_WITH_PRINT: //0x01
Sci_MoveWithPrint(gSciRecBuf[3]);
break;
case CMD_MOVE_WITH_NOPRINT:
Sci_MoveWithNoPrint(gSciRecBuf[3]);
break;
case CMD_STOP_PRINT: //0x10
Sci_StopPrint(gSciRecBuf[3]) ;
break;
case CMD_RETURN_CURRENT_POSITION:
break;
case CMD_RETURN_ACTION_RESULT:
break;
case CMD_MOVE_TO_ORIGIN:
Sci_MoveToOrigin(gSciRecBuf[3]);
break;
case CMD_MOVE_TEST:
Sci_MoveTest(gSciRecBuf[3]) ;
break;
case CMD_DSP_HANDSHAKE:
Sci_PC_ReturnHandShake(gSciRecBuf[3]);
break;
case CMD_BREAKLINE:
Sci_PC_ReturnBreakLine(gSciRecBuf[3]) ;
break ;
case CMD_SET_Z_SPEED:
Sci_Set_Z_Speed(gSciBufToSend[3]) ;
break ;
default:
break;
}
我现在是在相应的函数里设置一个全局变量(如果需要的话), 但全局变量多了, 我自己都觉得难受
例如
void Sci_PC_ReturnHandShake(Uint16 framenum)
{
gPC_ReturnHandShake = 1 ;
}
这些函数都是根据串口中断接收来的数据进行相关处理的
我想去掉这些全局变量, 但不知道该怎么改, 主函数里才可以及时的得知执行了此函数
分享到:
------解决方案--------------------
能不能不使用全局变量取决于你的程序结构,只看这段代码是分析不出来的。