ramgc
Ср 14 февраля 2018 г. 12:49
Здравствуйте, я проектирую схему с STM32F103VE и просто подключите ENC28J60 для Интернета. У меня есть сервер с XAMPP, и я работаю должным образом с приложениями в Android, я использую библиотеку serasidis_ethercard_stm, когда http добраться до моего PHP -сервера, не получайте ничего хорошего, если положить другие сети равным.
Код WebClient для Arduino в этой библиотеке
Код WebClient для Arduino в этой библиотеке
#include
#include
// 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 = "82.221.41.158";
// called when the client request is complete
static void my_callback (byte status, uint16_t off, uint16_t 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("/comprueba_maq_ON.php?maquina="), "1", website, my_callback); }
}
Стивестронг
Ср 14 февраля 2018 г. 14:02
Я могу только рекомендовать использовать модули W5500 (Wiznet) вместо модулей ENC28J60.
Чип Wiznet гораздо более надежен (мой опыт), и LIB для этого лучше поддерживается.
Цены на модуль W5500 также конкурентоспособны с ценами модуля ENC: https: // www.aliexpress.com/item/reply ... 56354.HTML
Чип Wiznet гораздо более надежен (мой опыт), и LIB для этого лучше поддерживается.
Цены на модуль W5500 также конкурентоспособны с ценами модуля ENC: https: // www.aliexpress.com/item/reply ... 56354.HTML
Вассилис
Ср 14 февраля 2018 г. 15:16
@ramgc IP в вашем эскизе (82.221.41.158) не функциональна (по крайней мере для меня). Пожалуйста, предоставьте нам эскиз, в котором используется действующий общедоступный IP или имя общественного домена.
ramgc
Ср 14 февраля 2018 г. 15:21
[Вассилис - Ср. 14 февраля 2018 г. 15:16] - @ramgc IP в вашем эскизе (82.221.41.158) не функциональна (по крайней мере для меня). Пожалуйста, предоставьте нам эскиз, в котором используется действующий общедоступный IP или имя общественного домена.ОК, спасибо
#include
#include
// 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 = "82.223.11.159";
// called when the client request is complete
static void my_callback (byte status, uint16_t off, uint16_t 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("/comprueba_maq_ON.php?maquina="), "1", website, my_callback); }
}
Вассилис
Ср 14 февраля 2018 г. 16:04
Pinging 82.223.11.159 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 82.223.11.159:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
ramgc
Ср 14 февраля 2018 г. 16:15
[Вассилис - Ср 14 февраля 2018 г., 16:04] - Пинг 82.223.11.159 с 32 байтами данных:
Запросить время.
Запросить время.
Запросить время.
Запросить время.
Статистика пинга для 82.223.11.159:
Пакеты: отправлено = 4, получен = 0, потерянный = 4 (потеря 100%),
Я просто вижу, что не пинг... Но PHP работает правильно
помещать http: // 82.223.11.159/CORCMEBA_MAQ_ON.PHP?Макина = 1 и вернуть 1 или 0
Я не знаю, что случится
fpistm
Ср 14 февраля 2018 г., 16:25
Для ENC28J60 я использовал эту LIB, которая теперь поддерживает платы STM32 с версии 2.0.5:
https: // github.com/uipethernet/uipethernet
https: // github.com/uipethernet/uipethernet
Вассилис
Ср 14 февраля 2018 г., 17:52
#include
#include
// 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 = "82.223.11.159";
static byte server_ip[] = { 82,223,11,159};
// called when the client request is complete
static void my_callback (byte status, uint16_t off, uint16_t 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, PA4) == 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.copyIp(ether.hisip, server_ip);
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("/comprueba_maq_ON.php?maquina="), "1", website, my_callback); }
}
ramgc
Чт 15 февраля 2018 г. 15:41
[Вассилис - Ср 14 февраля 2018 г., 17:52] -
#include
#include
// 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 = "82.223.11.159";
static byte server_ip[] = { 82,223,11,159};
// called when the client request is complete
static void my_callback (byte status, uint16_t off, uint16_t 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, PA4) == 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.copyIp(ether.hisip, server_ip);
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("/comprueba_maq_ON.php?maquina="), "1", website, my_callback); }
}
ramgc
Солнце 18 февраля 2018 г. 8:09
Это сумасшедший...Не работай этот код для меня, я пробую все, но ничего, что -нибудь плохо читается в моем коде, я не знаю, где
Вассилис
Пн 19 февраля 2018 г. 9:32 утра
Я постараюсь дать вам еще один базовый пример кода. В новом примере используется новый буфер (BUF) с длиной 2048 байтов. Полученные байты копируются в новый буфер. Если <хвост> переменная больше, чем 0, вы можете прочитать полученные байты.
Как я уже говорил, это очень базовый пример кода и может значительно улучшить (кольцевой буфер и т. Д.).
Как я уже говорил, это очень базовый пример кода и может значительно улучшить (кольцевой буфер и т. Д.).
#include
#include
// 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;
#define MY_BUFFER_SIZE 2048
byte buf[MY_BUFFER_SIZE];
int tail = 0;
const char website[] PROGMEM = "82.223.11.159";
static byte server_ip[] = { 82,223,11,159};
// called when the client request is complete
static void my_callback (byte status, uint16_t off, uint16_t len) {
if((tail + len) < MY_BUFFER_SIZE){
for(int i=0;i 0){
Serial.println(">>>");
for(int i=0;i timer) {
timer = millis() + 5000;
Serial.println();
Serial.print("<<< REQ ");
ether.browseUrl(PSTR("/comprueba_maq_ON.php?maquina="), "1", website, my_callback); }
}
ramgc
Вт 20 февраля 2018 г. 8:44
Просто работай сейчас, спасибо, только это за то, чтобы закончить мой proyect.
Отличный форум, спасибо!!
Теперь нужно только обрабатывать все байты
Отличный форум, спасибо!!
Теперь нужно только обрабатывать все байты