Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从esp8266发送到android应用程序_Android_Arduino_Android Wifi_Esp8266_Arduino Esp8266 - Fatal编程技术网

将数据从esp8266发送到android应用程序

将数据从esp8266发送到android应用程序,android,arduino,android-wifi,esp8266,arduino-esp8266,Android,Arduino,Android Wifi,Esp8266,Arduino Esp8266,我只是想从我的android应用程序发送字符串文本到Nodemcu esp8266,并用另一个文本发送esp8266响应 我可以在esp8266上收到文本,但在android应用程序上我没有收到任何回复文本!我不知道问题出在哪里 我的android代码是 public class MainActivity extends Activity { TextView textResponse; Button buttonConnect; EditText welcomeMsg; String IpA

我只是想从我的android应用程序发送字符串文本到Nodemcu esp8266,并用另一个文本发送esp8266响应

我可以在esp8266上收到文本,但在android应用程序上我没有收到任何回复文本!我不知道问题出在哪里

我的android代码是

public class MainActivity extends Activity {

TextView textResponse;
Button buttonConnect;
EditText welcomeMsg;
String IpAddress = "192.168.0.117";
int Port = 8090;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    buttonConnect = (Button) findViewById(R.id.connect);
    textResponse = (TextView) findViewById(R.id.response);
    welcomeMsg = (EditText)findViewById(R.id.welcomemsg);

    buttonConnect.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            MyClientTask myClientTask = new MyClientTask(welcomeMsg.getText().toString());
            myClientTask.execute();
        }
    });
}

@SuppressLint("StaticFieldLeak")
public class MyClientTask extends AsyncTask<Void, Void, Void> {
    String response = "";
    String msgToServer;

    MyClientTask(String msgTo) {
        msgToServer = msgTo;
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        Socket socket = null;
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;

        try {
            socket = new Socket(IpAddress, Port);
            dataOutputStream = new DataOutputStream(socket.getOutputStream());
            dataInputStream = new DataInputStream(socket.getInputStream());

            if(!msgToServer.equals(""))
                dataOutputStream.writeUTF(msgToServer + "$");

            response = dataInputStream.readUTF();

        } catch (IOException e) { }
        finally {
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {}
            }
            if (dataOutputStream != null) {
                try {
                    dataOutputStream.close();
                } catch (IOException e) {}
            }
            if (dataInputStream != null) {
                try {
                    dataInputStream.close();
                } catch (IOException e) {}
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        textResponse.setText(response);
        super.onPostExecute(result);
    }
}
}
公共类MainActivity扩展活动{
文本视图文本响应;
按钮连接;
编辑文本welcomeMsg;
字符串IpAddress=“192.168.0.117”;
int端口=8090;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonConnect=(按钮)findViewById(R.id.connect);
textResponse=(TextView)findViewById(R.id.response);
welcomeMsg=(EditText)findViewById(R.id.welcomeMsg);
buttonConnect.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图){
MyClientTask MyClientTask=新建MyClientTask(welcomeMsg.getText().toString());
myClientTask.execute();
}
});
}
@SuppressLint(“StaticFieldLeak”)
公共类MyClientTask扩展了AsyncTask{
字符串响应=”;
字符串msgToServer;
MyClientTask(字符串msgTo){
msgToServer=msgTo;
}
@凌驾
受保护的Void doInBackground(Void…arg0){
套接字=空;
DataOutputStream DataOutputStream=null;
DataInputStream DataInputStream=null;
试一试{
套接字=新套接字(IP地址、端口);
dataOutputStream=新的dataOutputStream(socket.getOutputStream());
dataInputStream=新的dataInputStream(socket.getInputStream());
如果(!msgToServer.equals(“”)
dataOutputStream.writeUTF(msgToServer+“$”);
response=dataInputStream.readUTF();
}捕获(IOE){}
最后{
if(套接字!=null){
试一试{
socket.close();
}捕获(IOE){}
}
如果(dataOutputStream!=null){
试一试{
dataOutputStream.close();
}捕获(IOE){}
}
如果(dataInputStream!=null){
试一试{
dataInputStream.close();
}捕获(IOE){}
}
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
setText(response);
super.onPostExecute(结果);
}
}
}
我的esp8266代码是

#include <ESP8266WiFi.h>

WiFiServer server(8090);
IPAddress ip(192, 168, 0, 117);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);

