【发布时间】:2018-10-08 16:15:46
【问题描述】:
我想将数据发送到 ESP8266 以使用我的电机。我只需要发送字符串 00 或 10 或 01 这取决于我将按下哪个按钮。所以它必须看起来像这样:http://ipaddress:port/00 所以我找到了这段代码。我对其进行了更改,以便它可以与我的程序一起使用。 所以我在手机上安装了应用程序并连接到 ESP8266 的热点。然后我发送(单击按钮)值(00 或 10 或 01)。 Esp 接收到这个字符串。但是当我想单击第二个按钮(更改字符串)时,它不会发送它。代码卡住了,我认为它正在等待响应或类似的东西。但我不希望我的 Arduino(ESP8266)响应我只想立即发送数据......
View.OnClickListener btnSetClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
String value;
if (view== btnSet) {
value = "/10";
} else if(view == btnMinus) {
value = "/01";
} else {
value = "/00";
}
Toast.makeText(SettingsActivity.this, "OnClick", Toast.LENGTH_LONG).show();
String PORT = editPort.getText().toString();
String serverIP = editIp.getText().toString() + ":" + PORT + value;
textInfo1.setText(serverIP);
TaskEsp taskEsp = new TaskEsp(serverIP);
taskEsp.execute();
private class TaskEsp extends AsyncTask<Void, Void, String> {
String server;
TaskEsp(String server){
this.server = server;
}
@Override
protected String doInBackground(Void... params) {
final String p = "http://"+server;
runOnUiThread(new Runnable(){
@Override
public void run() {
textInfo1.setText(p);
}
});
String serverResponse = "";
String port = null;
//HttpURLConnection httpURLConnection = p;
try {
HttpURLConnection httpURLConnection = (HttpURLConnection) (new URL(p).openConnection());
if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
runOnUiThread(new Runnable(){
@Override
public void run() {
textView.setText("Try");
}
});
InputStream inputStream = null;
inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(inputStream));
serverResponse = bufferedReader.readLine();
httpURLConnection.disconnect();
inputStream.close();
}
catch (MalformedURLException e) {
e.printStackTrace();
serverResponse = e.getMessage();
} catch (IOException e) {
e.printStackTrace();
serverResponse = e.getMessage();
}
runOnUiThread(new Runnable(){
@Override
public void run() {
textView.setText("return");
}
});
return serverResponse;
}
@Override
protected void onPostExecute(String s) {
textInfo2.setText(s);
textView.setText("PostExc");
}
}
【问题讨论】:
-
它会静默失败吗?
-
html:
<button onclick='new Image().src="http://192.168.1.111/?11'>on</button> -
它不会失败,它只会工作一次。它卡在某个地方
标签: android android-asynctask arduino esp8266 arduino-esp8266