arduino 与 汉枫HP_LPT100 wifi模块:第一篇 进入命令模式

 很简单的功能,就不做详细说明了 直接上图和代码好了。

arduino 与 汉枫HP_LPT100 wifi模块:第一篇 进入命令模式_第1张图片

arduino 
       用串口 debug 还是第一次见 ,比较麻烦。

#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
#define  recv 0
#define  ok    1
#define standby 2
 
SoftwareSerial Wifi_Serial(rxPin,txPin);
int  read_usb_status = standby;
int  read_wifi_status = standby;
int pos = 0;
unsigned char recvbuff[100];
unsigned char sendbuff[100];
int wifi_length = 0;
int usb_length = 0;
 
void setup() {
  Serial.begin(9600);
  Wifi_Serial.begin(9600);
  pinMode(rxPin,INPUT);
  pinMode(txPin,OUTPUT);
  
  memset(recvbuff,0,sizeof(recvbuff));
  memset(sendbuff,0,sizeof(sendbuff));
  
  Wifi_Serial.listen();
    
    send_Serial(Wifi_Serial,"+++");
    
}
void loop() {
    
    while(Wifi_Serial.available())
    {
        read_wifi_status = recv;
        read_Serial();
        delay(2);
    }
    
    if(read_wifi_status == ok)
    {
        Auto_Wifi_Op();
        read_wifi_status = standby;
        wifi_length = 0;
    }
    
    
    while(Serial.available())
    {
        read_usb_status = recv;
        read_com();
        delay(2);
    }
    
    if(read_usb_status == ok)
    {
        com_Op();
        read_usb_status = standby;
        usb_length = 0;
    }
}
void Auto_Wifi_Op()
{
    recvbuff[wifi_length]='\0';            //字符串接收完毕之后加个零防止strcmp判断出错?
    if(strcmp((const char *)recvbuff,"a") == 0)
    {
        delay(2);
        send_Serial(Wifi_Serial,"a");
        // Serial.print("send_Serial a ");
    }
   
  Serial.write((const char *)recvbuff);
}
 
void com_Op() 
{
    recvbuff[usb_length]='\n';
    Wifi_Serial.write((const char *)recvbuff);
    
}
 
void read_Serial()
{
    char ch;
        if(wifi_length < 100)
        {
            ch = Wifi_Serial.read();
            if(ch >0)
            {
                recvbuff[wifi_length]=ch;
            }
            wifi_length ++;
            if(!Wifi_Serial.available()) read_wifi_status = ok ;
        }else{
            if(pos == 0)                             //超过缓存区就让它 流式打印出来?
            {
                Serial.write((const char *)recvbuff,100);
                
            }
            delay(2);
            display_stream();
            //Serial.println("wifi data more than 100 bytes"); 
        }
        
}
 
void  read_com()
{
    char ch;
        if(usb_length < 100)
        {
            ch = Serial.read();
            if(ch >0)
            {   
                recvbuff[usb_length]=ch;
            }
            if(!Serial.available()) read_usb_status = ok ;
            usb_length ++;
        }else{
            usb_length = 0;
            Serial.println("wifi data more than 100 bytes"); 
        }
}
 
void send_Serial(SoftwareSerial s,const char  *string)
{
    s.write(string);
}
 
void display_stream()
{
    pos = 1;
    Serial.write(Wifi_Serial.read());   
}

上电运行如下图所示。

你可能感兴趣的:(arduino 与 汉枫HP_LPT100 wifi模块:第一篇 进入命令模式)