qq_38931945 2020-04-14 11:26 采纳率: 0%
浏览 400

APP与STM32单片机通过WiFi连接,但是WiFi连接不成功,求问为什么连接不上,是我代码出问题了吗?求问到底是哪里不对啊?

APP是作为TCP服务端,WiFi是ESP8266模块,单片机是正点原子mini版STM32的,代码也写出来了但是与WiFi连接不成功,求问到底是哪里不对啊,代码运行没问题,代码如下:

package com.example.smxy.myapplication;import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;public class ControlActivity extends AppCompatActivity { @BindView(R.id.temperature)
EditText temperature;
@BindView(R.id.humidity)
EditText humidity;
@BindView(R.id.smoke)
EditText smoke;
@BindView(R.id.close)
RadioButton close;
@BindView(R.id.open)
RadioButton open;
@BindView(R.id.welcome)
TextView welcome;
@BindView(R.id.ip)
TextView ip;
@BindView(R.id.port)
TextView port;
@BindView(R.id.connect)
Button connect;
//开辟一个socket控件
Socket socket = null; //定义数据输出流,用于发送数据
private OutputStream outputStream = null;
//定义数据输入流,用于接收数据
private InputStream inputStream = null; //定义一个逻辑便利,用于判断服务器状态
boolean isConnected = true; //定义一个逻辑变量,用于控制读数据线程是否执行
boolean read = false; //定义一个变量,判断风扇开关
int flag = 1; //1为关闭,2位开启 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_control);
ButterKnife.bind(this); String str = "欢迎来到智能家居";
Intent intent = getIntent();
String name = intent.getStringExtra("username");
welcome.setText(name + "," + str);
} @OnClick({R.id.temperature, R.id.humidity, R.id.smoke, R.id.close, R.id.open})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.temperature:
break;
case R.id.humidity:
break;
case R.id.smoke:
break;
case R.id.close:
flag = 1;
break;
case R.id.open:
flag = 2;
break;
}
} @OnClick(R.id.connect)
public void onViewClicked() {
//true表示连接
if (isConnected==true){
isConnected=false;
connect.setText("断开连接");
//启动连接线程
Connect_Thread connectThread=new Connect_Thread();
connectThread.start();
Toast.makeText(this,"wifi连接成功",Toast.LENGTH_SHORT).show();
}else {
isConnected=true;
connect.setText("连接");
}
} //连接线程
class Connect_Thread extends Thread{ @Override
public void run() { try {
if (socket==null){
//用InetAdress方法获取IP地址
InetAddress ipAdress=InetAddress.getByName(ip.getText().toString());
int portNumber = Integer.valueOf(port.getText().toString());
//创建连接地址和端口
socket=new Socket(ipAdress,portNumber);
//创建完socket连接后启动接收线程
Receive_Thread receiveThread = new Receive_Thread();
receiveThread.start();
Toast.makeText(ControlActivity.this,"数据已接收",Toast.LENGTH_SHORT).show();
}
}catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} //接收数据线程
class Receive_Thread extends Thread{ @Override
public void run() {
try {
while (true){
//创建接收缓冲区
final byte[] buferr = new byte[256]; inputStream=socket.getInputStream();
//读取数据,并且返回数据的长度
final int len=inputStream.read(buferr);
//不允许其他线程直接操作组件
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
String str="";
int i=0;
while (i<len){
str=str+buferr[i];
i++;
}
if (str=="STATUS1"){ }else {
temperature.setText(new String(buferr,2,2));
humidity.setText(new String(buferr,5,2));
smoke.setText(new String(buferr,11,4));
} //发送数据
outputStream=socket.getOutputStream();
String send;
if (flag==1){
send="OFF";
outputStream.write(send.getBytes());
}else{
send="ON";
outputStream.write(send.getBytes());
} } catch (IOException e) {
e.printStackTrace();
}
}
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:48
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)