//子节点lora发送部分
void LoRa_SendData(void)
{
u8 temperature=0;//存放温度
u8 humidity=0;//存放湿度
u8 sunlight=0;//存放光照值
u8 rain=0;//存放降雨值
u8 data[100]={0};//定向发送的载体数组
u16 addr;
u8 chn;
u16 i=0;
unsigned char string[5]={0};
DHT11_Read_Data(&temperature,&humidity); //读取温湿度值
sunlight = Lsens_Get_Val();
rain= Get_rain_Average(1,10);
//LORA_MD0=0;//将模块设置为通信功能
string[0]=temperature;//存放温度
string[1]=humidity;//存放湿度
string[2]=sunlight;//存放光照
string[3]=rain;//存放降雨值
string[4]=0X55;
addr = (u16)obj_addr;//目标地址
chn = obj_chn;//目标信道
data[i++] =(addr>>8)&0xff;//高位地址
data[i++] = addr&0xff;//低位地址
data[i] = chn;//无线信道
for(i=0;i<5;i++)//数据写到发送BUFF
{
date[3+i] = string[i];
}
for(i=0;i<8;i++)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);//循环发送,直到发送完毕
USART_SendData(USART3,data[i]);
}
printf("温度为:%d,湿度为:%d,光照为:%d,降雨为:%d\r\n",temperature,humidity,sunlight,rain);
printf("已发送给汇聚节点");
}
|