【问题标题】:Is there an easy way to interact with web pages within a C program running on an FPGA?有没有一种简单的方法可以在 FPGA 上运行的 C 程序中与网页进行交互?
【发布时间】:2019-04-09 14:21:13
【问题描述】:

首先:我是一名电子工程师,所以我对高级编码不太适应,我几乎不会“说”C。对于一个课堂项目,我需要在 Altera FPGA 上开发一个嵌入式应用程序,使用NiosII 软核处理器。我们想尝试从互联网上读取一些数据,然后用它做一些事情(即以某种方式显示它),但我们不知道如何在不学习大量新事物和不运行操作系统的情况下做到这一点。是否有捷径可寻?我阅读了 cURL,但我的理解是它需要一个操作系统。我们还有哪些其他选择?从字面上看,任何易于访问的数据都是可以的,我们将尝试对其进行创意。

我知道我们有一个 Wifi 模块,它应该负责 TCP/IP 协议,通过 UART 与 FPGA 交换数据。

很抱歉,这听起来可能不是一个很有见地的问题,但我需要在开始之前了解这个项目是否可行。提前致谢!

【问题讨论】:

    标签: c embedded fpga nios


    【解决方案1】:

    部分取决于您可以使用该 wifi 模块做什么,但要点是:
    - 打开一个 tcp/ip 套接字,
    - 使用该套接字连接到端口 80 上的 http 服务器
    - 将GET / HTTP/1.0\r\n\r\n 写入套接字,/ 是对象的路径,如/sensor/temperature
    - 从套接字读取响应
    典型的反应是这样的:

        HTTP/1.1 200 OK
        Date: Tue, 09 Apr 2019 14:31:05 GMT
        Server: Apache/2.2.16 (Debian)
        Last-Modified: Mon, 20 Jul 2009 04:29:15 GMT
        ETag: "1fdbfa-2d-46f1b949d9cc0"
        Accept-Ranges: bytes
        Content-Length: 45
        Connection: close
        Content-Type: text/html
    
        <html><body><h1>It works!</h1></body></html>
    

    【讨论】:

    • 我可以通过这种方式下载什么样的数据?任何网页,还是有某种限制?抱歉,我在这方面的知识非常有限。几周后我将参加一些关于这个主题的讲座,但现在决定这个项目为时已晚。向你致敬!
    • 几乎任何类型的数据。更难的事情是 https 站点(ssl/tls),因为你必须拥有加密库,尽管 wifi 模块可能会有一些内置的加密。解析复杂站点也超出了您希望在该 FPGA 中执行的操作范围。如果您想跳过 http 并且有一个支持您自己的协议的已知端点,您可以使您的解析更容易。例如,您有一个程序可以每隔 N 秒向任何连接的人发送温度读数。您只需要连接,它就会自动向您发送数据。
    • API 是一个可行的选择吗?似乎很多网站都提供这些,但我不确定他们是否需要操作系统
    • 取决于 API,它们可能需要用户代理或其他 HTTP 标头,这会增加您发送的内容的复杂性。要添加标题,而不是在标题之间执行\r\n\r\n,而不是在标题之间执行单个\r\n,并在它们的末尾执行\r\n\r\n。找到所需内容的最简单方法是启动数据包嗅探器(如wireshark)并使用curl点击有问题的api,您可以复制curl发送的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2013-03-08
    • 2010-09-06
    • 2017-04-29
    • 2018-07-05
    相关资源
    最近更新 更多