微信智能硬件之CC3200设备跟服务器通信

原创 2015年07月10日 23:13:01

 

 

                                                                                                                                                                                        阿汤哥

序:

能力有限,难免有错,有问题请联系我,

QQ1519256298       hytga@163.com

Pdf下载http://pan.baidu.com/s/1hqiWB56

 

 

 

前序:

提醒下,可能会因为sdk的版本不同导致程序出问题,你看看这些出错的地方,跟我们的实验有没有关系。一般是没关系的,所以基本是可以先屏蔽掉的。请学生先看中文,后看代码,再问我,我没那么多时间解答简单的问题。你中文都不愿意看,这怎么行??请有问题用邮件或者直接评论,不要加我QQ了,加了QQ还弹窗?加QQ的请直接挑重点讲,不要讲很多的客套话,你不烦我都烦(除非你是美女)。现在明白了以前的老师为什么要用邮件了,怕得就是别人问一些简单的问题,这个叫太过简单地得到,不会珍惜。我希望你用邮件联系我或者直接评论。

一、 思路

 

思当节点的信息变化时,CC3200用post方法把数据(用json封装)提交到服务器,服务器处理数据,并且定时地用get方法获取服务器的数据以便及时地更改设备的状态(灯的开及灭)。这种有很不好的缺点,经常要通信,而且有延时,你不可能每个100毫秒就用get吧,为什么这里这么做?哈哈仅仅就为了方便我们实现,毕竟我们做过yeelink的实验,后期采用其他方法。目前没实现get方法,也不打算讲,因为跟post一样的。

二、 获取服务器的ip

这实验中碰到了一个很奇葩的现象,我的服务器的网址是http://hytgab.oicp.net,用cc3200的dns获取到的ip跟我用电脑ping得到的ip是不一样的,因为我的网址是花生壳映射得到的,我也不清楚它是怎么搞的?这个现象真奇怪。。。我大概猜了一下花生壳的工作原理,花生壳为每个网址分配了一个ip,这个ip都是指向花生壳的服务器,因为我们的电脑已经运行了花生壳的软件,相当于我们的电脑跟花生壳的服务器已经构建了一条通道,我们提交给我们的服务器的数据会先把数据提交到花生壳的服务器,再传给花生壳的电脑软件,由电脑软件再发给我们的服务器。我觉得这样是可行的,不知道猜测是不是正确的???我曾经用wireshark捕获过数据,结果捕获不到,可能是本地进程间通信的关系(wireshark捕获的是网卡的数据,本地进程通信是不经过网卡),所以捕获不到。这是题外话,也是我的猜测,如果你有比较好见解,请联系我,涨涨见识。

因此,我们要获取服务器的地址,通过http://ip.chinaz.com/站长工具获取,然后在程序里面使用。

 

三、post数据格式

这里仅仅就先使用post传输数据,get都是一样的。先简单传输,功能后期增加

//http的post数据格式
char g_cPostData[] = "POST /SmartHardware/DeviceData  HTTP\/1.1\r\n"
		"Host: hytgab.oicp.net\r\n"
		"Accept: *\/\* \r\n"
		"Content-Length: %d \r\n"
		"Content-Type: application/json;charset=utf-8\r\n"
		"Connection: close\r\n"
		"\r\n"
		"%s";

 

四、主任务

 

static void vSmartHardwareTask(void *pvParameters) {
	unsigned int ip, temp = 0;
	char buffer[100];
	UART_PRINT("success:%s %d\r\n", __FUNCTION__, __LINE__);
	scNetStaInit();
	delay();
	while (1) {
		ip = lGetSmartHardIp();
		 siIp_StrToInt("103.44.145.245",&ip);
		if (ip != 0) {
			//这个主要就是实现JSON的数据
			//{"value":12}\r\n
			snprintf(buffer, 100, "{\"value\":%d}\r\n", temp++);
			//这个主要就是合成HTTP协议
			//这个具体可以看g_cPostData
			snprintf(g_buffer, 300, g_cPostData,strlen(buffer),buffer);
			UART_PRINT("\r\n Send:\r\n%s\r\n", g_buffer);
			//发送数据,参数:数据,,数据长度,ip,端口
			vSendOneDataWithIpPort(g_buffer, strlen(g_buffer), ip,
					mainSMARTHARDWARE);
			delay();

			delay();
			delay();
		}

		delay();

	}
}
 
