恶补了一个礼拜的51单片机课程,把大学计算机的基础课程复习了一圈,对单片机的原理有点感觉了,汇编虽然基本看不懂,但是单片机的程序基本是C语言,还算能看懂。经过不懈的努力,终于把WIFI-UART彻底搞明白了,很简单,就是一个wifi自动转发串口的外设。其实还有一个AP模式,就是wap口接互联网,然后可以作为AP,供手机/手提之类上网,以后出差,可以带上,在酒店里面用。
今天,把DHT11和WIFI-UART模块整合在一起,现在可以通过电脑和手机端实时查询房间的温湿度信息了。然后尝试了openwrt的端口映射,通过互联网访问内网,失败了,不知道是不是运营商那边在使坏。下一步,准备研究在openwrt 上写守护进程,然后通过守护进程访问互联网服务器。
Java socket client模式:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class VaasClient {
Socket socket;
DataInputStream in;
DataOutputStream out;
// 定义参数数组的长度
public final int DATALENGTH = 200;
// 定义接受数据的长度
public final int RESULTLENGTH = 712;
// 定义字符型数组的长度
public final int CHARLENGTH = 100;
// 定义数字型数组的长度
public final int INTLENGTH = 4;
// 定义服务器ip地址
public final String serverIP = "192.168.1.100";
// 定义服务器端口号
public final int port = 8080;
// 发送参数
public void SendMessage(String msg) {
try {
socket = new Socket(serverIP, port);
out = new DataOutputStream(socket.getOutputStream());
// 将对象转换为数组
byte[] r = msg.getBytes();
System.out.println("length:"+r.length);
for(int i = 0; i < r.length; i++) {
System.out.println(r);
}
// 请求服务器端
out.write(r);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 接受数据
public void getMessage() {
try {
in = new DataInputStream(socket.getInputStream());
// 定义存放接受的数据的字符数组
byte result[] = new byte[RESULTLENGTH];
// 接受数据
in.read(result);
// 分割各个返回的数据
byte wel[] = new byte[50];
// System.arraycopy(result, 0, wel, 0, 14);
System.arraycopy(result, 0, wel, 0, 50);
// 测试接收的结果
System.out.println("返回结果是:" + new String(wel));
} catch (IOException e) {
e.printStackTrace();
}
}
// 用于测试的主函数
public static void main(String arg[]) {
VaasClient a = new VaasClient();
a.SendMessage("[HLK]");
a.getMessage();
}
}
|