双源电子

在线客服
 工作时间
周一至周五 :8:30-17:30
周六至周日 :9:00-17:00

ABT主板(WIFI版)调试记录2

今天把程序稍作了更改,这样就可以通过网页控制板子了,除了控制8266的指示灯外,还可以控制NANO的D13管脚。

主要代码如下:

8266程序:

void loop() {

 // Check if a client hasconnected

 WiFiClient client =server.available();

 if (!client) {

   return;

 }

 

 // Wait until the client sendssome data

 Serial.println("newclient");

 while(!client.available()){

   delay(1);

 }  

 // Read the first line of therequest

 String request =client.readStringUntil('\r');

 Serial.println("getdata:");

 Serial.println(request);

 client.flush();  

 // Match the request

 int value = LOW;

 if(request.indexOf("/LED=ON") != -1) {

   digitalWrite(ledPin, LOW);

   value = LOW;

 }

 if(request.indexOf("/LED=OFF") != -1){

   digitalWrite(ledPin, HIGH);

   value = HIGH;

 }

 if(request.indexOf("/D13=ON") != -1) {

  Serial.println("ABTDW13,1#"); //串口向328P发数据(自定义协议)

 }

 if(request.indexOf("/D13=OFF") != -1){

  Serial.println("ABTDW13,0#"); //串口向328P发数据(自定义协议)

 }

 // Return the response

 client.println("HTTP/1.1200 OK");

client.println("Content-Type: text/html");

 client.println("");//  do not forget this one

client.println("<!DOCTYPE HTML>");

client.println("<html>");  

 client.print("Led pin isnow: ");

 

 if(value == LOW) {

  client.print("On");  

 } else {

   client.print("Off");

 }

client.println("<br><br>");

 client.println("Click <ahref=\"/LED=ON\">here</a> turn the LED on pin 2ON<br>");

 client.println("Click <ahref=\"/LED=OFF\">here</a> turn the LED on pin 2OFF<br>");

 client.println("Click <ahref=\"/D13=ON\">here</a> turn NANO on D13ON<br>");

 client.println("Click <ahref=\"/D13=OFF\">here</a> turn NANO on D13OFF<br>");

client.println("</html>");

 delay(1);

 Serial.println("Clientdisonnected");

 Serial.println("");

}

328P程序(部分):

串口接收部分:

while(Serial.available()>0)

 {

   a = (char)(Serial.read());//保存接收字符

   if(a=='A'&&eFlag==0)

    {

         eFlag=1;          

   }

   if(eFlag==1)

   {

         readcmd[rbytes++]=a;

   }

   if(rbytes==2)

   {

         if(readcmd[1]!='B')

         {

                  eFlag=0;

                  rbytes=0;

                  readcmd[0]=0;

         }

             

   }

  if(a=='#'&&readcmd[0]=='A')//完整帧

   eFlag=2;

   if(rbytes==64)

   break;

   delay(1);

 }

解析命令部分代码:

ctype= *p++;//命令类型:模拟量/数字量/传感器模块

  cRW  = *p++;//读写操作

 for(j=0;j<2;j++)

 {

   for(i=0;i<3;i++)

   {

     if(*p==','||*p=='#')

     break;      

     num[i]=*p;p++;

   }

   p++;

   param[j]=atoi(num);            

   memset(num,0,3);

 }

 

 if(ctype=='D')//模拟量读写(PWM)

 {  

      if(cRW=='W')

      {

             sprintf(cmd,"digitalWrite(%d,%d);",param[0],param[1]);

            pinMode(param[0],OUTPUT);

            digitalWrite(param[0],param[1]);

       }else if(cRW=='R')

       {

               sprintf(cmd,"digitalRead(%d,%d);",param[0],param[1]);

              pinMode(param[0],INPUT);

              sprintf(sendcmd,"ABTDR%d,%d#",param[0],digitalRead(param[0]));

               ABTSendCMD(sendcmd);//              

     }

  }

执行结果:                              
图片

点亮8266指示灯;

图片

熄灭8266指示灯;

图片

点亮328P指示灯;

图片

熄灭328P指示灯;


联系方式
_faiMaterial_000045

联系人:ANTBOT001

QQ:584860790

邮 箱:584860790@qq.com

交流群: 615486305