物联网网关控制与数据采集系统设计

发布于:2022-11-27 ⋅ 阅读:(294) ⋅ 点赞:(0)

目 录

第一章 背景介绍 1
第一节 课题设计的背景 1
第二节 物联网网关的相关技术和研究现状 2
第三节 系统开发的目的和意义 6
第二章 系统开发环境介绍 7
第一节 开发工具的选择概述 7
第二节 开发板FriendlyARM6410介绍 7
第三节 嵌入式Linux介绍 9
第四节 相关技术的应用 12
第五节 数据库介绍 17
第三章 系统分析与概要设计 20
第一节 可行性分析 20
第二节 需求分析 21
第三节 系统功能结构分析 22
第四章 数据库的设计与实现 29
第一节 数据库设计 29
第二节 数据库表设计 29
第三节 系统E-R图 33
第五章 详细设计与实现 36
第一节 设计目标 36
第二节 开发环境和目标平台 36
第三节 开发平台的搭建 36
第四节 数据通讯协议 38
第五节 主要模块代码分析 38
第六章 系统测试与综述 52
第一节 测试的意义和方法 52
第二节 系统模块功能展示 53
第七章 结论 61
参考文献 62
致 谢 63
第三节 系统功能结构分析

一、硬件功能结构分析
在整个物联网网关系统中,硬件的结构分为底层,上层和中层,在我的设计中主要实现的功能是中层网关实现的数据协议转换,以及双向传输。用到的硬件设备是FriendlyARM6410,由于上层应用是用Linux编写的,所以首先要将开发板烧写成Linux系统。其次是完成设备的驱动,串口驱动,网口驱动。硬件结构图中涉及到了底层传感设备、中层网关平台ARM11 S3C6410、上层上位机服务器。具体的连接关系如图3-2硬件结构图所示。
在这里插入图片描述

图3-2 网关系统硬件结构图

二、软件功能结构分析
网关系统的上层的软件功能,也就是用户直接使用的部分。虽然此系统并不是以面向对象的软件设计为中心,网关功能的实现主要还涉及到了硬件的部分,但是网关系统终究是需要用户来使用的,所以在最终的Linux软件设计中,加入了UI字符界面,可以使网关操作清晰明了,同时方便了管理员的管理和用户的使用。
接下来就软件层的系统功能做如下分析:
(一)系统配置
(1)管理员登陆:在管理员进入系统之前,增加了登陆模块,只有添加过的管理员可以登录系统,完成接下来的一系列操作。
(2)设置系统的最大连接数量:网关系统是可以实现数据的协议转换,所以可以有底层的设备接入,如果做测试的时候就相当于一个文件传输系统。但是要对接入的设备进行数量的控制,保证服务的准确。
(3)添加管理员:系统通过文件操作,可以实现对管理员的添加。当登录系统后,可以输入账户和密码,经过检测如果用户名和密码都在合理范围内,可以成功添加管理员。这个操作是为了保证在多个设备接入系统时,可以实现多管理员多地登陆。
(4)添加用户:系统通过文件操作,可以实现对用户的添加。用户的添加只可以由管理员来完成,这样就保证了用户只可以实现基本服务,但是对系统无法操作。
(二)运行服务
(1)建立线程send传输连接:当用户选择建立连接后,系统会首先运行send服务。在屏幕显示socket c_send connect successed,表示上行的服务已经建立连接。
(2)建立线程transfer传输连接:当send已经成功建立连接后,系统会再运行transfer。在屏幕显示pthread_transfer is ok,表示传输已经准备就绪。
(3)建立线程recieve传输连接:当transfer准备就绪后,系统会运行recieve服务。在屏幕显示socket c_recieve connect successed,表示下行的服务也成功建立连接,等待接收数据。
(4)解析数据:当所有的连接都已经成功建立,只需等待数据,从网口到串口的数据,或者串口到网口的数据都可以实现收发与协议转换。当接收到数据时,会显示数据长度与转码后的数据格式,这样的功能相当于一个秘密的传输过程。这个过程中的双向数据是如何完成格式的转换,具体的数据流如图3-3物联网网关数据通信图所示。
(5)数据写入数据库:在当系统接收到数据,并完成了协议的转换时,会开启sqlite3数据库,并将所有传输信息写入数据库,本文转载自http://www.biyezuopin.vip/onews.asp?id=11570便于对数据的管理。

void *pthread_client_receive (void *arg)
{
signal(SIGPIPE, SIG_IGN); //pipe信号绑定
if ((dev_uart_fd = open (/dev/ttySAC3”, O_RDWR)) < 0) //打开串口驱动
{
perror ("open arm-gate_com3  is error");
exit (-1);
} 
serial_init (dev_uart_fd);  //初始化 com3
printf ("com init is ok\n");      
socket_connect(); //重新建立接收socket
printf ("pthread_client_receive is ok\n");
int i,len;
char socket_buf[100];
while(1)
{	
len = read( fd_socket_new, socket_buf, 100); //读数据
if(len <= 0)
{
printf("recive data from socket fail !\n");
perror("recvfrom:");
exit(EXIT_FAILURE);
}
else
{
printf("\nrecieve data from socket sueccess, data_len= %d\n",len);
for(i=0;i<len;i++)
{
printf("%x ",socket_buf[i]);
}	
if(socket_buf[0]==0x3A&&socket_buf[4]==0x3B) //如果满足数据格式的定义
{	
len = write(dev_uart_fd, socket_buf, len);    //send the data recived from socket to uart1
}
if(len < 0)
{
printf("\nwrite data to uart fail\n");
}
else
{
printf("\nwrite data to uart success,data_len=%d\n",len);
}
}

在这里插入图片描述

图3-3 物联网网关数据通信图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到