NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统

     网上的一些文章写得简直是天花乱坠,一会说NB只能连电信,一会说NB只能连联通或者移动。。。。笔者之前被很多人给忽悠了,导致项目进度拖延。

关于NB模块(BC28)的使用,之前写了一篇文章:https://yangyuanxin.blog.csdn.net/article/details/80724712

     人总要有点钻研精神,不能说自己不是搞网络的,网络协议的东西就一直说不会,毕竟随着时代的发展,也要跟随一起进步,于是经过自己的研究就成功的把数据发送到自己搭建的后台管理系统了,操作如下:

后台的ip和端口号保密,所以本文你所看到的都会打上马赛克,谢谢谅解!

1、先查询BC28的信号强度

AT+CSQ\r\n

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第1张图片

确定没问题后,进行第二步。

2、创建一个TCP Socket

AT+NSOCR=STREAM,6,56000,1

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第2张图片

3、连接自己服务器和端口号

AT+NSOCO=1,xxx.xxx.xxx.xxx,xxxx

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第3张图片

在我不知道数据如何发的时候,我使用Postman这个软件,填下我的from-data数据,可以成功推送到我的后台:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第4张图片

使用Wireshark软件抓HTTP POST数据包:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第5张图片

将抓取到的数据包保存成一个txt文件,下面这个文件里的数据就是成功发送到后台的原始数据。怎么抓?

1、输入过滤条件

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第6张图片

2、找到那条你要抓的数据

鼠标右键点击,出现追踪流,选HTTP流

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第7张图片

就可以看到啦 :

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第8张图片

 如法炮制,找到我的数据

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第9张图片

接下来,编写一个字符串转16进制的程序。有人到这里会说,网上不是有很多转化工具吗?这里答复:不行!通过Wireshark抓到的数据包中,每一行都带有\r\n(回车换行),如果不把这些格式加进去,是发送不成功的。

str_to_hex.c

#include 
#include 
#include 
#include 
#include 
int Str2Hex(char *str,char *hex);
int main(void)
{
	char from_data[2048] = {0};
	char buffer[2048] = {0};
	int fd_f = open("Http_from_data.txt",O_RDWR);
	read(fd_f,from_data,785);
	close(fd_f);
	printf("%s",from_data);
	int fd = open("1.txt",O_RDWR|O_CREAT);
	Str2Hex(from_data,buffer);
	write(fd,buffer,strlen(buffer));
	close(fd);
	return 0 ;
}

int Str2Hex(char *str,char *hex)
{
	int high = 0;
	int low = 0;
	int temp = 0;

	if (NULL==str || NULL==hex){
		return -1;
	}

	if (0==strlen(str)){
		return -2;
	}

	while(*str)
	{
		temp = (int)(*str);
		high = temp>>4;
		low = temp & 15;
		itoa(high,hex,16);
		hex++;
		itoa(low,hex,16);
		hex++;
		str++;
	}
	*hex = '\0';
	return 0;
}

转换完的格式是这样的:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第10张图片

通过属性我们可以查到未转换成十六进制的原始数据长度为:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第11张图片

而转换后的16进制的数据是:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第12张图片

由于BC28发送的是16进制的数据,而后台接收的是原始数据,所以我们这里的长度一定要填成原始数据的长度,这点切记!不然是发不成功的,笔者之前就是因为这个问题折腾了很长时间,又被很多人给忽悠了。

接下来通过NB的发送指令,把数据发到后台:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第13张图片

通过串口发送工具:

NBIOT(BC28)通过HTTP POST请求发送from-data格式的数据到自己的后台管理系统_第14张图片

最后可以看到,后台回了一个OK给我,证明数据已经发送成功了!

最后要注意的是,NB发送完一条数据以后,需要按以下步骤执行:

//创建Socket
AT+NSOCR=STREAM,6,56000,1
//连接服务器
AT+NSOCO=1,120.78.136.134,9001
//发送数据
AT+NSOSD=1,xxx,xxxxxxxxxxxxxxxxx

你可能感兴趣的:(物联网技术)