標(biāo)題: 基于ESP8266的物聯(lián)網(wǎng)APP設(shè)計(jì)Socket [打印本頁(yè)]

作者: Vict_Ming    時(shí)間: 2019-12-7 13:44
標(biāo)題: 基于ESP8266的物聯(lián)網(wǎng)APP設(shè)計(jì)Socket
之前做了一個(gè)小的APP,可以與原子的ESP8266通信,實(shí)現(xiàn)發(fā)送字符串,如果你也恰好想要用到這類(lèi)功能,希望這篇帖子能夠幫助到你。
準(zhǔn)備條件:
1.自身?xiàng)l件:
   (1)有一點(diǎn)點(diǎn)Java基礎(chǔ),不會(huì)也沒(méi)太大關(guān)系。
2.硬件條件
   (1)一臺(tái)電腦 安裝好Android studio 與 串口調(diào)試助手
     (2) 兩部手機(jī)(一部手機(jī)也可以,但需要路由器)
     (3) USB轉(zhuǎn)TTL模塊
好了,條件就這么多。

本文使用的是Socket通信,也就是套接字,具體概念有興趣可以自行百度,本文不在介紹,因?yàn)闆](méi)什么實(shí)際用處。我們只需要知道它可以與ESP8266 WIFI 通信,其他的先不管
Socket有兩個(gè)主要參數(shù) IP 和 PORT,也就是目標(biāo)設(shè)備(ESP8266)在局域網(wǎng)下的 IP地址 和開(kāi)放的端口,注意,IP地址由路由器或者手機(jī)熱點(diǎn)分配,端口地址由模塊 AT指令配置。

主要內(nèi)容是這樣的:

Socket mSocket;//新建了一個(gè) socket 對(duì)象,但是沒(méi)有分配內(nèi)存等等,不可以使用
mSocket = new Socket(Ip,port);//分配了實(shí)體,此后可以由輸出流輸入流 寫(xiě)入 和讀出待發(fā)送(接收)的數(shù)據(jù)
out
=
new
PrintStream(
mSocket
.getOutputStream());//獲得輸出流

out
.write((
"hello world!"
+
'
\n
'
).getBytes(
"utf-8"
));//寫(xiě)入輸出流
out
.flush();//發(fā)送數(shù)據(jù)好了,主要內(nèi)容就這么多,是不是很簡(jiǎn)單,快去試試吧。
注意有一個(gè)小坑,就是 new Socket(Ip,port);  這種與Socket有關(guān)的操作是不可以放在主線程之中的,因?yàn)锳ndroid規(guī)定了這些操作是會(huì)阻塞主線程的,解決辦法就是放在一個(gè)子線
程之中操作,就可以了。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1