void setup() {
  Serial.begin(115200);
  WiFi.config(ip, gateway, subnet);
  WiFi.begin("TP-LINK", "55555555");
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
  }
  server.begin();
  Serial.println("Connected");
}

void loop() {
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  Serial.println(client.readStringUntil('$'));  
  String x = "esp8266";
  client.println(x);
  delay(100);
  client.flush();
}
#包括
WiFiServer服务器(8090);
ip地址ip(192、168、0、117);
IP地址网关(192、168、0、1);
IP地址子网(255、255、255、0);
无效设置(){
序列号开始(115200);
WiFi.config(ip、网关、子网);
WiFi.begin(“TP-LINK”、“5555”);
while(WiFi.status()!=WL_已连接){
延迟(100);
}
server.begin();
Serial.println(“已连接”);
}
void循环(){
WiFiClient=server.available();
如果(!客户端){
返回;
}
Serial.println(client.readStringUntil(“$”);
字符串x=“esp8266”;
client.println(x);
延迟(100);
client.flush();
}
这就是我的应用程序锁定的方式


有人知道吗?

使用下面的代码发送数据:

示例:sendData(“”)

private void sendData(最终字符串requestURL){
答复=”;
新建异步任务(){
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的字符串doInBackground(对象…参数){
HttpClient HttpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(请求URL);
试一试{
HttpResponse response=httpclient.execute(httpget);
HttpEntity=response.getEntity();
如果(实体!=null){
InputStream InputStream=entity.getContent();
缓冲读取器缓冲读取器=
新的BufferedReader(新的InputStreamReader(inputstream));
StringBuilder StringBuilder=新的StringBuilder();
字符串currentline=null;
而((currentline=bufferedreader.readLine())!=null){
stringbuilder.append(currentline+“\n”);
}
字符串结果=stringbuilder.toString();
答复=结果;
inputstream.close();
}
}捕获(NetworkOnMainThread异常){
字符串err=(ne.getMessage()==null)?“网络”:ne.getMessage();
回复=错误;
}catch(格式错误的durlexception me){
字符串err=(me.getMessage()==null)?“格式错误”:me.getMessage();
回复=错误;
}捕获(协议异常pe){
字符串err=(pe.getMessage()==null)?“协议”:pe.getMessage();
回复=错误;
}捕获(ioe异常ioe){
字符串err=(ioe.getMessage()==null)?“IOError”:ioe.getMessage();
回复=错误;
}
回复;
}
@凌驾
受保护的void onPostExecute(字符串结果){
Log.v(答复);
}
}.execute();
}

不要使用UTF类型的读写。使用普通的。
private void sendData(final String requestURL) {
        reply = "";
        new AsyncTask<Object, Void, String>() {

            @Override
            protected void onPreExecute() {
            }

            @Override
            protected String doInBackground(Object... params) {
                HttpClient httpclient = new DefaultHttpClient();
                HttpGet httpget = new HttpGet(requestURL);
                try {
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();

                    if (entity != null) {
                        InputStream inputstream = entity.getContent();
                        BufferedReader bufferedreader =
                                new BufferedReader(new InputStreamReader(inputstream));
                        StringBuilder stringbuilder = new StringBuilder();

                        String currentline = null;
                        while ((currentline = bufferedreader.readLine()) != null) {
                            stringbuilder.append(currentline + "\n");
                        }
                        String result = stringbuilder.toString();
                        reply = result;
                        inputstream.close();
                    }
                } catch (NetworkOnMainThreadException ne) {
                    String err = (ne.getMessage() == null) ? "Network" : ne.getMessage();
                    reply = err;
                } catch (MalformedURLException me) {
                    String err = (me.getMessage() == null) ? "Malform" : me.getMessage();
                    reply = err;
                } catch (ProtocolException pe) {
                    String err = (pe.getMessage() == null) ? "Protocol" : pe.getMessage();
                    reply = err;
                } catch (IOException ioe) {
                    String err = (ioe.getMessage() == null) ? "IOError" : ioe.getMessage();
                    reply = err;
                }
                return reply;
            }

            @Override
            protected void onPostExecute(String result) {
              Log.v(reply);
            }
        }.execute();
    }