显示标签为“硬體模組”的博文。显示所有博文
显示标签为“硬體模組”的博文。显示所有博文

2012年10月29日星期一

如何使用網路單片機W7100A實現TCP通信?

今天给大家介绍的是以太网控制网络单片机W7100A的应用笔记之如何实现TCP通信。

TCP(传输控制协议)是用于控制网络间数据通信的协议。作为组成互联网的主要协议之一,更多的详细内容已经写入IETF(互联网工程任务组)的RFC 793中。TCP是运行于IP层上的协议,它保证了数据的有效传输并且可以按照数据的发送顺序依次进行接收。

因为W7100A单片机支持传输层的TCP协议,所以用户不需要做任何整合就可以直接使用TCP/IP协议。

下面一一给大家做阐述。

1 TCP SOCKET

用户可以在W7100A提供的所有8个SOCKET中使用TCP协议,但是必须首先创建要使用的SOCKET。在创建SOCKET时,需要用到SOCKET号、协议、端口号以及标志位。这篇文档将会介绍什么是TCP协议,以及在使用TCP协议时如何将Sn_MR(TCPIP核心中的SOCKET n模式寄存器)设置为Sn_MR_TCP(0×01)。SOCKET号表示用户可以选择从0到7这8个SOCKET中的任意一个使用。端口号表示TCP协议下用户指定使用的端口。如果上面需要的这些都已经设定好,那么socket()函数就可以自行分配创建一个SOCKET。


由于W7100A单片机的TCP协议支持服务器模式和客户端模式,用户可以任意选择一个模式实现此应用。服务器模式和客户端模式的不同见下图:


          <图1.1> TCP 服务器和TCP 客户端

如图1.1所示,TCP服务器模式和客户端模式的过程大致相同。唯一的区别在于打开SOCKET之后,SOCKET状态是监听还是连接。当TCP协议在服务器模式下运行时,服务器处于监听状态等待来自客户端的连接请求。如果TCP协议运行于客户端模式下,客户端将会在连接状态下请求连接服务器。一旦成功建立连接,SOCKET的状态将会变成建立(SOCK_ESTABLISHED,0×17)。SOCKET在点对点建立连接之后仍然可以保持连接状态,从而进行数据交换直到SOCKET关闭。
服务器模式下的SOCKET循环周期是由打开、监听、发送、接收、断开和关闭组成。客户端模式的SOCKET循环周期则是由打开、连接、发送、接收、断开和关闭组成。


1.1 打开(OPEN) 

无论是在服务器模式或是客户端模式下,在创建SOCKET时第一步都是打开SOCKET。利用SOCKET()函数设置SOCKET号、协议、端口号以及标志位来创建一个SOCKETn(取第n-1个SOCKET值)。由于使用的是TCP协议,需要将协议设置为Sn_MR_TCP(0×01)。而端口号的设置则取决于是在服务器模式还是客户端模式下。如果是在服务器模式下,服务器会根据当前用户所使用的端口来设置源端口号。但是如果是在客户端模式下,因为目的端口号正在被使用,最好随机选择一个端口号,并每次增加一个数字,直到SOCKET被连接为止。TCP协议的标志位表示‘无延时确认标志位’,一般来说,将该位设置为0。更多关于协议类型、标志位等信息,将会在‘TCPIPCore.h’文件下的‘Sn_MR value’中介绍。
在所有的设置完成之后,通过检查Sn_SR(n)寄存器来查看SOCKETn的状态是否变成SOCK_INIT(0×13)。用户可以通过getSn_SR(SOCKETn)函数来完成Sn_SR(N)寄存器的检查过程。如果SOCKET的状态为SOCK_INIT(0×13),表示SOCKET创建成功;如果没有成功,用户需要重新创建SOCKET。

                             例1.1 打开SOCKET


