blackfire531 发表于 2022-9-3 18:27:00

webServer中的cgi交互问题

硬汉你好,最近在调试web server+ajax,使用的是你这边RTX全家桶的例程改的。
现在控件的输入和输出都安装例程改好了,工作正常,但是现在想实现一个功能:

在网页加载完毕后,发送一条指令,比如发送自定义字符串:“get_List”,单片机收到指令后,返回一个存储在flash中的数组,
现在通过xml_http.js文件中的函数实现发送
    var formAStateUpdate = new periodicObj("a_state.cgx", 0);
    function periodicUpdateAState() {
      updateMultiple(formAStateUpdate);
    }



单片机也确实可以正确收到来自浏览器的字符串“get_List”,但是单片机的接收函数是HTTP_CGI.c文件中的void cgi_process_data (U8 code, U8 *dat, U16 len)函数,
这个函数没有返回值,我该怎样从单片机里把需要返回的字符串发送给网页呢?谢谢。



gallop020142 发表于 2022-9-3 21:51:16

除了硬汉出的文档,建议也看看官方的资料https://www.keil.com/pack/doc/MW/Network/html/_compact__secure__web__server__example.html#autotoc_md16

eric2013 发表于 2022-9-4 02:23:03

能进入这个函数吗cgi_process_data

能进入就好解决。

blackfire531 发表于 2022-9-4 21:29:47

本帖最后由 blackfire531 于 2022-9-4 21:45 编辑

eric2013 发表于 2022-9-4 02:23
能进入这个函数吗cgi_process_data

能进入就好解决。
可以,但是我在里边回复了我要发送的数组内容,网页没法解析。我看网页需要解析类似这样的数据:<text></text>,我想把一堆自定义数据给网页,用于动态添加表格。

blackfire531 发表于 2022-9-4 21:30:02

gallop020142 发表于 2022-9-3 21:51
除了硬汉出的文档,建议也看看官方的资料https://www.keil.com/pack/doc/MW/Network/html/_compact__secu ...

ok

eric2013 发表于 2022-9-5 01:04:50

blackfire531 发表于 2022-9-4 21:29
可以,但是我在里边回复了我要发送的数组内容,网页没法解析。我看网页需要解析类似这样的数据:,我想把 ...

那就是反馈的数据格式问题了,之前我的例子里面有个IP列表功能,你在那个基础上修改就行。

gallop020142 发表于 2022-9-5 08:49:14

blackfire531 发表于 2022-9-4 21:30
ok

如果是新版本的,web.c的生成方式最好按照官网的说明来自动生成:

1. 添加htm, cgi, jpg等文件到工程,设置 file type 为 image file ,特别需要注意的是 pg_footer.inc, pg_header.inc这两个文件添加时,默认不是 image file,如果不手动设置成 image file,那么子页面会出错!

https://developer.arm.com/documentation/101407/0537/Utilities/Using-FCARM-with-uVision

2. 设置自动生成 web.c 文件(编译后自动生成 Auto_FcArm_Cmd.inp文件,如果网页出错,建议查看该文件)
https://www.keil.com/pack/doc/mw6/Network/html/nw_sw_utils.html

3. 编译完成后,跟手册类似,手动添加 web.c 至工程

soga238 发表于 2022-9-5 08:55:48

在cgi_data_process 里直接调用tcp发送函数,发送你需要返回的html字符串

blackfire531 发表于 2022-9-5 17:00:06

soga238 发表于 2022-9-5 08:55
在cgi_data_process 里直接调用tcp发送函数,发送你需要返回的html字符串

用哪个函数?这个的所有参数都是隐藏的,找不到描述符啊

blackfire531 发表于 2022-9-5 17:00:57

eric2013 发表于 2022-9-4 02:23
能进入这个函数吗cgi_process_data

能进入就好解决。

这个函数没有返回值,该怎么调用发送呢?

blackfire531 发表于 2022-9-6 10:02:40

eric2013 发表于 2022-9-5 01:04
那就是反馈的数据格式问题了,之前我的例子里面有个IP列表功能,你在那个基础上修改就行。

例子没找到,能否提供一下地址?谢谢硬汉

gallop020142 发表于 2022-9-7 14:15:03

blackfire531 发表于 2022-9-6 10:02
例子没找到,能否提供一下地址?谢谢硬汉

你可以试试官方的例子,差不多的
pack installer --> devices STM32H743VIHx --> Examples HTTP Server

blackfire531 发表于 2022-9-7 23:40:30

gallop020142 发表于 2022-9-7 14:15
你可以试试官方的例子,差不多的
pack installer --> devices STM32H743VIHx --> Examples HTTP Server
...

这个我看来,也是用定义好的cgi或者cgx发送的,不知道大哥有没有自定义一段信息发送的例程?

gallop020142 发表于 2022-9-8 09:07:40

blackfire531 发表于 2022-9-7 23:40
这个我看来,也是用定义好的cgi或者cgx发送的,不知道大哥有没有自定义一段信息发送的例程?

我记得这些例子是这样的,
lcd: 网页 向 下位机发送字符串
tcp net: 下位机 向 网页 发送信息
详细的需要自己摸索了

eric2013 发表于 2022-9-8 11:41:38

blackfire531 发表于 2022-9-6 10:02
例子没找到,能否提供一下地址?谢谢硬汉
我的这个例子就是
【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-21)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=17330





blackfire531 发表于 2022-9-8 22:38:28

eric2013 发表于 2022-9-8 11:41
我的这个例子就是
【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-2 ...

好的,我看一下,感谢硬汉:handshake

hijkstra 发表于 2023-5-24 15:32:51

请问一下,网页操作的动作(例如输入用户名)与线程进行通信,除了使用CGI的方式以外,还有其他什么方式吗?

eric2013 发表于 2023-5-24 16:10:39

hijkstra 发表于 2023-5-24 15:32
请问一下,网页操作的动作(例如输入用户名)与线程进行通信,除了使用CGI的方式以外,还有其他什么方式吗 ...

芯片服务器端的接口函数,主要还是CGI

hijkstra 发表于 2023-5-24 17:05:52

eric2013 发表于 2023-5-24 16:10
芯片服务器端的接口函数,主要还是CGI

好的,多谢啦
页: [1]
查看完整版本: webServer中的cgi交互问题