我在Python3.7项目中工作,依靠从ESP8266-01接收临时数据,从ESP8266-01发送数据的代码似乎工作正常,当我使用wireshark时数据是可见的
但我不能在python程序下得到按摩, 使用代码:
import socket
import struct
import sys
multicast_group = '224.0.1.3'
server_address = ('', 8266)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(server_address)
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
print(sys.stderr, '\nwaiting to receive message')
data, address = sock.recvfrom(1024)
print(sys.stderr, 'received %s bytes from %s' % (len(data), address))
print(sys.stderr, data)
print(sys.stderr, 'sending acknowledgement to', address)
sock.sendto('ack', address)
我在读一些关于stackoverflow中类似UDP通信问题的文章和回复,但是其中任何一个在我这边都不起作用(我不会提供链接,它们太多了),可能是某种操作系统错误(Windows 10版)
我也可以分享ESP8266-01的简单程序(感谢Marc Quinton)
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ESP8266WebServer.h>
// simple POC : send hello world string over UDP-multicast address every 2 seconds.
// a very simple way to connect IOT to local network without need of any server.
// author : Marc Quinton / feb 2019
// keywords : esp8266, arduino, multicast, IOT, example, POC
WiFiUDP udp;
const int port = 8266;
// IPAddress broadcast;
IPAddress broadcast=IPAddress(224, 0, 1, 3);
const char* ssid = "myssid";
const char* password = "mypassword";
void setup(void)
{
Serial.begin(115200);
Serial.println("Startup");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("broadcast address : ");
Serial.print(broadcast);
Serial.print(":");
Serial.println(port);
}
void sendUDP(String string) {
Serial.print("sendUDP : ");
Serial.println(string);
// convert string to char array
char msg[255];
string.toCharArray(msg,255);
udp.beginPacketMulticast(broadcast, port, WiFi.localIP());
udp.write(msg);
udp.endPacket();
}
void loop(void)
{
sendUDP((String)"hello world");
delay(2000);
}
致以最诚挚的问候, 埃尔迪安
目前没有回答
相关问题 更多 >
编程相关推荐