1.2 监听(LISTEN)
监听过程只能在服务器模式下使用。在SOCKETn创建完成后,为了能与客户端连接,需要将SOCKET的状态从SOCK_INIT(0×13)变成监听。用户可以直接将Sn_CR(n)寄存器设置为Sn_CR_LISTEN(0×02)或者可以直接使用’SOCKET.c’文件中的LISTEN()函数。在变成监听状态之后,SOCKET将会改变为SOCK_LISTEN(0×14)。然后,SOCKET等待客户端发出连接请求。一旦与客户端建立连接,SOCKET的状态将会重新变成SOCK_ESTABLISHED(0×17)。此时,便可以与客户端之间进行数据传输。

                           例 1.2 设置监听状态

1.3 连接(CONNECT)
连接过程发生在客户端模式连接到服务器时。在连接SOCKET时需要用到SOCKET号、目的IP以及目的端口号这些参数。用户可以通过CONNECT()函数进行设置;一旦成功建立连接,SOCKET的状态将会变成SOCK_ESTABLISHED(0×17)。

                           例 1.3 设置连接状态

1.4 发送(SEND)
在使用TCP协议时,与对端的连接在发送数据前就已经完成。用户可以通过SEND()函数查看设置的SOCKET号、将要发送数据的地址、数据的大小等参数。将要发送的数据的地址通常由选择的区域确定,输入数据,并且通过指针设定区域。

                             例1.4 发送数据

1.5 接收(RECEIVE)
接收过程和发送过程基本相同,唯一不同的是接收(RECEIVE)过程需要检查的是Sn_RX_RSR(n)。接收过程是指将来自接收缓存器的数据移动到用户数据存储区。因此,用户必须在接收之前检查Sn_RX_RSR(n)的值是否大于0。如果大于0,表示数据已经保存在接收缓存器中。用户必须通过getSn_RX_RSR(n)函数在此过程之前确认数据是否被接收。

                            例1.5 接收数据

1.6 断开(DISCONNECT)

关闭SOCKET的方法通常有两种:第一种方法是通过DISCONNECT(n)函数。DISCONNECT(n)函数不能用来直接关闭SOCKET。它先向对端发送断开连接请求(FIN数据包),然后等待回复信息(FIN/ACK数据包),之后才能将SOCKET的状态变成SOCK_CLOSED(0×00),最后关闭SOCKET。当收到断开连接请求时,W7100A发送一个FIN/ACK数据包表示允许对端关闭SOCKET。如果在发送断开连接请求之后没有收到对端的回复,将会发生TCP超时,SOCKET的状态将会变成SOCKET_CLOSED(0×00)。当用户需要断开连接时,通过DISCONNECT()函数,选择合适的SOCKET号,然后发送断开连接请求。


                           例1.6 设置断开连接

1.7 关闭(CLOSE)

和断开的过程不同,关闭过程可以直接将SOCKET变成SOCK_CLOSED(0×00)。用户通过
CLOSE(n)函数选择合适的端口号,然后无论对端有没有做出响应都将关闭SOCKET。如果RST数据包来自对端,SOCKET将会无条件变成SOCK_CLOSED(0×00)。一旦SOCKET变成为SOCK_CLOSED(0X00), SOCKET将不再可用除非重新打开它。


                             例1.7 设置关闭


2 TCP回路测试(LOOPBACK)

2.1 服务器模式 

TCP回路测试可以通过回送来自于对端的数据从而检测TCP协议的性能。这一章节将会介绍服务器模式下回路测试的例子。程序范例如下:

                     例2.1 设置回路测试(LOOPBACK)服务器
如上面的例子所示,在SOCKET循环周期内除了connect()函数,其他所有函数都可以使用。首先利用getSn_SR(s)函数检测SOCKET状态,在W7100A复位后,所有的SOCKET全都变成SOCK_CLOSED(0×00)状态。然后利用close()函数完全关闭SOCKET,再通过socket(s,Sn_MR_TCP,port,0×00)函数来创建一个新的SOCKET。如果SOCKET创建成功,状态将会变成SOCK_INIT,再通过listen(s)函数将SOCKET的状态变成监听。一旦与对端建立连接,SOCKET的状态将变成SOCK_ESTABLISHED,并且等待数据。所有接收到的数据都保存在接收缓存器中,recv(s,data_buf,len)函数中的data_buf变量定义为接收到的数据的长度。最后再通过send(s,data,len)函数将数据回送到客户端。客户端会比较数据交换前后的差异来检测数据通信是否正常。


2.2 客户端模式
本章节将会介绍客户端模式下回路测试的例子。程序范例如下:


                        例2.2 设置回路测试(LOOPBACK)客户端
TCP客户端的程序例子和TCP服务器的例子基本相同。唯一的区别在于SOCK_INIT状态下,是通过connect()函数而不是listen()函数与服务器连接。

3 回路测试服务器演示
这一章将会介绍TCP回路测试程序运行的例子。在下载完成TCP回路测试应用的二进制文件后,运行iMCUW7100单片机内的数据包实现回路测试的演示过程。更多的详细信息,请参阅文档‘如何在W7100A中创建工程’,‘WizISP程序指南’以及‘W7100A Debugger指南’。
对TCP串行回路,用户按照下面的步骤进行设定:
● 确认测试环境。请参考‘iMCU7100EVB用户指南’
直接利用UTP线连接PC机与iMCU7100EVB
直接利用串口线连接PC机与iMCU7100EVB
使能iMCU7100EVB的5V电源适配器
● 添加下面测试PC机的网络信息
- IP地址 : 192.168.1.xxx (‘xxx’ 为用户PC机的IP地址,在客户端模式下此IP地址 也是服务器的IP地址,即我们之前在TCP客户端代码中设置在destip[4]的IP地址)。 在本文档中,IP设置为192.168.1.69,但是用户可以进行修改。
- 网关IP地址 : 192.168.1.1
- 子网掩码 : 255.255.255.0
● 运行超级终端机程序以及AX1程序

3.1 超级终端机程序

          <图3.1> 超级终端机程序选项
在超级终端机程序行完成之后,如图4.1设置串行通信的选项。超级终端机程序将会显示串行通信时iMCU7100EVB的运行状态。


3.2 AX1 设置
想了解更多关于AX1程序的信息,请参考AX1用户手册。

3.2.1 TCP服务器模式下的iMCU7100EVB
当iMCU7100EVB运行于服务器模式时,PC作为TCP客户端利用AX1程序连接到iMCU7100EVB。在AX1程序中,选择TCP => CONNECT 菜单来实现与iMCU7100EVB的连接,此时对端的IP地址为192.168.1.2,端口号为5000。
一旦连接成功,如图4.2选择TCP => SEND 菜单发送数据。因为此时iMCU7100EVB作为服务器,AX1程序窗口将会显示客户端的状态。

                      <图3.2> AX1 发送数据

3.2.2 TCP客户端模式下的iMCU7100EVB

当iMCUW7100EVB运行于客户端模式下时,PC机作为TCP服务器使用AX1程序将iMCU7100EVB连接到服务器端口。如果在AX1程序中打开的服务器端口号是5000(监听状态),iMCU7100EVB将会连接到服务器IP地址以及服务器端口(192.168.1.xxx,5000)。需要注意的是IP地址必须是打开AX1程序的PC机上的IP地址。
一旦连接成功,选择TCP =>SEND菜单, 然后发送数据,如图4.2。因为iMCU7100EVB作为客户端,AX1程序窗口将会显示服务器的状态。

                     <图3.3> AX1监听

3.3 TCP回路测试结果 

3.3.1 TCP服务器结果

在设置完成TCP服务器之后,点击TCP发送。然后AX1程序将会显示PC机客户端的处理进程。如图4.4所示,图中显示了发送/接收的数据大小,而超级终端机程序将会显示iMCU7100EVB服务器的处理情况。

                            <图3.4> TCP服务器的结果

3.3.2 TCP客户端结果
在TCP客户端所有的设置完成后,点击TCP发送。AX1将会显示PC机服务器的处理情况。如图4.5所示,图中显示了发送/接收数据的大小,而超级终端机程序将会显示iMCU7100EVB客户端的处理情况。

                     <图3.5> TCP客户端结果




更多参考资料请访问官网,有任何问题请随时联系我们。谢谢阅读!

2012年10月23日星期二

無線網路的未來在哪裡?

无线网络在日益发展的个人电脑网络中扮演着关键角色,它有强大的流动性和延伸性,甚至发展到了很多还没有配备墙内CAT-10的地方(包括公司和大多数家庭)。

