利用SDK中的tcp_socket例程,实现局域网内的TCP客户端与服务器端的通信。 整体思路就是将cc3200设置为STA模式作为客户端,向远端服务器发送1000个数据。 基本程序流程: 1、首先利用ConfigureSimpleLinkToDefaultState()函数配置cc3200的默认模式。 默认配置包括STA模式,自动连接,删除之前存储的配置,使能DHCP,发射功率设置为最大。 其实,还有一些属于默认配置的,虽然不在这个函数中写入,但是已经在main文件的开始以宏的形式存在了,就是他需要发送数据的服务器的IP和端口号。但是这两个配置可以在后面用户输入函数中被用户实时改变。
2、利用sl_Start()函数开始启动cc3200 3、利用WlanConnect()函数开始让cc3200连接到设定的AP,连接成功后,设备被分配的IP地址会放在g_ulIpAddr变量中。 4、在这个例程中,连接成功后就等待用户的输入,根据用户的输入来选择相应的功能函数。假如我们选择让cc3200发送数据。那么程序就会执行BsdTcpClient()函数。这个函数的目的就是建立客户端和服务器端的socket连接,并向服务器发送数据。 5、关于socket连接建立的过程: (1)sl_Socket()函数创建客户自身的套接字。 (2)sl_Connect()函数建立与远端TCP服务器的连接。在这个函数中,需要传入远端TCP服务器的IP地址和端口号,从而确定他要发送数据的目的地址。而电脑上运行的TCP服务器的任务就是监听设定的那个端口,有任何数据到来都会被记录下来。 (3)这个例程中发送的数据就是简单的1,2,3.....,那么在实际应用中,我们可以在socket连接建立以后,开始读取传感器的数据,然后发送出去。发送函数利用sl_Send()。 (4)注意所有数据发送完成后要关闭socket连接sl_Close()。 (5)以上这些函数都可以在下面这个路径中的帮助文档中找到每个函数的介绍,非常方便,不得不佩服TI的文档真的贴心。
6、所以为了监视客户端发送的数据是否正确,需要在执行这个BsdTcpClient()函数之前,事先建立一个服务器。
是在电脑上用TCP调试助手建立了一个虚拟的TCP服务器,监听客户端发送数据的那个端口,从而获取数据。
7、遇到的问题
刚开始我把上面建立的虚拟服务器的IP地址写入客户端的程序中,作为发送的目标IP,不知道为什么上面显示总是0.0.0.0,我用的手机热点,传感器节点和电脑同时连接的手机的热点,这样他们就是都在一个局域网下面。但是这样总是收不到数据。 后来查看了电脑的IP的地址,如下图,并把它写入客户端的程序中,用这个IP地址作为目标IP,这样就能够成功收到数据。 其实想想也是,处于同一个局域网下面的是那个传感器节点和电脑,TCP服务器是在电脑上虚拟处理的,目的是监视端口数据。节点应该是向电脑的某一个端口发送数据,因此IP地址应该用电脑本身的IP。
节点发送完数据后通过串口打印的信息:
|