Сообщения UDP не уходят (

Тема в разделе "Arduino & Shields", создана пользователем ostrov, 5 сен 2019.

  1. ostrov

    ostrov Гуру

    Не могу понять в чем дело, получает сообщения нормально, но не отправляет. Делаю так:
    Код (C++):
      if (millis() > timer) {
        timer = millis() + 5000;
        ether.sendUdp(textToSend, sizeof(textToSend), dstPort, ether.hisip, srcPort);
        Serial.println("send");
        ether.printIp("SRV: ", ether.hisip);
      }
     
    Адреса и порты правильные, из другого аппаратного клиента уходят. Что не так?
    Железка: ENC28J60
     
    Последнее редактирование: 5 сен 2019
  2. ZAZ-965

    ZAZ-965 Гуру

    Исходный порт с портом назначения в вызове sendUdp не перепутаны?
    Код (C++):
    void EtherCard::sendUdp     (  
            const char *      data,        //Pointer to data
            uint8_t      len,             //Size of payload (maximum 220 octets / bytes)
            uint16_t      sport,          //Source port
            const uint8_t *      dip,     //Pointer to 4 byte destination IP address
            uint16_t      dport           //Destination port
        )    
     
  3. ostrov

    ostrov Гуру

    Пробовал менять, не помогает. (
     
  4. ostrov

    ostrov Гуру

    Кто-нибудь пользовался библиотекой EtherCard-master? Уже все перепробовал, или глаз замылился. Не уходит сообщение, хоть тресни. Что я делаю не так?
     
  5. Не уходят или не доходят?
    На мастере не пробовал, стараюсь по возможности избегать коммиты без тегов, а на 1.1.0 пробовал использовать статические адреса и без шлюза.
    Просто подключена ардуина через ENC28 к ПК, шлюзов и dhcp просто нет.
    Настроил статику, задав только ip.
    Отправляю udp и вижу (на ПК) что в кадре мак адрес получателя заполнен нулями.
    А где же arp запрос для разрешения мак-а?
    При настройке статики добавил ещё адрес шлюза и маску подсети.
    Установил в ether.hisip адрес сервера.
    После этого и arp вижу, и в кадре при отправке udp мак получателя заполнен.
     
    ostrov нравится это.
  6. ostrov

    ostrov Гуру

    Нашел другую библиотеку (UIPEthernet), вникать и править имеющуюся вообще некогда. Новая (для меня) работает иначе, но гораздо понятнее и без ошибок. Кроме того, прикрутил общение по UDP и через вайфай, на случай, если потребуются беспроводные устройства.
    По физиологии, особенно в беспроводном виде, контроллер работает только как клиент, сам пинает ПК, когда ему нужно что-то сообщить или что-то узнать. Теперь вот единственное, что беспокоит, успеет ли ПК обработать несколько сообщений, если они придут одновременно от разных устройств? Сеть в таком случае как отработает?