📄 xbeepro.c
字号:
#define ENABLE_BIT_DEFINITIONS
#include <iom88.h>
#include "XBeePro.h"
#include "UART.h"
char XBeeProBuff[16];
char ChannelIncrement(char c)
{
char t;
t=c+1;
if(t == 'G')
{
t='C';
}
return t;
}
void XBeeProSendCommand(char* s)
{
/* 将接受缓冲区中的数据全部读出,以便进入命令模式,进行配置! */
while (rx_counter) //如果接收缓冲区中有数据
{
UartGetChar(); //读出数据
}
while(tx_counter) //等待所有数据全部发出
{
}
UartPutString(s);
while(tx_counter) //等待所有数据全部发出
{
}
}
char XBeeProGetAckByte()
{
char c;
while(rx_counter == 0)
{
}
c=UartGetChar();
return c;
}
unsigned char XBeeProGetAck()
{
// unsigned long timeover=0,tick;
// unsigned int index=0;
char t1,t2,t3;
/* while(!timeover)
{
tick=0;
while (rx_counter == 0 && timeover ==0) //如果接收缓冲区中有数据
{
tick++;
if(tick > 65535L)
{
timeover=1;
}
}
if(timeover == 0)
{
XBeeProBuff[index]=UartGetChar();
index++;
}
}
return index;
*/
t1=XBeeProGetAckByte();
t2=XBeeProGetAckByte();
t3=XBeeProGetAckByte();
if((t1 != 'O') || (t2 != 'K') || (t3 != '\r') )
{
return 0; //回码显示AT指令执行失败
}
return 1; //回码显示AT指令执行成功
}
unsigned char XBeeProEnterCommandMode()
{
unsigned char r;
XBeeProSendCommand("+++");
r=XBeeProGetAck();
return r;
}
int XBeeProExitCommandMode()
{
return 1;
}
unsigned char XBeeProChangeChannel()
{
char C,r;
if(XBeeProEnterCommandMode() == 0) return 0;
XBeeProSendCommand("ATCH\r");
C=XBeeProGetAckByte();
r=XBeeProGetAckByte(); //收回通道数后面的CR
if(r != '\r') return 0;
C=ChannelIncrement(C);
XBeeProBuff[0]='A';
XBeeProBuff[1]='T';
XBeeProBuff[2]='C';
XBeeProBuff[3]='H';
XBeeProBuff[4]=' ';
XBeeProBuff[5]=C;
XBeeProBuff[6]='\r';
XBeeProBuff[7]='\0';
XBeeProSendCommand(XBeeProBuff); //更改通道号
r = XBeeProGetAck();
if( r == 0)
{
return 0;
}
/*
XBeeProSendCommand("ATWR\r"); //写入非易失性存储器
r = XBeeProGetAck();
if( r == 0)
{
return 0;
}
*/
XBeeProSendCommand("ATCN\r"); //退出命令模式
r = XBeeProGetAck();
if( r == 0)
{
return 0;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -