• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
WebServer_WT32 problem z kompilacją
#1
Witam !!
Pobrałem bibliotekę WebServer_WT32  Płytkie ustawiłem na WT32-ETHO1
Próbowałem też a płytką ESP32 DEV Module
Arduino 1.8.19
Mama problem z kompilacja Błąd poniżej

\Arduino\libraries\WebServer_WT32_ETH01\src/WebServer_WT32_ETH01.h:63:4: error: #error This code is designed to run on ESP32 platform! Please check your Tools->Board setting.
  63 |  #error This code is designed to run on ESP32 platform! Please check your Tools->Board setting.
      |    ^~~~~


Kod:
/*
  by Yaser Ali Husen
  ModbusTCP Server with 4 coils
  Using WT32-ETH01 Board

  Library modbus: ArduinoModbus
  Library for ethernet connection: https://github.com/khoih-prog/WebServer_WT32_ETH01
  Use Arduino Library Manager Installation:
      The best and easiest way is to use Arduino Library Manager. Search for WebServer_WT32_ETH01,
      then select / install the latest version
*/
#include <SPI.h>
//#include <Ethernet.h>  // Ethernet library v2 is required
#include <ArduinoRS485.h>  // ArduinoModbus depends on the ArduinoRS485 library
#include <ArduinoModbus.h>

#define DEBUG_ETHERNET_WEBSERVER_PORT Serial

// Debug Level from 0 to 4
#define _ETHERNET_WEBSERVER_LOGLEVEL_ 3
#include <WebServer_WT32_ETH01.h>

// Select the IP address according to your local network
IPAddress myIP(192, 168, 0, 212);
IPAddress myGW(192, 168, 0, 1);
IPAddress mySN(255, 255, 255, 0);

// Google DNS Server IP
IPAddress myDNS(8, 8, 8, 8);

WiFiServer ethServer(502);
ModbusTCPServer modbusTCPServer;

int relay1 = 2;
int relay2 = 4;
int relay3 = 12;
int relay4 = 14;

void setup() {
  Serial.begin(9600);
  while (!Serial);

  //Output configuration
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  //Turn OFF all relays
  digitalWrite(relay1, HIGH);
  digitalWrite(relay2, HIGH);
  digitalWrite(relay3, HIGH);
  digitalWrite(relay4, HIGH);

  // To be called before ETH.begin()
  WT32_ETH01_onEvent();
  ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER);

  // Static IP, leave without this line to get IP via DHCP
  //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0);
  ETH.config(myIP, myGW, mySN, myDNS);

  WT32_ETH01_waitForConnect();

  // start the server
  ethServer.begin();

  // start the Modbus TCP server
  if (!modbusTCPServer.begin()) {
    Serial.println("Failed to start Modbus TCP Server!");
    while (1);
  }
  // configure 4 coils at address 0x00
  modbusTCPServer.configureCoils(0, 4);
}

void loop() {
  delay(50);
        // listen for incoming clients
        WiFiClient client = ethServer.available();
  if (client) {
  // a new client connected
  Serial.println("new client");
    // let the Modbus TCP accept the connection
    modbusTCPServer.accept(client);
    while (client.connected()) {
      // poll for Modbus TCP requests, while client connected
      modbusTCPServer.poll();
      // update relays
      updateRelay();
    }
    Serial.println("client disconnected");
  }
}

void updateRelay() {
  // read the current value of the coil
  int coilValue1 = modbusTCPServer.coilRead(0);
  int coilValue2 = modbusTCPServer.coilRead(1);
  int coilValue3 = modbusTCPServer.coilRead(2);
  int coilValue4 = modbusTCPServer.coilRead(3);

  digitalWrite(relay1, !coilValue1);
  delay(10);
  digitalWrite(relay2, !coilValue2);
  delay(10);
  digitalWrite(relay3, !coilValue3);
  delay(10);
  digitalWrite(relay4, !coilValue4);
}
 
Odpowiedź
#2
(19-01-2025, 15:35)robo1973 napisał(a): \Arduino\libraries\WebServer_WT32_ETH01\src/WebServer_WT32_ETH01.h:63:4: error: #error This code is designed to run on ESP32 platform! Please check your Tools->Board setting.
  63 |  #error This code is designed to run on ESP32 platform! Please check your Tools->Board setting.
      |    ^~~~~

Kod pewnie nie ma tutaj znaczenia. Dostajesz błąd, który został wpisany (polecenie #error) przez autora biblioteki gdy w trakcie kompilacji okaże się że środowisko jest coś nie tak. Treść sugeruje, że potrzebuje ESP32 a wykrył coś innego, ale jaki jest tam dokładnie warunek, to musisz obejrzeć plik nagłówkowy i źródłowy biblioteki. Najwyżej można spróbować dopisać jakieś #define przed inkludowaniem biblioteki, by oszukać sprawdzanie.
 
Odpowiedź
#3
Obejrzałem filmik. Idziesz w trochę dziwną stronę: wszystkie obliczenia rysunku zamierzasz robić na arduino, każda zmiana wielkości okienka, inne teksty itp będzie wymagać zmiany, przekompilowania i załadowania nowego programu na arduino. Bardziej naturalny podział zadań byłby taki, że arduino zbiera dane, zapisuje gdzieś na trwałym nosniku (karta SD?), najwyżej przelicza jest na normalnie jednostki. Do komputera interfejsowego wysyła jedynie paczki danych - całą robotą rysunkowo-obliczeniową zajmuje się komputer. Tak by arduino w miarę możliwości działało w sposób nieprzerwany i nie zakłócony, obojętnie czy komputer 'dodatkowy' jest podpięty, czy nie.
W sumie kreślarka działa trochę w ten sposób - czyta jedynie liczby i na ich podstawie sama szykuje wykres.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości