新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2015-1-26
- 在线时间
- 0 小时
|

楼主 |
发表于 2015-2-13 13:52:43
|
显示全部楼层
回复【2楼】styleno1:
---------------------------------
我也是这么想的,我现在的思路是这样的,不知道可以不可以:
if(USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET)
{
USART_ClearFlag(USART3,USART_FLAG_RXNE);
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
//接收数据
RdssData[2] = USART_ReceiveData(USART3);
RdssData[0] = RdssData[1];
RdssData[1] = RdssData[2];
if(Flag==0)
{
if((RdssData[0]=='$')&&(RdssData[1]=='T')) //通信申请 $TXSQ
{
Count = 1; Flag = 1;
RecRDSS_Data[RecRDSSDatalength++] = '$';
}
else if((RdssData[0]=='$')&&(RdssData[1]=='I')) //IC检测 $ICJC
{
Count = 2; Flag = 1;
ICJC[RecRDSSDatalength++] = '$';
}
else if((RdssData[0]=='$')&&(RdssData[1]=='Z')) //系统自检 $XTZJ
{
Count = 3; Flag = 1;
XTZJ[RecRDSSDatalength++] = '$';
}
else if((RdssData[0]=='$')&&(RdssData[1]=='S')) //系统自检 $SJSC
{
Count = 4; Flag = 1;
SJSC[RecRDSSDatalength++] = '$';
}
}
switch(Count)
{
case 1: //通信申请 $TXSQ
RecRDSS_Data[RecRDSSDatalength++] = USART_ReceiveData(USART3);
if(RecRDSS_Data[6] == RecRDSSDatalength)
{
RecRDSS_Data[RecRDSSDatalength] = '\0';
Count=0; Flag = 0;
}
break;
case 2: //IC检测 $ICJC
ICJC[RecRDSSDatalength++] = USART_ReceiveData(USART3);
if(RecRDSSDatalength == ICJC[6])
{
ICJC[RecRDSSDatalength] = '\0';
Count=0; Flag = 0;
}
break;
case 3: //系统自检 $XTZJ
XTZJ[RecRDSSDatalength++] = USART_ReceiveData(USART3);
if( RecRDSSDatalength == XTZJ[6])
{
XTZJ[RecRDSSDatalength] = '\0';
Count=0; Flag = 0;
}
break;
case 4: //系统自检 $SJSC
SJSC[RecRDSSDatalength++] = USART_ReceiveData(USART3);
if( RecRDSSDatalength == SJSC[6])
{
SJSC[RecRDSSDatalength] = '\0';
Count=0; Flag = 0;
}
break;
default: ;
break;
} |
|