首页 > 编程知识 正文

arm编程实例c语言(由c语言交叉编译为cgi,ARM嵌入式系统中Web服务器功能的实现)

时间:2023-05-06 20:01:26 阅读:121773 作者:889

4嵌入式网关接口程序的实现

为了实现客户浏览器与Web服务器之间的动态交互,需要采用动态的Web技术。 这样,客户不仅可以通过浏览器实时查看远程发送的数据,还可以主动控制Web服务器端的嵌入式设备。 目前,实现动态网页的四种技术分别是CGI、ASP、PI-IP、JSP。 但是Clinux不支持ASP和PHP,所以采用CGI实现动态网页。

CGI是一个在Web服务器上运行的程序,具有在Web服务器和APP应用程序之间建立通信链接的功能。 Web服务器接收到客户端浏览器发送的HTTP请求消息后,转发给对应的CGI程序,如果有对应的资源,CGI将响应发送回服务器,后者将结果返回客户端。 CGI的结构如图3所示。

图2嵌入式Web服务器工作流程

图3 CGI的动作模式

当用户单击网页上的按钮时,HTML页面上的表单数据将发送到Web服务器。 服务器创建新流程并运行CGI程序,然后将表单数据发送到程序中。 CGI进一步基于表单数据调用其他服务进程,并将执行结果传递给服务器。 从服务器封装成HTTP响应包,发送到客户端浏览器。

开发的CGI程序主要由四部分组成。

1 )从开机自检请求表单读取数据。 用户通过标准输入将开机自检请求中的数据发送到Web服务器,服务器将输入数据作为一系列键值对提供给CGI程序。 键是HTML表单元素的名称,值是用户输入的数据或空值。 每个键-值对均为“&; ”字符分隔,键和值用“=”分隔。

2 )解释请求表单中的数据。 的CONTENT—LENGTH字符串是一组键值对和编码,程序可以将该字符串的键值一一对应起来,以从表单元素的名称中获得用户输入的数据。

3 )对请求表格中的数据进行解码。 程序使用这些数据并对其进行解码,以删除其中的“”、十六进制ASCII代码等。 按照1 )中所述的编码规则进行逆操作,将各键-值对添加到自定义的结构体(变量名-值对)数组中进行保存。

4 )与其他APP应用程序进行交互,并返回结果。 根据分析的变量名称、值对和变量名称确定用户请求的类型,并将相应的值传递给其他程序。 运行程序后,将结果返回给CGI。 CGI还使用一系列打印输出函数生成HTML源代码,最后由服务器根据HTTP协议打包,并返回到客户端浏览器。

CGI程序可以用多种语言编写,包括Perl、shell、c、c、Fortran和Pascal。 在Linux上,可以使用Perl、c语言等开发CGI程序。 但是,Clinux不支持Perl,因此必须用c语言编写。

与CGI交互的嵌入式APP应用必须采用模块化编程技术。 每个功能模块都是独立的进程,通过Clinux支持的System V IPC提供的各种进程通信机制(包括信号、消息队列和共享内存)实现来自每个进程的通信。 对于嵌入式测控APP应用来说,主要过程包括数据采集、系统时间设置等。

CGI进程接收服务器发送来的表单信息,将其解析为各种命令,并将其作为消息队列发送到相应的进程。 数据采集过程采用信号(软中断)机制实现数据采集功能,初始化后首先进入信号块状态,定时信号到达后,将采集的数据通过共享内存方式上传到CGI过程中。 CGI进程和每个APP应用进程之间的通信如图4所示。

图4 CGI进程和每个APP应用进程之间的通信框图

编写的CCI源程序经过交叉编译后,在服务器的cgi目录下生成*.cgi可执行程序。 当用户单击网页上的按钮或指向CGI程序的链接时,将运行*.cgi。 CGI程序为用户提供图形界面。 远程Web用户通过在Web表单中输入和提交数据,实现与现场嵌入式设备的信息交换。 然而,由于每次运行CGI时都需要服务器提供服务的过程,服务器与浏览器的交互越多,对服务器端嵌入式系统的整体性能影响越大,因此为了减轻嵌入式服务器端的负担

嵌入式JavaScript的HTML和其他静态HTML存储在服务器的文档目录中,当用户单击HTML链接时,服务器会自动找到相应的HTML页面并返回。

五结

基于Clinux操作系统,将ARM嵌入式APP应用系统与互联网相结合,通过向嵌入式Web服务器添加嵌入式网关接口CGI程序等手段,实现动态Web技术远程监控用户可以通过互联网直接访问和控制远程嵌入式APP应用系统,无需使用通用微机作为Web服务器。 具有成本低、可靠性高等优点,可为监测领域的发展和方案选择提供实用参考价值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。