近几年来,无线网在其已成熟的应用方面展现出优势,比如在电话领域(智能机)和音频视频频率分布领域(网络硬盘录像机)等。随着“热点”的数量和覆盖面积的增长,无线网络连接形成了一种“多功能多效用”的趋势,并远远超过了缆线网络连接形式,并从根本上取代了它。不难想象在不久的将来,几乎所有的手机和电视都会装配无线网功能作为其标准配置。



1. 做你自己的事

那么,是什么使得无线网这么受欢迎呢?答案是“物联网”(简称IoT)。它连接了几乎所有电子产品到移动互联网。如图1所示,第一代物联网设备已经推广到市场了,这只是个开始。你根本想象不到所有的应用程序都连接到“云网络”之后会发展成什么样,其中无疑会有一些被抹杀。


图1:如今你可以买到能连入互联网的商品


2. 展望未来

我在朋友的办公室里发现他桌子上有一盏球形灯,是那种像水晶球一样,并且能发出柔和的红光。他说这是一个股票市场的“珠宝”,如果我们的会议一切进展顺利,灯光会变绿,说明杜琼斯工业平均指数(DJIA)对我们有利。
他的“珠宝”来自一个叫做Ambient Devices的公司,该公司的Ambient股票球(如图2所示)依赖于安装在手机网络上的一个特殊数据发送服务器。当有数据被释放(比如说杜琼斯工业平均指数),数据检测方就会察觉并传递数据(到球形灯上),但是数据的传递需要付费预定。


          图2:Ambient公司的股票球

下面咱们自己动手做一个“无线球”吧。它能让你监视所有你在网上找到的东西,价格免费。感谢March of Silicon公司的单片机,无线网接口和他们的软件。图3是我们需要的PCB板(Parallax, Inc.’s Propeller™ Board of Education® (BoE) 图中左边),图中右侧的是微知纳特公司(WIZnet)的产品WizFi210无线模块演示板。大板作为原型,简单但是不能满足我们的全部需要。一个真正的“无线球”只需要Propeller电路板的核心(EEPROM系列单片机和位于水晶球下方的红色发光二级管)以及仅有邮票大小的WizFi210芯片


     图3:左边是BoE电路板,右边是微知纳特公司WizFi210演示板

Propeller电路板有一个独特的多芯闪存微控制器,特点是非常适合于搞开发。快速转换的IDE意味着编辑编译下载周期只需要几秒钟。同样还需要一个预先定义的库软件作为“目标”,以及更多的在线“对象交换”。目标的优势在于将重点集中于怎样用编码实现特有的应用程序,取代之前的公式化样本文件。

无线网部分是便携的微知纳特公司产品WizFi210嵌入式无线模块。它有一个标准的串行接口,可以简单地与Propeller电路板相连。该模块的内部技术含量非常高,所以把一切事物都变得简单了。用它上网就有点大材小用了,它还可以编辑并发行一些高级命令。

像使用其他任何无线装置一样,第一步先配置WizFi210让它可以访问您的无线网络。这就意味着设置它登录你的无线网(即无线局域网),安全机制(即共享密钥和密码),网关和服务器地址等等。WizFi210有一个内置无线网配置网页,也可以通过串行端口输入命令来对其控制。设置完成后,将配置文件保存到WizFi的闪存,以便将来功能升级。



3. 海量数据

毫无疑问,你可以在网上无数次地搜索杜琼斯工业平均指数,但我都是在雅虎网上看这些数据的(如图4),所以你为什么不去那看呢?


                     图4:雅虎上的杜琼斯工业平均指数

WizFi210有很多的内置命令,所以它可以很容易浏览网站。它们被称为“AT”命令,该命令起源于拨号调制解调器。但是好的一方面是WizFi210的命令和响应都是ASCII码,所以使用像超级终端这样的终端模拟器就可以简单地输入命令对它进行控制和查看。假设WizFi210的配置可以达到接入点,这里就是你需要的雅虎主页(命令被发送到WizFi210上并以粗体显示)。

第一步是关联接入点使用的无线网名称(即无线局域网名)。

