/*********************************************
** 数据处理任务,判断接收来的数据是否符合格式
** 根据接收数据情况触发显示
** 计算时先将ASCII码转化成Uint8
*********************************************/
Uint32 Result = 0;
void DealTask()
{
static Uint16 Step = 0;
Uint8 ByteCnt;
Uint8 Erro;
Uint8 PartData;
static Uint32 DataA = 0;
static Uint32 DataB = 0;
if (RxFlag) // 一组数据发送完毕开始处理
{
RxFlag = 0;
ByteCnt = 0;
Erro = 0;
switch (Step)
{
case(0):
{
while (RxBuffA.Get(&RxBuffA, &PartData)) ; //清空缓冲区
PostSend(S_A);
Step = 1;
} break;
case(1):
{
DataA = 0;
while (RxBuffA.Get(&RxBuffA, &PartData)) // 全部读出
{
if ((PartData >= 0x30) && (PartData <= 0x39))
{
PartData -= 0x30;
DataA *= 10;
DataA += PartData;
if (++ByteCnt > 4)
{
Erro = 1;
break;
}
}
else
{
Erro = 1;
break;
}
}
if (!Erro)
{
Step = 2;
PostSend(S_B);
}
else
{
PostSend(S_ERRO);
}
} break;
case 2:
{
DataB = 0;
while (RxBuffA.Get(&RxBuffA, &PartData))
{
if ((PartData >= 0x30) && (PartData <= 0x39))
{
PartData -= 0x30;
DataB *= 10;
DataB += PartData;
if (++ByteCnt > 4)
{
Erro = 1;
break;
}
}
else
{
Erro = 1;
break;
}
}
if (!Erro)
{
Step = 3;
PostSend(S_O);
}
else
{
PostSend(S_ERRO);
}
} break;
case 3:
{
while (RxBuffA.Get(&RxBuffA, &PartData)) // 最后符号有效
{
if (PartData == '+')
Result = DataA + DataB;
else if (PartData == '-')
Result
|