之前做了一個(gè)小的APP,可以與原子的ESP8266通信,實(shí)現(xiàn)發(fā)送字符串,如果你也恰好想要用到這類功能,希望這篇帖子能夠幫助到你。
準(zhǔn)備條件:
1.自身?xiàng)l件:
(1)有一點(diǎn)點(diǎn)Java基礎(chǔ),不會(huì)也沒太大關(guān)系。
2.硬件條件
(1)一臺電腦 安裝好Android studio 與 串口調(diào)試助手
(2) 兩部手機(jī)(一部手機(jī)也可以,但需要路由器)
(3) USB轉(zhuǎn)TTL模塊
好了,條件就這么多。
本文使用的是Socket通信,也就是套接字,具體概念有興趣可以自行百度,本文不在介紹,因?yàn)闆]什么實(shí)際用處。我們只需要知道它可以與ESP8266 WIFI 通信,其他的先不管
Socket有兩個(gè)主要參數(shù) IP 和 PORT,也就是目標(biāo)設(shè)備(ESP8266)在局域網(wǎng)下的 IP地址 和開放的端口,注意,IP地址由路由器或者手機(jī)熱點(diǎn)分配,端口地址由模塊 AT指令配置。
主要內(nèi)容是這樣的:
Socket mSocket;//新建了一個(gè) socket 對象,但是沒有分配內(nèi)存等等,不可以使用
mSocket = new Socket(Ip,port);//分配了實(shí)體,此后可以由輸出流輸入流 寫入 和讀出待發(fā)送(接收)的數(shù)據(jù)
out = new PrintStream(mSocket .getOutputStream());//獲得輸出流
out .write(("hello world!" + ' \n ' ).getBytes("utf-8" ));//寫入輸出流
out .flush();//發(fā)送數(shù)據(jù)好了,主要內(nèi)容就這么多,是不是很簡單,快去試試吧。
注意有一個(gè)小坑,就是 new Socket(Ip,port); 這種與Socket有關(guān)的操作是不可以放在主線程之中的,因?yàn)锳ndroid規(guī)定了這些操作是會(huì)阻塞主線程的,解決辦法就是放在一個(gè)子線
程之中操作,就可以了。
|