程序解读

定义全局变量

#define GPRS_PRO_SEQ_LEN      2
#define GPRS_PRO_DEV_ID_LEN     7 
#define GPRS_PRO_CMD_LEN      2
#define GPRS_PRO_DEVICE_ID   7
#define GPRS_PRO_BASE_LEN      17  //首先对协议中要使用的数据进行宏定义,包括流水号,ID字节长度等。

#define MEGA

#define SSID       "Itead_1(Public)"
#define PASSWORD   "27955416"  //定义wifi名和使用密码

#include "dht11.h"
dht11 DHT11;  //引入dht11库函数

#include "uartWIFI.h"
#include <SoftwareSerial.h>
WIFI wifi;  //引入wifi声明(源程序)

协议结构体定义

typedef struct
{
  u16 seq_num;
  u16 len;
  u8 dev_id[GPRS_PRO_DEVICE_ID];

  u16 command_id;
  u8 *pro_data;
}gprs_pro_cmd_t;

设定透传模式,实现在网络上的通信

void setup()

  wifi.begin();
  bool b = wifi.Initialize(STA, SSID, PASSWORD);
  if(!b)
  {
    DebugSerial.println("Init error");
  }
  delay(8000);  //确保模块有足够的时间获得IP地址
  String ipstring  = wifi.showIP();
  DebugSerial.println(ipstring);  //显示模块的IP地址
  
  delay(5000);
  wifi.confMux(1);
  delay(100);
  if(wifi.confServer(1,8080))
    DebugSerial.println("Server is set up"); 
}  //完成透传模式的设定

设置索引函数

static void gprs_pro_menue_handler(gprs_pro_cmd_t *com)
{
  u8 cmd_index=0;
  while(Gprs_protocol_menu[cmd_index].command_id != 0xFFFF)
  {
    if(com->command_id == Gprs_protocol_menu[cmd_index].command_id)
    {
      Gprs_protocol_menu[cmd_index].cmd_handler(com);
      break;
    }
    cmd_index ++;
  }
}//接收数据

void rec_data(){
    int rece_data = wifi.ReceiveMessage(buf);
    String tempstr = String(rece_data);
    if (strcmp(rece_data, "@@") == 0)
    {
      data = pro_protocol_analysis((u8*)&rece_data,tempstr.length)
    }
}

DHT11的函数设定

  void pro_avtice_temperature(void){
  gprs_pro_cmd_t local_com;
  memset((u8*)&local_com,0,sizeof(gprs_pro_cmd_t));
  local_com.pro_data = malloc(128);
  local_com.command_id = 0x0004;
  local_com.seq_num = 0x0001;
  local_com.dev_id = 0x30313233343536;//{0x30,0x31,0x32,0x33,0x34,0x35,0x36};
  //温度值读取:
  DHT11.read(7);
  local_com.pro_data = (u8*)&DHT11.temperature;
  local_com.len = 2;
  protocol_datapack(&local_com);
  }//温度读取函数

void pro_avtice_TeConnect(void){
  gprs_pro_cmd_t local_com; //结构体 
  memset((u8*)&local_com,0,sizeof(gprs_pro_cmd_t));
  local_com.pro_data = malloc(128);
  local_com.command_id = 0x0002;//终端登录
  local_com.seq_num = 0x0001;
  local_com.dev_id = 0x30313233343536;//{0x30,0x31,0x32,0x33,0x34,0x35,0x36};

  local_com.pro_data = 0x324235....;
  local_com.len = 74;
  protocol_datapack(&local_com);
  }//终端登录函数

心率传感函数设定

void gprs_pro_active_PingReq(void)  //心跳
{
  gprs_pro_cmd_t local_com;
  memset((u8*)&local_com,0,sizeof(gprs_pro_cmd_t));
  local_com.command_id = 0x0003;
  local_com.seq_num = 0x0001;
  local_com.dev_id = 0x30313233343536;
  gprs_pro_datapack(&local_com);
}

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hyperstepper是一个编程程序,它的主要功能是对步进电机进行控制。步进电机是一种常用的电机类型,其可精确控制旋转角度和位置。而Hyperstepper通过提供简单而又灵活的接口,使得用户可以轻松地控制步进电机的运动,从而实现各种各样的应用。 Hyperstepper的程序解读主要包括以下几个方面: 1. 初始化步进电机的参数:在使用步进电机之前,需要对其进行参数初始化,以确定其角度、速度和加速度等。Hyperstepper的程序会读取用户输入的参数,并进行相应的初始化操作,从而为后续的运动控制做好准备。 2. 控制步进电机的运动:Hyperstepper的程序提供了一系列的控制指令,用于控制步进电机的旋转。例如,可以通过指定旋转角度和速度等参数,使步进电机按照指定的路径和速度进行运动。程序会根据用户输入的指令,调用相应的函数来实现步进电机的控制。 3. 处理异常情况:在步进电机的运动过程中,可能会出现一些异常情况,例如超速、超过边界等。Hyperstepper的程序会检测并处理这些异常情况,以确保步进电机的安全和正常运行。 4. 提供接口和文档:Hyperstepper的程序不仅仅是一个软件,还提供了相应的接口和文档,方便用户进行扩展和二次开发。用户可以通过接口与程序进行交互,实现更加复杂和个性化的步进电机控制。 总的来说,Hyperstepper的程序解读涉及到步进电机的参数初始化、运动控制、异常处理以及提供接口和文档等方面。这个程序的设计目的是为了方便用户对步进电机进行控制,并且保证了步进电机的运动安全和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值