NB-IOT BC28连接阿里云服务器发数据。

2023-10-17 15:59

本文主要是介绍NB-IOT BC28连接阿里云服务器发数据。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

入坑俩月,收获就这么点,今天写写吧就当是笔记了。我的是电信卡。大家买到开发板后,一定要反复仔细读官方手册。

		第一步:BC28硬件板准备

准备一条 USB 转 RS232 的线接到板子上,注意要将板子上的 232_VCC 的跳线帽要跳接 上。这样是为了让 RS232 能够正常工作。注意一定要接,不然 RS232 是不工作的!
NB 卡可以在电信运营商 进行购买或者其他渠道获取。但是一定要注意所在地区是否已经有 NB 网络的覆盖。否则即 便有卡,也没法进行实际调试使用。移动的 NB 用普通的手机卡物联网都是可以的。电信的 必须是专用的。
打开提供的工具软件 QNavigator_NB-IoT_V1.0 来进行测试。下图就是我们已经插入 SIM 卡并且能够正常工作的。这里是我往阿里云发UDP数据
打开QN软件后,设置端口(com3)、Connect to module。这里会出很多问题,如果顺利的话,你的模块信息还有卡状态都会出现,你也可以单独点击下面的Module information和Registration information。当然左边的信息都是可以通过AT指令查询到的,自己到AT指令手册上去找吧

       	 第二步:电信定向 IP 发数据 UDP

对于定向发 IP,就是用户可以任意发数据到公网服务器端,目前电信对于 IP 还是存在一 定的限制。所以这里的定向 IP 如果用户有自己的卡并绑定了对应的公网服务器即可使用。 对于移动联通目前并没有相关的限制,可以任意发到公网 IP。电信对 IP 的限制不光是 UDP 也会对 TCP 端发送进行限制。
我们要连接服务器,需要首先设置 APN。那么这里的 APN 就是需要连接 到华为的地址上来。所以首先第一步先去激活 PDP,让模块具备发数据的基础
大家注意看我的右上角
通过调节成功之后呢,图片上会出现模块注册到服务器所分配的 IP 地址,这个就是和调试 2G 模块是一个道理。所以熟悉 2G 模块, 再来调试 NB-IOT 其实并没那么复杂。

这是阿里云的IP地址
在这里设置阿里云的IP地址和 端口号。 端口号这里需要大家在服务器上打开一个UDP端口,并设置开放状态,具体大家也是去看阿里云的手册=。=这里我已经在阿里云上部署了一个程序,在文章的最后分享给大家,当然这类转发程序网上有很多,这个并不是很好。

当然 UDP 是无连接模式。如果你服务器 不存在或者有问题,他也会显示连接 OK 的,既然无需连接那么建立一个UDP的通话很简单: 1. Create a socket 2.Send a message 反正我不管他连没连上,我就往这个IP地址发消息就是了,剩下的我就不管了,类似于写信。
下面俩指令我没用到
大家注意这里发送的都是十六进制的数据,并且我在测试的时候全部使用指令来发送,左边的Send不知为何不管用,还有一点我的AT+NSOST=1, 第一个<> 里不一定非得是1 0,1,2都可以的。

  第三步:数据在阿里云上显示

在阿里云上部署如下程序。

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>

#define SERV_PORT 3001

int main()
{
int sock_fd;
int recv_num;
int send_num;
int client_len;
char recv_buf[20];
struct sockaddr_in addr_serv;
struct sockaddr_in addr_client;
sock_fd = socket(AF_INET,SOCK_DGRAM,0);
if(sock_fd < 0){
perror(“socket”);
exit(1);
}else{

printf(“sock successful\n”);
}
memset(&addr_serv,0,sizeof(struct sockaddr_in));
addr_serv.sin_family = AF_INET;
addr_serv.sin_port = htons(SERV_PORT);
addr_serv.sin_addr.s_addr = htonl(INADDR_ANY);
client_len = sizeof(struct sockaddr_in);

if(bind(sock_fd,(struct sockaddr *)&addr_serv,sizeof(struct sockaddr_in))<0 ){
perror(“bind”);
exit(1);
}else{

printf(“bind success\n”);
}
while(1){
printf(“begin recv:\n”);
recv_num = recvfrom(sock_fd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&addr_client,&client_len);
if(recv_num < 0){
printf(“bad\n”);
perror(“again recvfrom”);
exit(1);
}else{
recv_buf[recv_num]=’\0’;
printf(“recv success:%s\n”,recv_buf);
}
printf(“begin send:\n”);
send_num = sendto(sock_fd,recv_buf,recv_num,0,(struct sockaddr *)&addr_client,client_len);
if(send_num < 0){
perror(“sendto”);
exit(1);
}else{
printf(“send successful\n”);
}
}
close(sock_fd);
return 0;
}

运行后是这样:在这里插入图片描述
收到数据是这样:
在这里插入图片描述

这篇关于NB-IOT BC28连接阿里云服务器发数据。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/226445

相关文章

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处