package com.lili.esp8266;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;
public class ConnectThread extends Thread {
private MainActivity mContext;
private String ip;
private int port;
private Socket mSocket;
private BufferedReader br;
private SendThread mSendThread;
public ConnectThread(MainActivity context, String ip, int port) {
this.mContext = context;
this.ip = ip;
this.port = port;
}
private void connect()
{
try {
// 和服务器创建连接
mSocket = new Socket("192.168.4.1",8080);
mContext.isConnected = true;
// 提示用户连接成功
mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
mContext.connectButton.setText("断开");
Toast.makeText(mContext, "连接成功", Toast.LENGTH_SHORT).show();
}
});
// 创建发送消息的线程
mSendThread = new SendThread(mContext, mSocket);
mSendThread.start();
// 从服务器接收的信息
InputStream is = mSocket.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String info = null;
while((info = br.readLine())!=null){
System.out.println("我是客户端,服务器返回信息:"+info);
}
br.close();
is.close();
mSocket.close();
} catch (Exception e) {
e.printStackTrace();
mContext.isConnected = false;
mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "连接失败", Toast.LENGTH_SHORT).show();
}
});
}
}
// 关闭连接
public void closeConnect() throws IOException
{
if (mSocket == null) return;
mSocket.shutdownInput();
mSocket.shutdownOutput();
while (!mSocket.isInputShutdown() || !mSocket.isOutputShutdown());
br.close();
mSocket.close();
// 修改标志位
mContext.isConnected = false;
// 修改界面
mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
mContext.connectButton.setText("连接");
Toast.makeText(mContext, "已断开连接", Toast.LENGTH_SHORT).show();
}
});
}
public void closeLED()
{
mSendThread.closeLED();
}
public void openLED()
{
mSendThread.openLED();
}
public boolean startConnect;
@Override
public void run()
{
while (true)
{
if (startConnect)
{
startConnect = false;
connect();
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
PCB和原理图 单片机程序 Android APP源码 主控芯片:选用STC15W104。这款MCU比较小巧,控制3个LED灯的亮灭只需要3个IO即可,不足之处是没有串口,与ESP8266通信只能使用模拟串口。 LDO:选用AMS1117-3.3V,ESP8266模块需要使用3.3V电源,使用1117-3.3V将常用的5V转成3.3V。 2.原理图设计 原理图比较简单,注意ESP8266模块的TX和RX引脚需要连接到STC15W104的P3.0和P3.1引脚上以及EN引脚连接到3.3V即可
资源推荐
资源详情
资源评论
收起资源包目录
51单片机+ESP8266实现局域网内通信.zip (48个子文件)
51单片机+ESP8266实现局域网内通信
.DS_Store 8KB
单片机程序
config.h 1KB
STC15Fxxxx.H 33KB
main.c 5KB
Android APP源码
.DS_Store 6KB
ESP8266
gradle.properties 1KB
gradle
wrapper
gradle-wrapper.jar 58KB
gradle-wrapper.properties 238B
app
src
androidTest
java
com
lili
esp8266
ExampleInstrumentedTest.java 746B
test
java
com
lili
esp8266
ExampleUnitTest.java 377B
main
java
com
lili
esp8266
SendThread.java 2KB
ConnectThread.java 3KB
MainActivity.java 2KB
res
mipmap-xxhdpi
ic_launcher_round.webp 6KB
ic_launcher.webp 3KB
mipmap-hdpi
ic_launcher_round.webp 3KB
ic_launcher.webp 1KB
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 272B
ic_launcher_round.xml 272B
values-night
themes.xml 829B
mipmap-mdpi
ic_launcher_round.webp 2KB
ic_launcher.webp 982B
mipmap-xxxhdpi
ic_launcher_round.webp 8KB
ic_launcher.webp 4KB
mipmap-xhdpi
ic_launcher_round.webp 4KB
ic_launcher.webp 2KB
values
colors.xml 378B
strings.xml 106B
themes.xml 829B
layout
activity_main.xml 1KB
drawable
yellow.png 6KB
cover.png 8KB
ic_launcher_background.xml 5KB
led.png 877B
gray.png 6KB
AndroidManifest.xml 855B
proguard-rules.pro 750B
libs
build.gradle 1013B
.gitignore 6B
gradlew.bat 3KB
build.gradle 458B
settings.gradle 282B
local.properties 450B
gradlew 6KB
.gitignore 225B
PCB和原理图
智能灯板.SchDoc 166KB
智能灯板20211112.PcbDoc 1.48MB
共 48 条
- 1
资源评论
MarcoPage
- 粉丝: 4305
- 资源: 8839
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功