包头书店无线发送程序因情况特殊,改动如下
18个光盘柜
//--------------------------------------------- rf905
void wireless (void)
{
unsigned char cstates;
char RF_TimeWait_count;
RF_TimeWait_count = 4; // 如果接收不到,每半秒发送一次,共4次。
cstates= 2; //
do{
switch(cstates)
{
case 1 :
if (Flags.RF905test == 0) //如果有无线,就发送无线
cstates ++;
else cstates = 7; //没有无线model,就用有线。
break;
case 2:
SetTxMode(); //打开接收模式
ClrWdt();
Delay10TCYx(250);
ClrWdt();
Delay10TCYx(250);
// TxPacket( RXTxBuf[1],RXTxBuf[2]); // 把接收的数据发送给下位机。
if ((RXTxBuf[1] == 0x31)&&(RXTxBuf[2]==0x30))
{
TxPacket(0x31,0x30); //先发10号机
}
else
{
if (RXTxBuf[1] == 0x30)
{
TxPacket(0x30,0x31); // 再发给01号机
}
else if (RXTxBuf[1] == 0x31) //最后发18号机
{
TxPacket(0x31,0x38);
}
}
ClrWdt();
Delay10TCYx(250);
ClrWdt();
Delay10TCYx(250);
ClrWdt();
SetRxMode(); // 发送完后进入接收模式,以节省功耗
cstates ++;
RF_WaitTime = 0; // 半秒时间延时开始。
break;
case 3:
SetRxMode(); // 发送完后进入接收模式,以节省功耗
if (RxPacket() == 1) cstates = 6; //接收到回发的数据
else cstates ++; // 没有接收到回发的数据。
break;
case 4:
ClrWdt();
if (RF_WaitTime>4000) cstates = 5; // 等待时间超过0.5s,则再次发送。
else cstates = 3;
break;
case 5:
if ((--RF_TimeWait_count)>0) cstates = 2; // 规定的次数没有完,则再次发送
else
{
UartOut ('N'); // 发送了n次后,没有应答
UartOut ('O');
UartOut ('A');
UartOut ('s');
UartOut ('k');
cstates =7;
}
break;
case 6:
UartOut ('A'); // 发送正确,且接收到应答
UartOut ('s');
UartOut ('k');
UartOut ('O');
UartOut ('K');
cstates = 7;
break;
case 7:
UsartBuffer[13]= 'R';
UsartBuffer[14] = 'F';
break;
}
}while(cstates != 7);
}
文章评论(0条评论)
登录后参与讨论