ESP8266 MODBUS TCP转RTU //本程序用来作为MODBUS TCP从站(TCP SERVER模式),最多连接4个客户端,收到MODBUS TCP
//数据后软串口转发出去,串口采用MODBUS RTU模式,9600 N81格式,D1发送,D2接收。
//LED联网时慢闪,配网时快闪。有客户端接入后偶尔闪一下,无客户端接入的话,长亮。
//8266采用STA+AP模式,电脑可以两种连接方式和8266通讯。
//1,电脑先连上8266的AP,然后电脑再作为客户端连接8266的SERVER进行通讯
//2,电脑和8266都连上路
#include "main.h"
#define VERSION "V1.03"
void Led_On(void) //模块上二极管亮
{
digitalWrite(Led, LOW); //高为关,低为开
Led_State = true;
}
void Led_Off(void) //模块上二极管灭
{
digitalWrite(Led, HIGH); //高为关,低为开
Led_State = false;
}
bool autoConfig() //用之前的配网参数自动联网,联网时LED慢闪
{
WiFi.mode(WIFI_STA); //STA模式
WiFi.begin();
for (int i = 0; i < 20; i++) //20S还没连上网络的话返回错误
{
int wstatus = WiFi.status(); //读取网络状态
if (wstatus == WL_CONNECTED) //已经连上的话打印信息
{
Serial.println("AutoConfig Success");
Serial.printf("SSID: %s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW: %s\r\n", WiFi.psk().c_str());
Serial.print("IP: ");
Serial.println(WiFi.localIP()); //得到IP地址
return true;
}
else
{
Serial.print("AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
Led_Flag = !Led_Flag;
digitalWrite(Led, Led_Flag);
}
}
Serial.println("AutoConfig Faild!" );
return false;
}
void smartConfig() //一键配网函数,这时LED快闪
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWaiting for Smartconfig");
delay(2000);
WiFi.beginSmartConfig(); //等待配网
while (1) //死循环,直到配好网络
{
Serial.print(".");
delay(400);
Led_Flag = !Led_Flag;
digitalWrite(Led, Led_Flag);
if (WiFi.smartConfigDone()) //配网完成
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
WiFi.setAutoConnect(true); //设置自动连接
break;
}
}
由器,然后进行通讯