如何修改下面函数

文章描述了一个使用ZigBee模块构建的智能光照采集系统,节点1采集光照数据并通过串口发送给节点2,同时接受上位机命令并反馈光照电压。节点2根据接收到的数据控制LED灯状态,并定期向PC机发送警报信息。
摘要由CSDN通过智能技术生成

修改已下代码

发送:

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_mcu.h"
#include "hal_int.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include <stdio.h>
#include <string.h>
#include "hal_uart.h"
#include <stdarg.h>

#define RF_CHANNEL  18
#define My_ADDR     0x400A
#define Pan_ID      0x0840
#define SEND_ADDR   0x400B

unsigned char uart_recv_cmd = 0;
unsigned int adc_value = 0;
float adc_volt = 0;
unsigned char rf_send_dat = 0;
unsigned char str[64];

static basicRfCfg_t BasicRf_Cfg; 
void BasicRf_Init(void)
{
  BasicRf_Cfg.myAddr      = My_ADDR;
  BasicRf_Cfg.panId       = Pan_ID;
  BasicRf_Cfg.channel     = RF_CHANNEL;
  BasicRf_Cfg.ackRequest  = TRUE;
  while(basicRfInit(&BasicRf_Cfg)==FAILED);
  basicRfReceiveOn();
  }

void ADC_Init()
{
   APCFG  |= 0X01;
   P0SEL  |= ~0X01;
   P0DIR  &= ~0X01;
}

void ADC_Data()
{
  
  ADCCON3=0XB0;
  while(!(ADCCON1 & 0X80));
  adc_value =ADCH<<8;
  adc_value =adc_value|ADCL;
  adc_value = adc_value>>3;
  adc_volt =(adc_value*3.3)/4096;
  rf_send_dat=((int)(adc_volt*10));
  basicRfSendPacket(SEND_ADDR,&rf_send_dat,1);
}

void Uart_W1_hhy()
{
  uint16 Flag=0;
  Flag = halUartRxLen();
  if(Flag>0)
  {
   halUartRead(&uart_recv_cmd,1);
   if(uart_recv_cmd==0x40)
    {
      sprintf((char*)str,"xxx同学,你的传感器的光照电压为 %.2f V.\r\n",adc_volt);
      halUartWrite(str,sizeof(str));
    }
  }
  
}

void main()
{
  halBoardInit(); 
  BasicRf_Init();
  while(1)
  {
    ADC_Data();
   Uart_W1_hhy();
  }
}

接收:

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_mcu.h"
#include "hal_int.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include "hal_uart.h"

#define RF_CHANNEL  18
#define My_ADDR     0x400B
#define Pan_ID      0x0840
#define SEND_ADDR   0x400A

unsigned char BasicRf_recv_cmd = 0;

static basicRfCfg_t BasicRf_Cfg; 
void BasicRf_Init(void)
{
  BasicRf_Cfg.myAddr      = My_ADDR;
  BasicRf_Cfg.panId       = Pan_ID;
  BasicRf_Cfg.channel     = RF_CHANNEL;
  BasicRf_Cfg.ackRequest  = TRUE;
  while(basicRfInit(&BasicRf_Cfg)==FAILED);
  basicRfReceiveOn();
  }

void Rece_Mes()
{
 if(basicRfPacketIsReady()==TRUE) 
 {
  basicRfReceive(&BasicRf_recv_cmd,1,NULL);
   if(BasicRf_recv_cmd<10)
   {
      halLedSet(1);
      halLedSet(2);  
   }
   else if(BasicRf_recv_cmd>10&&BasicRf_recv_cmd<20)
   {
      halLedSet(1);
      halLedClear(2);  
   }
   else 
  {
     halLedClear(1);
     halLedClear(2);
  
  }     
 }
}
void main()
{
   halBoardInit();
   BasicRf_Init();
  while(1)
  {
    Rece_Mes();
  }
}

使之能够实现

应用BasicRf软件库实现如下功能:1、采用ZigBee模块(节点1)、带串口的ZigBee模块(节点2)和PC机组成一套智能光照采集系统。2、节点1采集光照数据信息,并将其循环发送至节点2;3、节点1通过串口连接到上位机,波特率为9600,当上位机收到请求指令0x+学号后两位时,向上位机上报光照电压:“XXX同学,你的传感器光照电压为:xxxV”。4、节点2收到节点1发过来的数据后进行判定,如果数据大于20则Led1,Led2关闭,如果数据大于10小于20则Led1开,Led2关,如果数据小于10,则Led1,Led2开启。5、节点2通过串口连接上位机,波特率为9600,每隔5秒显示一次警报信息:当前灯光适中/当前光照较强/当前光照较

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、简介   AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 二、使用   1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。   2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。   3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。   4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 三、备注   1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。   2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。   3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。   4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值