Проблемы с enc28j60

Тема в разделе "Arduino & Shields", создана пользователем Andrei250292, 1 фев 2017.

  1. Andrei250292

    Andrei250292 Нуб

    Здравствуйте, подскажите пожалуйста в чем может быть проблема. enc28j60 прекрасно работает как сервер, но ни в какую не работает клиент? Вот код:
    Код (C++):
    #include <EtherCard.h>

    // Буффер сетевой карты
    byte Ethernet::buffer[700];

    // Адрес сайта на который будем стучаться (в моем случае он запускается на одном с сервером IP)
    const char website[] PROGMEM = "192.168.0.10"; //Замените на ip адрес вашего компьютера

    // IP адрес сервера.
    static byte websiteip[] = { 192,168,0,10 }; //Замените на ip адрес вашего компьютера
    static uint32_t timer;

    // Действия после успешной отправки данных

    //Мак-адрес устройства
    static byte mac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

    //функция колбэка (нелбходима для обраюотки полученных данных)
    static void callback (byte status, word off, word len) {
      Serial.println(">>>");
      Ethernet::buffer[off+300] = 0;
      Serial.print((const char*) Ethernet::buffer + off);
      Serial.println("...");
    }

    // Функция отправки данных на сервер
    void send_package(){
        ether.packetLoop(ether.packetReceive());
        if (millis() > timer) {
          Serial.println(F("<<PING"));
          timer = millis() + 2000;
          ether.browseUrl(PSTR("/script.php?user="),"arduino", website, callback);
      }
    }

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

      if (ether.begin(sizeof Ethernet::buffer, mac,8) == 0)
        Serial.println(F("Failed to access Ethernet controller"));
      else
        Serial.println(F("Successfully to access Ethernet controller"));
      if (!ether.dhcpSetup())
        Serial.println(F("DHCP failed"));
      else
        Serial.println(F("Successfully DHCP"));

      ether.hisport = 80;
      memcpy(ether.hisip, websiteip, sizeof(websiteip));
      ether.printIp("My IP: ", ether.myip);
      ether.printIp(F("SRV: "), ether.hisip);
    }

    void loop () {
      //отправляем данные
      send_package();
    }
    Код php, который должен обрабатывать get запрос от сервера:
    PHP:
    <?php
        if (isset($_GET['user'])) {
            $fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи
            $mytext = $_GET['user']; // Исходная строка
            $test = fwrite($fp, $mytext); // Запись в файл
            if ($test) echo 'Данные в файл успешно занесены.';
            else echo 'Ошибка при записи в файл.';
            fclose($fp); //Закрытие файла
        }
    ?>
    Пожалуйста объясните как тупому человеку, уже месяц бьюсь
     
  2. Mihail Vasilev

    Mihail Vasilev Нерд

    tcpdump на сервере запустите, половите пакеты - может поймёте, что там по сети летает.