at+wa=your_ap_ssid

IP
SubNet
Gateway
10.0.0.20:
255.255.255.0:
10.0.0.1
[OK] 

现在你可以访问你的域名服务器并找到当前雅虎的IP地址。

at+dnslookup=www.yahoo.com
IP:72.30.2.43
[OK]


定义一个卡用户端并连接到雅虎的IP地址,端口80。

at+nauto=0,1,72.30.2.43,80
[OK]


现在开启和雅虎的连接,并且将WizFi210从命令模式切换到数据传输模式。

ata2
[OK]


此时WizFi210拒绝接受“AT”命令,并且变成一个简单的串口无线网转换器。无论是什么信息进入WizFi210的串行端口,都会通过无线网来传递,反之亦然。仔细地输入(不要出错)GET( 空格,对应ASCII码中的$20),换行(键盘上的CTRL+J,ASCII码表示为$0A)。
一会之后,雅虎主页就出现在终端屏幕上了。随时掌控杜琼斯工业平均指数动态就像在标签栏里搜索“Dow”那么简单了!标志的位置(在一个固定值周围偏移)杜琼斯工业平均指数平均值(即12861.2)如图5所示。

                            图5 雅虎主页

4. 少既是多

我写了一个关于从雅虎网上更新并能存储杜琼斯工业平均指数的简短的测试程序,并将它烧入Propeller电路板,它工作起来太完美了。(见图6)


  图6 在雅虎主页上搜索“Dow”得到的杜琼斯工业平均指数数据

