библиотека для ENC28J60 - EtherCard

harrysmith
Offline
Зарегистрирован: 05.12.2015
Добрый день
Cтолкнулся с проблемой ArduinoNano +ENC28J60 библиотека для ENC28J60 - EtherCard
так вот так отрабатывает:
    const char *temp0;
    temp0="object=ESP_Easy_1ch_1&op=m&m=switch";
    
    //const char temp0[100] ;
    //sprintf ( temp0,100,"object=%s&op=%s&m=%s","ESP_Easy_1ch_1","m","switch");
    
    Serial.print("temp0=");
    Serial.println(temp0);

    timer = millis() + 5000;
    Serial.println();
    Serial.print("<<< REQ ");
    ether.browseUrl(PSTR("/objects/?"), temp0, website, my_callback);

а вот так пишет: <title>400 Bad Request</title>

    //const char *temp0;
    //temp0="object=ESP_Easy_1ch_1&op=m&m=switch";
    
    const char temp0[100] ;
    sprintf ( temp0,100,"object=%s&op=%s&m=%s","ESP_Easy_1ch_1","m","switch");
    
    Serial.print("temp0=");
    Serial.println(temp0);

    timer = millis() + 5000;
    Serial.println();
    Serial.print("<<< REQ ");
    ether.browseUrl(PSTR("/objects/?"), temp0, website, my_callback);

подскажите в чем может быть проблема если ether.browseUrl это 

static void browseUrl (const char *urlbuf, const char *urlbuf_varpart, const char *hoststr, void (*callback)(uint8_t,uint16_t,uint16_t)) {...}
sadman41
Offline
Зарегистрирован: 19.10.2016

И что второй вариант выводит тут: Serial.println(temp0); ?

harrysmith
Offline
Зарегистрирован: 05.12.2015

да извините там была ошибка sprintf заменить на snprintf

но даже если во втором варианте  sprintf заменить на snprintf то выводит тоже что и в первом варианте

1 вар: temp0=object=ESP_Easy_1ch_1&op=m&m=switch
ответ HTTP/1.1 200 OK
 
2 вар: temp0=object=ESP_Easy_1ch_1&op=m&m=switch
ответ <title>400 Bad Request</title>
 
sadman41
Offline
Зарегистрирован: 19.10.2016

Черт его знает, я лично именно с EtherCard ни разу не разбирался. В теории должно работать - строка же правильно выводится на печать и явно короче 100 символов (не режется).