你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32的ESP8266使用教程(四)(短篇)

[复制链接]
aimejia 发布时间:2018-5-31 11:13
本帖最后由 aimejia 于 2018-5-31 11:15 编辑 ) l, a. S1 D( t0 G* A0 r  Q9 @

/ H% \: X" y. z4 K5 B& a基于STM32的ESP8266使用教程(一); I: g; I; s0 ]  o
基于STM32的ESP8266使用教程(二)
. n7 [$ _0 h0 G1 C基于STM32的ESP8266使用教程(三)
  ^( x7 d! I4 V& m( y- K基于STM32的ESP8266使用教程(四)(短篇)8 q: k2 e/ I  X: X! p# a* }

9 Q4 v* L. Y' x写在前面:在上一篇中介绍了通过单片机发送指令控制WIFI模块,本来想写一下时钟、I/O口及串口的初始化函数,但是因为项目年代久远(一年前做的),怕有错误,误导博友,故不给出代码,见谅。本章要介绍Android端通过WIFI与手机建立连接并通信的过程。: s: v, x0 G7 C% Q& o* d" x  x
- Y1 c; W: {- T1 ]% Q( o
我们使用Socket类,即“套接字”进行通信。由于其相关说明对程序开发没有多大帮助,故不再赘述,只需知道使用其进行通讯需要目标的IP地址及端口号即可,直接来看代码:, H7 P& [8 B' R' ?+ R2 y; m5 l( |
  1. [java] view plain copy
    * U5 K" {% b, |6 }5 B
  2. Test_Button.setOnClickListener(new OnClickListener(){  
    " Q$ C% M+ A' U/ ^4 Y: S( _& S
  3.     @Override  & S, ?! X6 W4 y% Z0 [$ ?- b
  4.     public void onClick(View v){  
    ; Z' i5 m# X1 ~9 g4 b/ P4 ?4 g
  5.         //在子进程中完成数据的获取,在主进程中完成UI更新    h- d2 n6 m1 ~) t2 W. z" m
  6.         new Thread(new Runnable(){//开启一个线程  ' \& ~) }5 J5 S$ T) b
  7.                 @Override  1 V# C9 e6 L4 Y% x5 q& D
  8.                 public void run(){  . Y, t6 F+ h) }1 _$ a3 X: S
  9.                     try{  . ^' V) v; r; F! u1 p& G0 S5 v
  10.                         Socket TestSocket = new Socket();//new一个socket  : ^: x; q% ?# p% \8 E5 V
  11.                         TestSocket.connect(new InetSocketAddress("192.168.4.1", 8080), 8000);//三个参数分别是IP、端口、超时  % _1 b. @$ r( o1 e! |  ~' X
  12.                     OutputStream TestOS = TestSocket.getOutputStream();//输出流  - f0 }: K! Z. `: U+ [
  13.                         InputStream TestIS = TestSocket.getInputStream();//输入流  ( m- ~- a) v& U4 {+ n+ W" r6 u7 ^
  14.                         byte send_buffer[] = {40};//输出字符数组  2 y" ~" c8 i% n8 Z
  15.                     byte rec_buffer[] = new char[10];//输入字符数组  
    $ o: N  W  C! n( C4 _& J& m* k
  16.                         TestOS.write(buffer);//这样字符就发送了  , W& h5 W) d0 U) K  n3 s2 q- a# c+ `
  17.                         for(int i = 0; i < 10; i++){  + V+ a5 O: h6 }5 ]2 F
  18.                             rec_buffer[i] = TestIS.read();//read()方法是一个字符一个字符接收  % ^* e7 x. D: r; X) z
  19.                         }  
    + i+ u' A6 z6 \! S* E* X% k
  20.                         //关闭所有流及socket  3 f6 o8 \, \8 _; v5 x
  21.                         TestOS.close();  
    ( N) G3 X+ u* X: t9 M. B4 p
  22.                         TestIS.close();  
    & t/ K( `: V4 N7 }
  23.                         TestSocket.close();  
    $ I) c) |. J2 _# E1 n5 b. I
  24.                     //接下去可对收到的数据进行操作  
    , O" n& x) G' D# Q% B
  25.                     }  " C, d4 T3 l: c" J" {
  26.                     catch(Exception e){  ! Z) Q& p8 Y/ @- p
  27.                         //可以打印错误日志啥的  
    2 z5 d7 }$ r/ S& b* l
  28.                     }  
    ' |4 W) s# v& p) T
  29.                 }  
    - x! N7 X7 ^8 g0 P  {: `
  30.             }).start();  6 a" i) _6 h0 K+ N7 [* P
  31.         }  , k. V3 ?) m6 E" U/ [; n. M' d9 A3 q
  32. });  
复制代码
总结一下:通信过程很简单,建立一个Socket,调用connect()方法,通过输入输出流传递数据,最后关闭流和Socket即可。
3 @, ]5 ?( e5 }7 P1 S; G3 w
# X: M5 d0 b, E% ]5 W至此,完成了全部关于WIFI模块的使用教程。下面放上百度盘链接:网络调试助手下载链接:点击打开链接 串口调试助手下载链接:点击打开链接1 @+ U4 z* W! H$ _1 n

0 Y' ], g% D4 g, c8 j9 c2 z% [2 K# U# \" ^

2 b2 P/ i% |( U3 q  |% q
赞 收藏 2 评论1 发布时间:2018-5-31 11:13

举报

1个回答
wolfgang 回答时间:2018-5-31 12:33:16
GOOD!
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版