Ich versuche, ein Broadcast-Paket an einen bestimmten Port zu senden, aber es scheint, dass der Code einige seltsame Fehler gibt, für die ich keinen Fix finden kann. Ich habe versucht mit net.socket: connect() und dann den Aufruf der "send()" -Methode, die nicht funktioniert, dann sagte ich, dass ich die net.socket: on ('Verbindung') und verwenden sollte sende da, da nehme ich an net.socket: connect() ist nicht synchron. Aber das gab einen seltsamen Fehler zu ...NodeMCU stürzt beim Versuch ab, net.socket aufzurufen: connect()
Für diesen Code:
function sendBroadcastPacket()
bip = wifi.sta.getbroadcast()
srv = net.createConnection(net.UDP,0)
print('Trying to connect on: ', bip)
srv:connect('9001', bip)
srv:send("Broadcast packet from: "..NODE_ID, function(sent)
print("Broadcasted packet! "..sent)
end)
end
ich die folgende Fehlermeldung:
PANIC: unprotected error in call to Lua API (init.lua:24: attempt to call method 'connect' (a nil value))
Linie 24 ist die srv: connect Linie.
Danach habe ich versucht, für das Verbindungsereignis hören, zuerst zu sehen, ob es so funktioniert:
function sendBroadcastPacket()
bip = wifi.sta.getbroadcast()
srv = net.createConnection(net.UDP,0)
print('Trying to connect on: ', bip)
srv:on('connection', function(sck, c)
sck:send("Broadcast packet from: "..NODE_ID, function(sent)
print("Broadcasted packet! "..sent)
end)
end)
srv:connect('9001', bip)
end
ich die folgende Fehlermeldung:
PANIC: unprotected error in call to Lua API (init.lua:24: invalid callback name)
Linie 24 ist die srv: on ('Verbindung') Linie.
Was scheint hier zu geschehen? Es gibt nicht viele Google-Ergebnisse, da viele andere Leute die Arduino-IDE-Version verwenden (übrigens, ist das noch nodemcu oder brauchst du eine andere Firmware für das ESP8266?). Ich bekomme eine Broadcast-IP, und es verbindet sich mit dem AP. Ich habe hier nicht den WLAN-Verbindungsteil gepostet, weil es funktioniert, ich habe es verwendet, um mqtt und http-Verbindungen zu testen, die funktionierten.
Der Build, den ich benutze, Lua 5.1.4 auf SDK 2.1.0 (116b762), hat das Netz Modul enthalten.
Das hat geklappt! Vielen Dank Mann :), ich begann wirklich die Hoffnung zu verlieren zu denken, dass es ein Plattform-Bug war. – Azurium
Ich wusste, UDP ist verbindungslos, aber nicht wirklich die nodemcu-Methode in Frage, da ich von einigen Google-Ergebnissen inspiriert wurde, und auch, scheint wie jemand, vielleicht Sie :), bearbeitet gerade die Dokumentation Wiki mit der Aufmerksamkeitsbox, wo es _This sagt wird sich in kommenden Releases ändern, so dass net.createConnection immer eine unverschlüsselte TCP-Verbindung erstellen wird. Ich habe den Wayback-Rechner benutzt, um zu bestätigen, dass ich nicht träume :)). Ich habe den createUDPSocket-Teil in der Dokumentation vermisst. Danke nochmal! – Azurium
Vertraue nicht den Quellen, zu denen dich G führen könnte. Unsere API-Dokumentation (diejenige, die zu Ihrer Firmware-Filiale passt) ist die einzige Quelle der Wahrheit. –