惡補了一個禮拜的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();
}
}
|