Get запрос на локальный сервер через EtherCard
- Войдите на сайт для отправки комментариев
Пт, 05/02/2016 - 20:27
Есть такая задача: есть локальный сервер на питоне, необходимо посылать данные на сервер Get запросом через ардуину, в качестве Ethernet модуля юзаю enc28j60. Посмотрел в библиотеке EtherCard есть вебклиент, но он работает через интернет с использованием DNS. Каким образом можно заставить его работать на локальной сети?
// Demo using DHCP and DNS to perform a web client request. // 2011-06-08 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php #include <EtherCard.h> // ethernet interface mac address, must be unique on the LAN static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; byte Ethernet::buffer[700]; static uint32_t timer; const char website[] PROGMEM = "www.google.com"; // called when the client request is complete static void my_callback (byte status, word off, word len) { Serial.println(">>>"); Ethernet::buffer[off+300] = 0; Serial.print((const char*) Ethernet::buffer + off); Serial.println("..."); } void setup () { Serial.begin(57600); Serial.println(F("\n[webClient]")); if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println(F("Failed to access Ethernet controller")); if (!ether.dhcpSetup()) Serial.println(F("DHCP failed")); ether.printIp("IP: ", ether.myip); ether.printIp("GW: ", ether.gwip); ether.printIp("DNS: ", ether.dnsip); if (!ether.dnsLookup(website)) Serial.println("DNS failed"); ether.printIp("SRV: ", ether.hisip); } void loop () { ether.packetLoop(ether.packetReceive()); if (millis() > timer) { timer = millis() + 5000; Serial.println(); Serial.print("<<< REQ "); ether.browseUrl(PSTR("/foo/"), "bar", website, my_callback); } }
Попробую, огрооооомное спасибо! У меня даже нет слов как вас отблагодарить. Я уж думал что форум мертвый.
Все заработало! Я вам признателен! Вы спасли мою научную работу от провала! Огромное спасибо!