基于ARM 的火灾信息传输网关设计
本文引用地址:https://www.eepw.com.cn/article/151001.htm
( 5) 管道写操作
一旦管道创建完成,用户就可以通过调用管道写函数来写数据。用于必须调用和初始化一致的写函数。
如网络模块调用pipe_init_ netw o rk 函数初始化管道,必须通过调pipe_w rite_netw ork 来写,若调用其他函数写入将失败,如表4 所示。
表4 管道写函数
表4 中目的模块ID 和控制字在conf ig . h 文件中定义。msg 是要发送数据的首地址,必须注意的是msg所指向的数据必须是字符串类型,必须以“ 0”结束,否则发送函数无法确定msg 数据包的长度。对于不是以msg 结尾的数据包,必须字符串化,否则发送函数的行为未定义。
( 6) 管道读操作管道读操作从管道读取一个固定长度的数据包,并解析数据包,从数据包中分离信息。管道的读操作可以是阻塞模式和非阻塞模式。在阻塞模式下,读操作将阻塞直到有数据返回。用户通过设置读操作中的参数f lag 可以实现模式选择。当f lag= 0 时,表示为阻塞模式; 当f lag= 1 时,表示为非阻塞模式。管道读操作也要求管道必须正确的初始化,否则读失败,同时也要求必须选择正确的管道读函数,如表5 所示。
表5
表5 中,src 是unsigned shor t * 类型,如果不要求获取源地址,可以传递NU LL。msg 用于存放接收数据的内存首地址,msg 必须大于或等于251 B。空间必须由用户分配。函数假定msg 的空间已分配且空间足够大 。
( 7) 基于TCP/ IP 的网络通信
装置采用串口采集消防主机上的数据,并且把数据转换成TCP/ IP 协议能识别的数据包,因此串口采集的数据源要作为以太网帧的一部分。为了向设备提供透明的接口并区分数据源,需要制定统一的帧格式。帧格式如下:
其中,串*字段用来区分数据源; 帧头、帧尾作为一个串口帧的起始分界( 可自定义) ; 数据部分是来自串口的原始数据流。
以太网方面采用面向连接的网络通信,采用TCP/ IP网络通信协议。数据包结构描述中控制单元格式如下:
应用数据单元基本格式如下:
消防主机发送的信息一般在10~ 100 B 之间,若选择T CP 协议,会使协议开销在网络的吞吐量中占有很大的比例。U DP 协议支持实时多播通信,保证了网关向监控中心实时发送火警情报,并能有效地减少用户信息传输装置的开销和网络资源。UDP 协议的数据可靠性和完整性问题由应用程序来解决,因此在该系统中使用UDP 更合理。
TCP/ IP 通信模块采用SOCKET 套接字编程实现。本系统采用服务器/ 客户端编程模型,服务器和客户端分别对应监控中心工作站服务器和用户信息传输装置。
4 结 语
本文详细剖析了利用Internet 实现火灾自动报警系统与城市远程消防监控中心的连接及相关信息的交互,并设计了该系统的关键设备——嵌入式信息传输网关,采用已经移植有Linux 2. 6 内核操作系统的ARM9单片机,在此基础上进行了应用程序的开发,实现了火灾探测信息的处理转发功能和上位机与嵌入式网关的信息交互功能。设备在实际环境中安装后的测试结果表明,该嵌入式系统对火灾探测数据及交互信息的处理和转发稳定可靠、实时性好,不仅适用于基于IP 的火灾信息传输网络中,同时还可应用于其串口和以太网通信的场合中,应用前景广阔。
评论