如果有啥看不懂的,请先看我的yeelink及cc3200教程中的其他例程,这些都是以前的代码。
 
 
 
五、服务器代码
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		System.out.println("设备发送了数据");
		BufferedReader reader = request.getReader();
		String line = null;
		while((line = reader.readLine()) != null){
			
			System.out.println(line);
		}
		
	}
 
 
BufferedReader 就是一个读缓冲的类,大概的意思就是把读到的数据先存放在缓冲区里,readLine()函数就是一行一行地读,什么是一行一行?不同的系统其换行符是不一样的,http://bbs.csdn.net/topics/350127738,window的换行符是\r\n,这也就是为什么我们post的数据后面要加\r\n的缘故,如果你没加\r\n,readLine函数可能就读不到,因为它是以换行符为标记的,你的标记没了,那么就读不到。
 
六、现象
 
请注意我发送的数据都是一直增加的,182 183,,我在yeelink也是这样的,所以不要问我为什么yeelink上传到值是一直增加的,这不是白痴问题么??
版权声明:本文为博主原创文章,未经博主允许不得转载。

一起学习CC3200系列教程之Yeelink传数据

序: 能力有限,难免有错,有问题请联系我, QQ1519256298     hytga@163.com Pdf下载http://pan.baidu.com/s/1hqiWB56   ...
  • hytgab
  • hytgab
  • 2015年05月23日 15:17
  • 5428

基于Android硬件设备跟微信服务器通信的项目心得,以UDP Byte通信为例,建立无向连接,0530手札

Android UDP byte[] 通信
  • jspping
  • jspping
  • 2015年05月30日 15:55
  • 1427

CC3200跟服务器的通信格式及解析json数据方法

阿汤哥 序: 能力有限,难免有错,有问题请联系我, QQ1519256298       hytga@163.com Pdf下载http://pan.baidu.com/s/1hqiWB56   请采...
  • hytgab
  • hytgab
  • 2015年07月12日 09:49
  • 2363

微信app和硬件蓝牙设备通信交互通道(15)

文章来源 V型知识库 http://www.vxzsk.com/282.html 好多初学者刚接触微信硬件的时候不知道微信app和蓝牙设备是如何通信的,也就是互相通信交互数据的,那么本章节就单独...

微信硬件平台wifi设备通信第一篇

开发前准备  首先得有个微信公众号,点击打开链接。   然后这是微信硬件平台连接微信硬件平台。 如果没看过硬件平台下的文档,建议先学习一下文档,免得云里雾里。因为微信认证得花三百大洋,所以跟大...

微信硬件平台下设备与微信通信

这一讲主要演示一下wifi设备接入的基本流程,大家看下面两张图,第一张等待设备接入,第二张是接入后的已连接,咱们要实现的效果就是第二张图片显示的结果。 因为在实际开发中需要写代码,这边我就使用在...

基于CC3200的智能家居系统----太行山麓创客空间与河北科技大学无线电实验室

CC3200 由3 大块组成,应用MCU 子系统+Wi-Fi网络处理器子系统+电源管理子系统。 应用 MCU子系统包含一个运行频率为80MHz的行业标准ARM Cortex-M4内核,同时还包含多种...

第一个CC3200WIFI网络通信程序

准备工具: 硬件: 电脑 MICRO USB数据线 CC3200-LAUNCHXL开发板 软件: IAR/CCS IDE工具 Uniflash3.4  FLASH编程工具 不能使用4.X或更高版本 h...
  • lbaihao
  • lbaihao
  • 2017年06月14日 17:55
  • 700

CC3200硬件资料

  • 2014年11月03日 09:37
  • 3.08MB
  • 下载

关于http服务器的学习笔记 基于CC3200

本文记录通过网页控制CC3200device设备的过程。 首先贴出过程框架,如图1 sw,图2 hw 图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信智能硬件之CC3200设备跟服务器通信
举报原因:
原因补充:

(最多只允许输入30个字)