tcp socket client

Тема в разделе "Проводная и беспроводная связь", создана пользователем 127486, 13 фев 2018.

  1. 127486

    127486 Нуб

    Доброго времени суток.

    Есть Arduino uno + Ethernet shield на ENC28J60.

    Потребность чтобы вся эта кухня подключалась к серверу как сокет клиент и отправляла данные с A0 (АЦП) на 192.168.0.Х:2000.

    Помогите разобраться.
     
  2. 127486

    127486 Нуб

    В общем решение нашел следующим образом.
    Но столкнулся с проблемой, работает только в сети где есть шлюз и днс.
    А необходимо запустить работу в сети без днс и шлюза.
    Помогите с кодом.


    Код (Text):

    #include <EtherCard.h>




    static byte mymac[] = { 0xAA,0x2B,0x3C,0x4D,0x5E,0x6F };
    static byte myip[] = { 192,168,0,157 };
    static byte gwip[] = { 192,168,0,7 };
    static byte hisip[] = { 192,168,0,7 };


    byte Ethernet::buffer[700];
    static uint32_t timer;

    const char website[] PROGMEM = "192.168.0.127"; //Адрес куда шлем
    const int dstPort PROGMEM = 12345;               //Порт куда шлем
    const int srcPort PROGMEM = 4321;               //Порт устройства




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

      if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
        Serial.println( "Failed to access Ethernet controller");
    ether.staticSetup(myip, gwip, hisip);
    //  if (!ether.dhcpSetup())
    //    Serial.println("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);
    }

    char textToSend[] = "127480";    //Текст сообщения

    void loop () {
        if (millis() > timer) {
          timer = millis() + 100;
         //static void sendUdp (char *data,uint8_t len,uint16_t sport, uint8_t *dip, uint16_t dport);    
         ether.sendUdp(textToSend, sizeof(textToSend), srcPort, ether.hisip, dstPort );  
      }
    }