gpt4 book ai didi

c - 有可用的 mbed 以太网接口(interface)库吗?

转载 作者:行者123 更新时间:2023-11-30 16:09:27 25 4
gpt4 key购买 nike

我正在做一个关于STM32F767ZI的项目。当我编译代码时出现的错误是“您的目标不支持以太网接口(interface)库”。我在google上研究了一下,找到了某人的F7_Ethernet库,但由于库内部的错误,程序仍然无法编译。

代码如下:

//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){}
}

最佳答案

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

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

您可以在此处找到示例程序: https://os.mbed.com/docs/mbed-os/v5.14/apis/tcpsocket.html#server-socket

关于c - 有可用的 mbed 以太网接口(interface)库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59137258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com