不幸的是,必须得筛选雅虎主页上超过66,000字节的信息才能找出几个你能用到的字节!
当我寻找更多解决方案的时候,我想到了另一个设计灵感(使用Tannenbaum代码http://www.gadgetgangster.com/news/54/520)这一想法让我想到了另一个数据供给来源:谷歌(见图7)。

                             图7 谷歌财政API

我调整了测试程序,使用谷歌财务数据将程序转换到小于1000字节(见图8)。


  图8 使用谷歌财务API获得杜琼斯工业平均指数

5. 深入

让我们通过Propeller程序获得谷歌财务数据。在经过几次失败的尝试后成功了,但并不是就可以放心。如果找不到接入点,或者网站关闭了,或者你打错了一些代码(无线局域网名字,网站地址,获取请求,搜索密码等等),你的程序就挂掉了。好好考虑需要处理的网络问题,然后设计一个策略来处理这些问题,避免过于依赖网络。

从Propeller库程序启动几个目标。调试Parallax的终端仿真器和WizFi串口,建立连接,连接到WizFi210.下一步,变量用来定义存储目标网站地址(ipaddr)和检索数据(xmls)。现在是最关键的一步,通过数据结构定义路径所需的信息,如无线网络,目标网站,获取命令,代码和搜索密码等。然后开始执行,初始化后进行WizFi目标调试,然后程序进入主回路。

OBJ
Debug : “Parallax Serial Terminal”
WizFi : “FullDuplexSerial”
CON
lenipaddr = 18 ‘max length ip address string incl. cr/lf
lenxml = 50 ‘max length xml field data
VAR
byte i,j,k,ipaddr[lenipaddr],xmls[lenxml]
DAT
ssid byte “your_ap_ssid”,$d,0 ‘
替换你的无线网络
website byte “www.google.com”,$d,0 ‘
使用谷歌
get byte “GET /ig/api?stock=” ‘
财务数据api ‘
symbol byte “.dji”,$a,0 ‘
股票符号ex:.dji,aapl,ibm
numkeys byte 4
keys byte “last”,0,”perc”,0,”trade_date”,0,”trade_time”,0′xml keys
PUB WizFiOrb ‘program gets xml data item from a webpage
Debug.start(115_200) ‘
开始调试终端
WizFi.start(6,7,0,57600) ‘
开始异步连接到WizFi
REPEAT ‘forever 


第一步是启动WizFi210(就是将它从休眠状态循环唤醒),然后启动并确定与无线网连接成功。之后,然后就很容易通过其他指令,最后显示在雅虎的例子里,然后发送请求。我想写一个代码,能巩固每次握手的指令(比如说,发布命令,检查反应,重试,直到WizFi说【确定】)。但注意有一些命令需要特殊处理(例如:at+psdpsleep没有返回,+++需要延时)。

此外,它更容易为个别命令添加调试代码使其保持独立。通用的AT命令处理程序会包含很多选项,包括预期反应(如果有的话),数据和命令超时,重试次数与间隔,调试回声的开关等等。

REPEAT
WizFi.str(string(“at”,$d)) ‘
虚拟命令唤醒WizFi
REPEAT
UNTIL WizFi.rx == $5B ‘
查找[
UNTIL WizFi.rx=="O" '
重复尝试直到WizFi 显示 [OK]
REPEAT
WizFi.str(string(“at+wa=”))
WizFi.str(@ssid) ’
尝试连接
REPEAT
UNTIL WizFi.rx == $5B ’
查找[
UNTIL WizFi.rx == "O" '
WizFi 显示 [OK]时连接
WizFi.str(string(“at+dnslookup=”)) ’
查找网站IP地址WizFi.str(@website)
REPEAT
UNTIL WizFi.rx == “:” ’:
做标记并且返回IP地址
REPEAT i from 0 to lenipaddr-1
ipaddr[i] := WizFi.rx ’
保存IP地址位数
IF ipaddr[i] == $d ’
终止并回车
quit
REPEAT
WizFi.str(string(“at+nauto=0,1,”))’
创建客户端连接
i:=0
REPEAT UNTIL ipaddr[i]==$d
WizFi.tx(ipaddr[i]) ’
发送IP地址位数
i++
WizFi.str(string(“,80″,$d)) ’
端口 80
REPEAT
UNTIL WizFi.rx == $5B ’
查找[
UNTIL WizFi.rx=="O" '
重试直到WizFi 显示 [OK]
REPEAT
WizFi.str(string(“ata2″,$d)) ’
链接网站
REPEAT
UNTIL WizFi.rx == $5B ‘
查找 [
UNTIL WizFi.rx=="O" ‘
WizFi 显示 [OK]时连接
WizFi.str(@get) ‘
向网站发送请求

在GET请求被发送之后,网页信息将会存入Propeller.程序会自动搜索进来的数据并匹配DAT(a)单元中定义的密码,并且建立一个反应字符串,确定每个回车之间检测到的数据项。按键本身只需要足够长的时间就可以显示其特殊性,但是它们可以变得更长(最长是“=”键)。例如,你可以使用“trade_time”来增加可读性,或者使用“de_time”来节省空间。需要注意的是,DAT(a)部分的按键指令必须要在网页中显示出来。限制条件被加强了以便于搜索行为可以在系统繁忙状态下从单一端口(通常不取决于位置的搜索键)通过来完成,而不必存储在网页内存中。查询成功之后,被检索到的数据会显示在调试终端中。

k:=0 ‘k 作为所有按键的开始
j:=0 ‘j
是建立 xml 的指针
REPEAT numkeys ‘
每一个关键按键
i:=0 ‘i
计数连续的字符匹配配 REPEAT ‘通过键盘搜索进入的网页
CASE WizFi.rx == keys[k+i] ‘
连续字符匹配键
TRUE : i++ ‘
如果匹配就+1
FALSE : i:=0 ‘
否则清零
UNTIL keys[k+i+1] == 0 ‘
直到键匹配
k:=k+i+2 ‘
指向下一个键
REPEAT ‘
寻找开放的双引号
UNTIL WizFi.rx == $22
REPEAT ‘
收集所需数据
xmls[j]:=WizFi.rx
j++
UNTIL xmls[j-1] == $22 ‘
直到关闭双引号
xmls[j-1]:=$d ‘
传输完数据后回车
k:=0 ‘k 展示关键字符
j:=0 ‘j
展示数据字符
Debug.str(string($d,”Symbol = “))
Debug.str(@symbol)
REPEAT numkeys ‘
适用于任何键
Debug.str(string(” “))
REPEAT ‘
显示键
Debug.char(keys[k])
k++
UNTIL keys[k] == 0
Debug.str(string(” = “))
REPEAT ‘
显示数据
Debug.char(xmls[j])
j++
UNTIL xmls[j-1] == $d


在进行下一个演示之前,咱们设置系统进入睡眠状态。三个“+”(+++)其实是一个特殊的转义序列,在一秒延时之后,WizFi210会将它作为一个退出请求数据处理,并返回到命令模式。然后AT命令会被发出使其与无线网断开,进入睡眠状态。最后,Propeller会设置自己进入睡眠状态,直到下一个演示开始。谷歌的数据一般来讲,每隔几分钟就会更新一次,有时会更频繁一些,所以保守点儿说,90秒比较合理。

REPEAT
WizFi.str(string(“+++”)) ’
要求 WizFi 转变成命令模式
waitcnt(clkfreq + cnt) ’
等待 WizFi 转变成命令模式
WizFi.str(string(“at”,$d)) ’
批准 WizFi 转变成命令模式
REPEAT
UNTIL WizFi.rx == $5B ’
查找 [
UNTIL WizFi.rx=="O" '
重复尝试直到 WizFi 显示 [OK]
REPEAT
WizFi.str(string(“ath”,$d)) ‘
等待 i.e.
REPEAT
UNTIL WizFi.rx == $5B ‘
查找 “["
UNTIL WizFi.rx=="O" '
重复尝试直到 WizFi 显示 [OK]
WizFi.str(string(“at+psdpsleep”,$d))’
WizFi 进入休眠模式
waitcnt((clkfreq*45)+cnt) ‘
MCU 进入休眠模式
waitcnt((clkfreq*45)+cnt) ‘
MCU 休眠模式

图9显示的是程序正在被演示。使用不同的按键你可以采集到个别,或者全部你觉得有用的信息。

          图9 来自谷歌的财务数据

现在咱们来放松一下,看看怎么定义“ambientiza”数据。Propeller电路板上有红色和绿色的LED灯,所以可以通过设置xml按键来控制它们。

CASE xml[0] == “-“ 百分比变化是否为负
TRUE : OUTA[15..16] := %01 ‘
红灯亮,绿灯灭
FALSE : OUTA[15..16] := %10 ‘
绿灯亮,红灯灭

现在你就得到一个迷你球了!

电路板提供了一些更有趣的设置。你可以通过VGA端口将它连接到屏幕或者电视上。这看起来好像跟“ambience”没有关系。但是取代了典型的数字和图片形式,你可以(通过这些LED灯)制作一个丰富多彩的道琼斯工业平均指数“灯光秀”,以更有创意的形式传达出市场氛围。

同样是耐人寻味的电路板音频设置,包括一个麦克风和一个立体声耳机插座。当市场额度上升时,一些Wagner条可以唱赞美歌。电路板上有一个SD卡插槽,我可以将一个电脑里的wav音频文件设置循环播放,并通过Propeller中的立体声耳机插座播放出来。或者我可以使用麦克风录制我自己的声音效果,前景不可小觑啊。


6. 永远的Wi-Fi

1913年在洛杉矶的水库,William Mulholland在成千上万的观众面前,将他的工程师完成的最后一个指示转动车轮泵打开,看到奔腾的水倾泻而下,在阳光的照耀下跳舞、闪闪发光,蔓延到水库里,然后Mulholland转身面向高官们说:“就是它先生们,使用它吧!”

现在,基本的硬件模块组件我们都拥有了。最精彩的部分到了。什么可以将原先那些相互独立的电子设备利用网站知识掌握与鼓掌之中?谁拥有了信息?又是谁会保证它将来会准确和有效?(谁会对它负责?)又是什么确保了安全和隐私?只要物联网设备联网,所有的答案都会清楚明朗。实际上无线网在众多家庭和企业中展现出了引人瞩目的优势。就像一个饥渴的城市对水源的渴望!不需要转动什么伟大的齿轮,闸门已经打开,这就是无线网!使用它吧!




编译:Ben

源地址:Wi-Fi Orb Sees All ,By Tom Cantrell, Convergence Promotions LLC


“本文内容仅代表源作者观点,本站只是做了翻译工作,不代表本公司观点,最终解释权归源作者所属。”