首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可用的mbed Ethernet接口库?

是否有可用的mbed Ethernet接口库?
EN

Stack Overflow用户
提问于 2019-12-02 18:43:40
回答 1查看 522关注 0票数 0

我正在做一个关于STM32F767ZI的项目。当我编译我的代码时出现的错误是“你的目标不支持EthernetInterface库”。我在谷歌上搜索,找到了一些人的F7_Ethernet库,但由于库中的错误,程序仍然无法编译。

代码如下所示:

代码语言:javascript
复制
//Example - Voice Controlled Door Access 
#include "mbed.h" 
//#include "EthernetInterface.h" 
//#include "F7_Ethernet.h"
#include <stdio.h> 
#include <string> 
#include "rtos.h" 
#include "Servo.h"

#if defined(TARGET_NUCLEO_F767ZI)    
Servo myservo(D9);
#endif
#define PORT   80

void web_server(void const *args) {    
TCPSocketServer server;    
TCPSocketConnection client;         
server.bind(PORT);    
server.listen();
    while(true){        
    printf("Waiting for connection...\r\n");        
    int32_t status = server.accept(client);        
    printf("Connection from: %s\r\n", client.get_address());           
         if (status>=0)    
        {          
             char buffer[1024] = {};          
             int n= client.receive(buffer, 1023);          
             printf("Received Data:  %d\n\r\n\r%.*s\n\r",strlen(buffer),strlen(buffer),buffer);             
           //GET /q=open+sesame HTTP/1.1          
             char item[13];             
             for(int k=0; k<13; k++){         
                  item[k]= buffer[k+5];          
                  }
char Body[1024] = {};            
    if (strcmp(item,"q=open+sesame")==0){       
        sprintf(Body,"<html><title></title><body><h1>Door  Open</h1></body></html>\n\r\n\r");           
        //move the servo to open the door,              
        myservo = 1;             
        // wait for 5 seconds, close the door              
        wait(5);              
        //close the door              
        myservo = 0;        
         }          
    else{           
        sprintf(Body,"<html><title></title><body><h1>Door Not  Open</h1></body></html>\n\r\n\r");
            //do nothing with the door         
             }               
char Header[256] = {};      
sprintf(Header,"HTTP/1.1 200 OK\n\rContent-Length: %d\n\rContent- Type: text/html\n\rConnection: Keep-Alive\n\r\n\r",strlen(Body));          
client.send(Header,strlen(Header));          
client.send(Body,strlen(Body));
client.close();       
 }   
  } 
  } 
  int main() {   
   EthernetInterface eth;    
   eth.init();     
   eth.connect();    
   printf("\r\nServer IP Address is %s\r\n", eth.getIPAddress());     
     //close the door    
   myservo = 0;    
   //wait for instructions    
   web_server("");    
   while(1){}   
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 03:09:30

我假设您使用的是最新的Mbed OS版本(5.11~)。我建议使用NetworkInterface (doc)和TCPSocket

初始化网络接口后,使用TCPSocket打开连接connect()、发送数据send()和接收数据recv()。它也可以bind()accept()listen()

你可以在这里找到一个示例程序:https://os.mbed.com/docs/mbed-os/v5.14/apis/tcpsocket.html#server-socket

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59137258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档