Указатели и оператор разыменования - срабатывает watch dogs, ESP8266

Sirocco
Offline
Зарегистрирован: 28.09.2013

Нарыл куски кода в интернетах, скрестил адресные светодиоды (аналог WS2812) с MQTT. Планы были по MQTT переключать разные режимы, сделать некое сигнализируещее цветовое табло. Вот творение:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
//++++++++++++++++++++++++++++++
#include <Adafruit_NeoPixel.h>
#define LED_PIN    5
#define LED_COUNT 12
#define NUMPIXELS 12 //
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
//++++++++++++++++++++++++++++++
#define wifi_ssid "111"
#define wifi_password "#12345678#"

#define mqtt_server "192.168.1.15"
#define mqtt_port 1885
#define mqtt_user "Sup"
#define mqtt_password "2222"
#define mqtt_client_name "Soooo"
#define GPIO4     4

int msgString = 0;
int *msgString_ptr = &msgString;

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char *command_01, byte *payload, unsigned int length)
{
  char buff_p[length];
  for (int i = 0; i < length; i++)
    {
    //Serial.println((char)payload[i]);
    buff_p[i] = (char)payload[i];
    }
    buff_p[length] = '\0';
    String msg_p = String(buff_p);
    int msgString = msg_p.toInt(); // to Int
    *msgString_ptr = msgString;
    Serial.println(msgString);
}

void BlinkRED(){
  if (msgString == 1)
    {
      digitalWrite(GPIO4, HIGH);

    pixels.clear();
    pixels.setPixelColor(0, pixels.Color(0, 255, 0)); //RED
    pixels.setPixelColor(1, pixels.Color(0, 255, 0));
    pixels.setPixelColor(2, pixels.Color(0, 255, 0));
    pixels.setPixelColor(3, pixels.Color(0, 255, 0));
    pixels.setPixelColor(4, pixels.Color(0, 255, 0));
    pixels.setPixelColor(5, pixels.Color(0, 255, 0));
    pixels.setPixelColor(6, pixels.Color(0, 255, 0)); //RED
    pixels.setPixelColor(7, pixels.Color(0, 255, 0));
    pixels.setPixelColor(8, pixels.Color(0, 255, 0));
    pixels.setPixelColor(9, pixels.Color(0, 255, 0));
    pixels.setPixelColor(10, pixels.Color(0, 255, 0));
    pixels.setPixelColor(11, pixels.Color(0, 255, 0));
    pixels.show();
    delay(50);
    pixels.clear();
    pixels.show();
    delay(50);
    }
}


void BlinkGREEN(){
  if (msgString == 2)
    {
      digitalWrite(GPIO4, HIGH);
    pixels.setPixelColor(0, pixels.Color(255, 0, 0)); //RED
    pixels.setPixelColor(1, pixels.Color(255, 0, 0));
    pixels.setPixelColor(2, pixels.Color(255, 0, 0));
    pixels.setPixelColor(3, pixels.Color(255, 0, 0));
    pixels.setPixelColor(4, pixels.Color(255, 0, 0));
    pixels.setPixelColor(5, pixels.Color(255, 0, 0));
    pixels.setPixelColor(6, pixels.Color(255, 0, 0)); //RED
    pixels.setPixelColor(7, pixels.Color(255, 0, 0));
    pixels.setPixelColor(8, pixels.Color(255, 0, 0));
    pixels.setPixelColor(9, pixels.Color(255, 0, 0));
    pixels.setPixelColor(10, pixels.Color(255, 0, 0));
    pixels.setPixelColor(11, pixels.Color(255, 0, 0));
    pixels.show();
    }
}

void ledOff(){
  if (msgString == 0)
    {
      pixels.clear();
      pixels.show();
    digitalWrite(GPIO4, LOW);
    }
}

//=================================================================================
//=================================================================================
void setup(void)
{
  Serial.begin(115200);
  pinMode(GPIO4, OUTPUT);
  client.setCallback(callback);
/////////////////////////////////////////////////////
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
/////////////////////////////////////////////////////
//++++++++++++++++++++++++++++++
  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(10); // Set BRIGHTNESS to about 1/5 (max = 255)
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
//++++++++++++++++++++++++++++++
}

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(wifi_ssid);
  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
//    blink_red();
    delay(480);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}
//////////////////////////////////////////////////////////////////////////////////////
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.println("Attempting MQTT connection.....");
    if (client.connect(mqtt_client_name, mqtt_user, mqtt_password)) {
      Serial.println("MQTT connected");
      client.subscribe("SetAlarm/command_01");
    } else {
      Serial.print("Connect failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
     // blink_red();
      delay(200);
      //blink_red();
      delay(4760);
    }
  }
}

void loop(void)
{
  if (!client.connected()) {
    reconnect();
    }
    client.loop();
    BlinkRED();
    ledOff();
    BlinkGREEN();
}

И даже всё работает, при отправке команды в топик SetAlarm/command_01 единицы, диоды мерцают красным, когда двойку - горят зелёным, ноль выключает...

Но есть непонятная проблема. Хаотично и непонятно отчего и как ESP12S "вылетает" в перезагрузку. Иногда просто зависает и не восстанавливает рабочий режим. Изредка отваливается MQTT, она постоянно пытается подключиться, но не подключается, при этом лог сервера вообще не видит никакой активности и никаких запросов на подключение.
Лог в консоли огромен и поток шеснадцатеричных данных ниочем не скажет, поэтому приведу сразу расшифровку этого мракобесия:
Decoding stack results
0x4020c5b1: memp_free at core/memp.c line 447
0x401001dc: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\core_esp8266_main.cpp line 159
0x401001dc: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\core_esp8266_main.cpp line 159
0x4020be51: glue2esp_linkoutput at glue-esp/lwip-esp.c line 301
0x4020c0ed: new_linkoutput at glue-lwip/lwip-git.c line 265
0x4020c4f8: ethernet_output at netif/ethernet.c line 312
0x4020be51: glue2esp_linkoutput at glue-esp/lwip-esp.c line 301
0x40213a58: etharp_output_to_arp_index at core/ipv4/etharp.c line 770
0x4020c0de: new_linkoutput at glue-lwip/lwip-git.c line 260
0x40213cac: etharp_output_LWIP2 at core/ipv4/etharp.c line 885
0x402154a0: ip4_output_if_opt_src at core/ipv4/ip4.c line 1764
0x4020be51: glue2esp_linkoutput at glue-esp/lwip-esp.c line 301
0x40100728: umm_free_core(void*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\umm_malloc\umm_malloc.cpp line 316
0x401009b3: free(void*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\umm_malloc\umm_malloc.cpp line 362
0x40215f98: mem_malloc at core/mem.c line 210
0x40215fb8: mem_free at core/mem.c line 237
0x4020fdce: pbuf_free_LWIP2 at core/pbuf.c line 786
0x40210b5f: tcp_output_control_segment at core/tcp_out.c line 1956
0x40100728: umm_free_core(void*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\umm_malloc\umm_malloc.cpp line 316
0x401009b3: free(void*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\umm_malloc\umm_malloc.cpp line 362
0x40211308: tcp_rst at core/tcp_out.c line 2011
0x40215fb8: mem_free at core/mem.c line 237
0x4020c5b1: memp_free at core/memp.c line 447
0x4020c6b0: tcp_free at core/tcp.c line 217
0x40100728: umm_free_core(void*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\umm_malloc\umm_malloc.cpp line 316
0x401009b3: free(void*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\umm_malloc\umm_malloc.cpp line 362
0x4020bd09: operator delete(void*) at /workdir/repo/gcc/libstdc++-v3/libsupc++/del_op.cc line 48
0x40204e31: uart_write(uart_t*, char const*, size_t) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\uart.cpp line 509
0x40202952: WiFiClient::connect(IPAddress, unsigned short) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\libraries\ESP8266WiFi\src\WiFiClient.cpp line 173
0x402035c0: HardwareSerial::write(unsigned char const*, unsigned int) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266/HardwareSerial.h line 159
0x402035cc: HardwareSerial::write(unsigned char const*, unsigned int) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266/HardwareSerial.h line 160
0x402035c0: HardwareSerial::write(unsigned char const*, unsigned int) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266/HardwareSerial.h line 159
0x40203899: Print::write(char const*) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266/Print.h line 60
0x402039a5: Print::printNumber(unsigned long, unsigned char) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\Print.cpp line 260
0x40205a24: PubSubClient::connected() at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\sketchbook\libraries\PubSubClient\src\PubSubClient.cpp line 606
0x40204e31: uart_write(uart_t*, char const*, size_t) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\uart.cpp line 509
0x40204e31: uart_write(uart_t*, char const*, size_t) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\uart.cpp line 509
0x40203fc0: esp_yield() at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\core_esp8266_main.cpp line 100
0x4020457f: __delay(unsigned long) at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\core_esp8266_wiring.cpp line 54
0x40201406: reconnect() at C:\Users\Ыц\Desktop\arduino-1.8.12_MQTT ard\!__fw\New_progekt_mqtt_s_nulya_04/New_progekt_mqtt_s_nulya_04.ino line 152
0x4020142a: loop() at C:\Users\Ыц\Desktop\arduino-1.8.12_MQTT ard\!__fw\New_progekt_mqtt_s_nulya_04/New_progekt_mqtt_s_nulya_04.ino line 162
0x402040f0: loop_wrapper() at C:\Users\��\Desktop\arduino-1.8.12_MQTT ard\portable\packages\esp8266\hardware\esp8266\2.6.1\cores\esp8266\core_esp8266_main.cpp line 179

И для удобства в графическом виде:

Я пробовал разные версии ядра ESP8266, разные версии IDE. Я пробовал залить это в другую железуку, в ESP07S, ошибка аналогична.
А теперь вероятная причина - скорее всего это из-за использования конструкции
int msgString = 0;
int *msgString_ptr = &msgString;
Когда я убрал этот метод, а код из void BlinkRED(), void BlinkGREEN(), void ledOff() поместил в цикл void callback(), то в течение двух суток всё работало без проблем вообще. Никаких вылетов, реконнектов и прочего. Конечно, есть вероятность что просто так совпало, но мне не верится, слишком долго продержалось, обычно проблемы возникают или сразу, или через 10\30\60 минут и повторяются с хаотичной периодичностью.
Я лазил по тем файлам, что в репорте обозначены, но в них разобраться мне не под силу.
Библиотеки стандартные, установлены из Arduino IDE
Правильно ли я работаю с указателями? Какие способы есть передать значение переменной из одного цикла в другой, сделать локальную переменную глобальной? Или как это вообще делается? Всё взять и засунуть в void callback() как-то не удобно, там будет оочень много кода, который к тому же должен вызываться и из других мест и циклов.
Кто видит где ошибка в коде?
Sirocco
Offline
Зарегистрирован: 28.09.2013
rkit
Offline
Зарегистрирован: 23.11.2016

С указателями ты работаешь не правильно, но проблема не в этом.  Указатель в этом коде не делает ничего и его можно спокойно удалять.

Sirocco
Offline
Зарегистрирован: 28.09.2013

rkit пишет:

С указателями ты работаешь не правильно, но проблема не в этом.  Указатель в этом коде не делает ничего и его можно спокойно удалять.

Ну как так не делает? Ещё как делает. Коряво, может быть, но всё же работает. А именно, с помощью него, я из функции меняю значение переменной, а другая функция это значение может получить. Или есть способ проще, которым я могу из одной функции (а внутри функции у нас переменные ЛОКАЛЬНЫЕ и мы можем их хранит и менять только в пределах этой функции) передать значение в другую? Растолкуйте. 

Ну другими словами как я могу из void callback  запустить на выполнение код void BlinkRED() ?

rkit
Offline
Зарегистрирован: 23.11.2016

Sirocco пишет:

А именно, с помощью него, я из функции меняю значение переменной, а другая функция это значение может получить.

Нет. В коде буквально ничего не изменится, если удалить все строчки, упоминающие этот указатель.

Sirocco
Offline
Зарегистрирован: 28.09.2013

rkit пишет:

Нет. В коде буквально ничего не изменится, если удалить все строчки, упоминающие этот указатель.

Так. Я вот прям сейчас взял код из первого поста, прям именно то, что я выложил. Вставил в IDE, залил. Код прекрасно работает (ну заисключением указанных проблем). Ну конечно учётные данные я ввел реальные на WiFi и MQTT.

И далее я удалил из кода лишь строку № 038

   *msgString_ptr = msgString;

И код перестал работать.

Итого, уважаемый rkit, либо вы меня тролите, а я потерял около 15 минут, либо не компетентны, либо не верно оценили код, хотя учитывая с какой настойчивостью вы ответили этот вариант я опускаю.

rkit
Offline
Зарегистрирован: 23.11.2016

37 строку замени на

msgString = msg_p.toInt()

Sirocco
Offline
Зарегистрирован: 28.09.2013

rkit пишет:

37 строку замени на

msgString = msg_p.toInt()

Сделал. Залил. Работает. Это просто вы доглядели, или оно могло вызывать сбой? Пока сбоев нет. Оставлю до утра, потом гляну логи. А вдруг помогло...

 

P.S. Нет. Снова вылет, только короткий репорт:

00:48:57.156 -> 
00:48:57.156 ->  ets Jan  8 2013,rst cause:4, boot mode:(3,0)
00:48:57.156 -> 
00:48:57.156 -> wdt reset
00:48:57.156 -> load 0x4010f000, len 1384, room 16 
00:48:57.156 -> tail 8
00:48:57.156 -> chksum 0x2d
00:48:57.156 -> csum 0x2d
00:48:57.156 -> vbc204a9b
00:48:57.156 -> ~ld
00:48:57.156 -> ⸮#$`r⸮olph

И снова...



00:51:53.913 -> 
00:51:53.913 -> Soft WDT reset
00:51:53.913 -> 
00:51:53.913 -> >>>stack>>>
00:51:53.913 -> 
00:51:53.913 -> ctx: sys
00:51:53.913 -> sp: 3fffed40 end: 3fffffb0 offset: 01b0
00:51:54.288 -> 3fffeef0:  00000000 00000000 00000001 401001dc  
00:51:54.288 -> 3fffef00:  00000000 3ffed188 00000000 00000000  
00:51:54.288 -> 3fffef10:  4022b850 3ffed188 3ffee140 40204500  
00:51:54.288 -> 3fffef20:  4022e34d 3ffed188 3ffee140 0a5e6c6d  
00:51:54.288 -> 3fffef30:  4022e392 3fffdab0 00000000 3fffdcb0  
00:51:54.288 -> 3fffef40:  3ffee160 3fffdad0 3ffee7b8 40203f87  
00:51:54.288 -> 3fffef50:  40000f49 40000f49 3fffdab0 40000f49  
00:51:54.288 -> 3fffef60:  40000e19 40001878 00000004 00000000  
00:51:54.288 -> 3fffef70:  3fffff10 40104a79 40001878 00000004  
00:51:54.288 -> 3fffef80:  40104a7f 27b08bd7 8e5c356c 29dd4f33  
00:51:54.288 -> 3fffef90:  4010000d c31ff055 5bbe2669 56ffbe8f  
00:51:54.288 -> 3fffefa0:  40225f44 3fffef3c 40225efd 3ffffe88  
00:51:54.288 -> 3fffefb0:  3fffffc0 00000000 00000000 feefeffe  
00:51:54.288 -> 3fffefc0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3fffefd0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3fffefe0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3fffeff0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff000:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff010:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff020:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff030:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff040:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff050:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff060:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff070:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff080:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff090:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff0a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff0b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff0c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff0d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff0e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff0f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff100:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff110:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff120:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff130:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff140:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff150:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff160:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff170:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff180:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff190:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff1a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff1b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff1c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff1d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff1e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff1f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff200:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff210:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff220:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff230:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff240:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff250:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff260:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff270:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff280:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff290:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff2a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff2b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff2c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff2d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff2e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff2f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff300:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff310:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff320:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff330:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff340:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff350:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff360:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff370:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff380:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff390:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff3a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff3b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff3c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff3d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff3e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.288 -> 3ffff3f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff400:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff410:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff420:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff430:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff440:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff450:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff460:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff470:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff480:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff490:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff4a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff4b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff4c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff4d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff4e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff4f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff500:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff510:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff520:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff530:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff540:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff550:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff560:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff570:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff580:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff590:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff5a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff5b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff5c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff5d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff5e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff5f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff600:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff610:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff620:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff630:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff640:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff650:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff660:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff670:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff680:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff690:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff6a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff6b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff6c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff6d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff6e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff6f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff700:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff710:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff720:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff730:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff740:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff750:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff760:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff770:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff780:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff790:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff7a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff7b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff7c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff7d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff7e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff7f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff800:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff810:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff820:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff830:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff840:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff850:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff860:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff870:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff880:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff890:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff8a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff8b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff8c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff8d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff8e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff8f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.616 -> 3ffff900:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff910:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff920:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff930:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff940:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff950:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff960:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff970:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff980:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff990:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff9a0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff9b0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff9c0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff9d0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff9e0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffff9f0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa00:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa10:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa20:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa30:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa40:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa50:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa60:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa70:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa80:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffa90:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffaa0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffab0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffac0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffad0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffae0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffaf0:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb00:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb10:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb20:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb30:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb40:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb50:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb60:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb70:  feefeffe feefeffe feefeffe feefeffe  
00:51:54.991 -> 3ffffb80:  00000005 00000000 00000020 401001dc  
00:51:54.991 -> 3ffffb90:  feefeffe feefeffe 00000005 401016c8  
00:51:54.991 -> 3ffffba0:  3ffe8e35 40104973 3ffec8c0 feefeffe  
00:51:54.991 -> 3ffffbb0:  4010225f 3ffec8c0 feefeffe feefeffe  
00:51:54.991 -> 3ffffbc0:  00007fff 0001f42e 3ffed308 4010243c  
00:51:54.991 -> 3ffffbd0:  3ffe96e0 00000000 00000000 feefeffe  
00:51:54.991 -> 3ffffbe0:  00007fff 0001f42e 402281bf 00000001  
00:51:54.991 -> 3ffffbf0:  ffffffff 00000000 3ffe8f81 00000008  
00:51:54.991 -> 3ffffc00:  4022820e 3ffec5a0 3ffeeffc 00000001  
00:51:54.991 -> 3ffffc10:  00000002 00000000 00000020 401001dc  
00:51:54.991 -> 3ffffc20:  000026d8 00000020 40103779 3ffecfb0  
00:51:54.991 -> 3ffffc30:  03030201 4021a6cf 3ffeda58 3ffeeffc  
00:51:54.991 -> 3ffffc40:  00000000 00000002 00000000 40100a00  
00:51:54.991 -> 3ffffc50:  3fff1562 40104eff 3fff1660 3ffee880  
00:51:54.991 -> 3ffffc60:  3ffef78c 00000000 00000000 40100360  
00:51:54.991 -> 3ffffc70:  00000005 4020be79 3fff1660 3ffee880  
00:51:54.991 -> 3ffffc80:  3fff152c 3fff1562 00000036 00000020  
00:51:54.991 -> 3ffffc90:  03030201 4021a6cf 3ffeda58 3ffeeffc  
00:51:54.991 -> 3ffffca0:  00000000 00000002 00000000 4020c115  
00:51:54.991 -> 3ffffcb0:  3fff1ae2 40104eff 3fff1660 3ffee880  
00:51:54.991 -> 3ffffcc0:  3ffef78c 00000000 3ffe8f81 00000008  
00:51:54.991 -> 3ffffcd0:  4022820e 4020be79 3fff1660 3ffee880  
00:51:54.991 -> 3ffffce0:  3ffeeca8 00000003 3ffeec70 40213a80  
00:51:54.991 -> 3ffffcf0:  00000005 00000005 00000002 00000000  
00:51:54.991 -> 3ffffd00:  3ffeeca8 fffffff3 3fff1aac 4020c115  
00:51:54.991 -> 3ffffd10:  00000000 3ffeec70 3fff1aac 4020c520  
00:51:54.991 -> 3ffffd20:  3ffeeb14 3ffefc88 3ffeec70 40213cd4  
00:51:54.991 -> 3ffffd30:  3fff0000 40104eff 00000005 3ffeeb18  
00:51:54.991 -> 3ffffd40:  3ffeeca8 00000003 3ffeec70 40213a80  
00:51:54.991 -> 3ffffd50:  4010225f 3ffec898 3fff0154 3ffee880  
00:51:54.991 -> 3ffffd60:  00000002 3fff1aac 000000ff 00000000  
00:51:54.991 -> 3ffffd70:  00002668 000004cd 000004cd 3fff1aac  
00:51:54.991 -> 3ffffd80:  3fff1aac 3fff19b8 3ffeec70 40213cd4  
00:51:54.991 -> 3ffffd90:  3ffe0000 00000000 00000020 401009cb  
00:51:54.991 -> 3ffffda0:  3fff1af0 3fff19b8 3ffeec70 402154c8  
00:51:54.991 -> 3ffffdb0:  00000ec8 000001d9 00000000 40215fe0  
00:51:54.991 -> 3ffffdc0:  00000014 3fff19b4 000000ff 00000000  
00:51:54.991 -> 3ffffdd0:  00000006 3ffeebf0 fffffff3 40210b87  
00:51:54.991 -> 3ffffde0:  00000dc0 000001b8 000001b8 3fff19b4  
00:51:54.991 -> 3ffffdf0:  3fff087c 3ffeec70 00000000 40215510  
00:51:54.991 -> 3ffffe00:  3ffeec70 00000000 00000000 00000000  
00:51:54.991 -> 3ffffe10:  00000064 0000005a 0002a14a 40215536  
00:51:55.132 -> 3ffffe20:  3ffeec70 00000000 00000000 402160cb  
00:51:55.132 -> 3ffffe30:  03095d3a 0000f48f 00000008 40211612  
00:51:55.132 -> 3ffffe40:  3ffeec70 00000080 3ffee6bc 4020dc0d  
00:51:55.132 -> 3ffffe50:  40105015 033d651d cdd2f1a9 00000000  
00:51:55.132 -> 3ffffe60:  007a1200 41bbb33a 033d6500 00000000  
00:51:55.132 -> 3ffffe70:  40105299 033d665b 3ffee814 00000000  
00:51:55.132 -> 3ffffe80:  3ffee140 3ffee814 00000001 3ffee814  
00:51:55.132 -> 3ffffe90:  00000709 3ffee720 40203fd8 3fffefa0  
00:51:55.132 -> 3ffffea0:  3ffee814 00000709 3ffee720 4020458a  
00:51:55.132 -> 3ffffeb0:  00000000 3fff1a74 3ffee6bc 40202934  
00:51:55.132 -> 3ffffec0:  0000075d 3ffee720 3ffee7b8 3ffee740  
00:51:55.132 -> 3ffffed0:  402035d0 3ffee740 3fffff1f 3ffe86f7  
00:51:55.132 -> 3ffffee0:  40202850 0000075d 3ffee6bc 40201f05  
00:51:55.132 -> 3ffffef0:  40205de8 9b01a8c0 40205de8 9b01a8c0  
00:51:55.132 -> 3fffff00:  3ffe86c3 00000000 3ffee5f8 40205a4c  
00:51:55.132 -> 3fffff10:  3ffee5f8 00000000 00000000 40202e04  
00:51:55.132 -> 3fffff20:  3ffe8756 00000000 2e2e2e2e 40204e39  
00:51:55.132 -> 3fffff30:  3ffe86fb 3ffe86f1 00000000 00000001  
00:51:55.132 -> 3fffff40:  402035d0 3ffee740 3ffe8754 402035dc  
00:51:55.132 -> 3fffff50:  402035d0 3ffee740 3ffe8754 3ffee7b8  
00:51:55.132 -> 3fffff60:  3fffdad0 3ffee5f8 3ffee740 40202fe8  
00:51:55.132 -> 3fffff70:  00000000 00000000 00000001 4020391c  
00:51:55.132 -> 3fffff80:  00000000 3ffee5f8 3ffee740 402013c5  
00:51:55.132 -> 3fffff90:  3fffdad0 00000000 3ffee5f8 4020142e  
00:51:55.132 -> 3fffffa0:  feefeffe feefeffe 3ffee778 402040f0  
00:51:55.132 -> <<<stack<<<
00:51:55.132 -> 
00:51:55.132 ->  ets Jan  8 2013,rst cause:4, boot mode:(3,0)
00:51:55.132 -> 
00:51:55.132 -> wdt reset
00:51:55.132 -> load 0x4010f000, len 1384, room 16 
00:51:55.132 -> tail 8
00:51:55.132 -> chksum 0x2d
00:51:55.132 -> csum 0x2d
00:51:55.132 -> vbc204a9b
00:51:55.132 -> ~ld
00:51:55.178 -> ⸮"l r⸮N$ph

Причём делать ничего не нужно. Просто включил, и через какое-то время начинает падать.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sirocco,

Вы "распахиваете" память. При распашке памяти внешние симптомы проблемы могут быть какие угодно и может казаться, что виноваты вещи, которые не при делах вовсе.

Давайте устранять ошибки по мере их нахождения (найдя одну - устранять, перепроверять, а уж потом искать другие).

Итак, первая ошибка работы с памятью совершенно очевидна. В строке №35 Вы пишете за границу массива. Массив, объявленный как в строке №29 имеет элементы с 0-го по length-1, а Вы куда пишете?

Исправляйте. Если проблема не уйдёт, выкладывайте текущий код и пишите как на этот раз проявляется.

Знаете как просто и безопасно исправить?

P.S. И, да, rkit прав в том, что если Вы удалите из своего кода строки №№ 22 и 38 а строку №37 перепишете как msgString = msg_p.toInt(); то в программе абсолютно ничего не изменится - вообще ничего. Сделайте это сразу, зачем плодить лишние действия, которые Вы, к тому же, неуверенно понимаете? Ещё раз повторяю - это не  исправит ошибок и не внесёт новых - просто ничего не изменится.

Sirocco
Offline
Зарегистрирован: 28.09.2013

ЕвгенийП пишет:

P.S. И, да, rkit прав в том, что если Вы удалите из своего кода строки №№ 22 и 38 а строку №37 перепишете как msgString = msg_p.toInt(); то в программе абсолютно ничего не изменится - вообще ничего. Сделайте это сразу, зачем плодить лишние действия, которые Вы, к тому же, неуверенно понимаете? Ещё раз повторяю - это не  исправит ошибок и не внесёт новых - просто ничего не изменится.

Да, чёрт побери. Так и есть.

ЕвгенийП пишет:

Знаете как просто и безопасно исправить?

Нет. Но буду гуглить...

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

Нет. Но буду гуглить...

не знаете как поправить размер массива?

Sirocco
Offline
Зарегистрирован: 28.09.2013

b707 пишет:

не знаете как поправить размер массива?

Дык откуда. Я ж так и написал, стырил два кода, скрестил... вот и получилось.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sirocco пишет:

Нет. Но буду гуглить...

Проще в строке №30 вместо length написать length+1.

(это мне не гугл, а импортозамещающая Алиса подсказала :-)

Sirocco
Offline
Зарегистрирован: 28.09.2013

Делал так

  char buff_p[length+1];
  for (int i = 0; i < length; i++)

И так

  char buff_p[length];
  for (int i = 0; i < length+1; i++)

И так

  char buff_p[length];
  for (int i = 0; i < (length+1); i++)

Как правильно? Но в любом случае от вылетов не помогло.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sirocco пишет:

Делал так

  char buff_p[length+1];
  for (int i = 0; i < length; i++)

И так

  char buff_p[length];
  for (int i = 0; i < length+1; i++)

И так

  char buff_p[length];
  for (int i = 0; i < (length+1); i++)

Фига-се?

Т.е. Вы тычетесь методом тыка вообще не понимая, что делаете?

Делайте так, как Вам сказано:

ЕвгенийП пишет:

в строке №30 вместо length написать length+1.

Если проблема не уйдёт, выкладывайте текущий код и пишите как на этот раз проявляется.

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco, а попытаться хоть чуть-чуть понять, как это работает - понималки не хватает? ии лень?

Sirocco
Offline
Зарегистрирован: 28.09.2013

ЕвгенийП пишет:

Фига-се?

Т.е. Вы тычетесь методом тыка вообще не понимая, что делаете?

Нет, блин. Мне просто весело, сижу развлекаюсь методом тыка.

Вы вообще серьёзно это? Вы думаете все люди во всех профессиях спецы? Или думаете, что я вот прям сейчас  всё  брошу и засяду за изучение программирования, прям с самых основ, перечитаю кучу статей, изучу книги? Правда? Я спрашиваю, чтоб мне указали на ошибку, я спрашиваю как её решить. Если б я понимал что делаю, поверьте, ваши советы мне были бы не нужны. Вот только не надо ради когото (это я о себе) идти и гуглить, изучать проблему, и т.д. Я спрашиваю только тех людей, которые знают что делать, или предполагают, хотя бы. Я полагаю, (сужу по себе) что им не сложно будет ответить, да даже кусок кода написать. Какая в этом проблема, если всё знаешь? А если не знаешь, или просто жуть как трудно, то вас никто не принуждает. Не нервничайте, не тратьте время, ступайте себе дальше, займитесь чем-то полезным.

Sirocco
Offline
Зарегистрирован: 28.09.2013

b707 пишет:

Sirocco, а попытаться хоть чуть-чуть понять, как это работает - понималки не хватает? ии лень?

Предлагаю либо по делу, либо никак. К моему вопросу это не относится. Для "бла бла бла" есть лавочка возле подъеза или разделы типа "курилка" и "флейм".

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco, а нафига вы тогда за это взялись? Что-то программировать, сидеть, тратить кучу времени? Если вам не интересен процесс - купите готовое.

Думаю. если вы будете настаивать на том. что вам самому ни в чем разбираться не нужно и кто-то, "кому не в лом", должен вам написать код - вы выбрали неправильный форум. Тут вам, скорее всего, не обломится...

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

Предлагаю либо по делу, либо никак.

нет уж. извините. буду писать то. что считаю нужным.

В качестве ответа - предлагаю вам не указывать мне, что мне делать.

Sirocco
Offline
Зарегистрирован: 28.09.2013

Да делайте что хотите, кого бы оно волновало. Я просто предложил. Вы в праве отказаться. 

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

Да делайте что хотите, кого бы оно волновало. Я просто предложил. Вы в праве отказаться. 

спасибо.

Тогда предложу еще прочесть учебник по языку Си - хотя бы первые 5-6 глав. Поможет вам освоить работу с массивами. строками и указателями. ссылка есть в "Песочнице"

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sirocco, остыньте чуть-чуть.

Я Вас попросил сделать две простейшие вещи - заменить length на lenth+1 и, если не поможет, то выложить получившийся скетч. Вы это сделали? Нет! Так чего шумите? Делайте.

Sirocco пишет:

Я спрашиваю, чтоб мне указали на ошибку

Я Вам на неё указал. И сказал как именно её исправить. И сказал, что делать дальше, если проблемы останутся. Вы этого не сделали! Вам это было "жуть как трудно"? Вместо этого выкатываете какие-то обидки.

Sirocco пишет:

думаете, что я вот прям сейчас  всё  брошу и засяду за изучение программирования, прям с самых основ,

Если честно, я именно так и думал. Я думал, что Ардуино - это Ваше хобби и Вы хотите научиться. А Вы, оказывается, просто хотите нахаляву получить готовый результат? Тогда, извините за беспокойство - это без меня как-нибудь - готовые результаты я не раздаю. Попробуйте к Деду Морозу обратиться.

Всего хорошего!

Sirocco
Offline
Зарегистрирован: 28.09.2013

b707 пишет:

Тогда предложу еще прочесть учебник по языку Си - хотя бы первые 5-6 глав. Поможет вам освоить работу с массивами. строками и указателями. ссылка есть в "Песочнице"

Спасибо, может быть, когда-нибудь, но не в этом десятилетии. Сейчас и здесь я жду готового решения от тех, кто его знает. А не советов и материалов для обучения. И это вполне нормально. Но программисты, почему-то другие люди, гордыливые, считают себя выше всех. Когда жена на форуме спрашивает какой-то рецепт, никто никогда не предложит ей пойти в кулинарное училище, закончить его и не задавать таких "тупых" вопросов. Когда я спрашиваю какой кран лучше выбрать и как правильно поставить, на форуме сантехников, ни один мне не напишет - иди учись на сантехника. И то же самое, выбирая на форуме стиральный порошок или клей для обоев никто и никогда мне не скажет идти изучить химию , изучить состав и т.д. Люди просто дадут совет и поделятся знаниями. Но программисты народ удивительный. По делу советов - 0.0, только рекомендации и отсылки. У вас пенис от этого чтоль отрастает? Или самооценка? Ну тогда продолжайте. Удачи.

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

 выбирая на форуме стиральный порошок или клей для обоев никто и никогда мне не скажет идти изучить химию , изучить состав и т.д.

если вы спросите, какую ардуину вам выбрать для конкретного проекта - вы тоже пполучите ответ. А сейчас, продолжая вашу аналогию - вы спрашиваете не "какой клей выбрать?" - а "как мне сварить свой клей?" - при этом отказываетесь изучать химию...

ну флаг в руки

Sirocco
Offline
Зарегистрирован: 28.09.2013

ЕвгенийП пишет:

Я Вас попросил сделать две простейшие вещи - заменить length на lenth+1 и, если не поможет, то выложить получившийся скетч. Вы это сделали? Нет! Так чего шумите? Делайте.

Единственное, чего не сделал, так это не выложил скетч весь целиком? Он тогда нужен был? В остальном я вам ответил, что не помогло. Не помогло именно так, как просили сделать. И я ещё предпринял попытки "на угад" которые тоже не принесли успеха. Что-то не ясно? Вроде всё написал  http://arduino.ru/forum/programmirovanie/ukazateli-i-operator-razymenovaniya-srabatyvaet-watch-dogs-esp8266#comment-530338

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

Единственное, чего не сделал, так это не выложил скетч весь целиком? Он тогда нужен был? В остальном я вам ответил, что не помогло.

в той конкретной ошибке, про которую речь - это НЕ МОГЛО НЕ ПОМОЧЬ.  Но есть вариант что исправляя одну ошибку, вы налепили новых. Поэтому нужен весь код.

Не хотите - не выкладывайте. вытягивать его из вас никто не будет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Sirocco пишет:

Единственное, чего не сделал, так это не выложил скетч весь целиком? 

Кто Вам помешал? В этом я виноват? Или коронавирус?

Sirocco пишет:

Он тогда нужен был? 

ДА! Если бы не был нужен, я бы не просил его выкладывать!

Впрочем, уже проехали, я с Вами попрощался, если Вы не заметили.

Sirocco
Offline
Зарегистрирован: 28.09.2013

И так, после флуда вернусь к теме, продолжу диалог (или монолог, как получится). Исправил код по рекомендациям выше. Удалил указатели. Получается проблема не в них вовсе. Заметил что чаще ошибка вываливается в момент отправки данных по MQTT, когда с сервера отправляю в ESP. Но далеко не всегда, может просто в простое находится и "упасть".

Код сейчас:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
//++++++++++++++++++++++++++++++
#include <Adafruit_NeoPixel.h>
#define LED_PIN    5
#define LED_COUNT 12
#define NUMPIXELS 12 //
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
//++++++++++++++++++++++++++++++
#define wifi_ssid "***"
#define wifi_password "***"

#define mqtt_server "192.168.1.155"
#define mqtt_port 1885
#define mqtt_user "***"
#define mqtt_password "***"
#define mqtt_client_name "Sonka"  //Имя клиента, отображаемое в mqtt сервере.
#define GPIO4     4
int msgString = 0;

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char *command_01, byte *payload, unsigned int length)
{
  char buff_p[length];
  for (int i = 0; i < length+1; i++)
    {
    buff_p[i] = (char)payload[i];
    }
    buff_p[length] = '\0';
    String msg_p = String(buff_p);
    msgString = msg_p.toInt(); // to Int
    Serial.println(msgString);
}

void BlinkRED(){
  if (msgString == 1)
    {
      digitalWrite(GPIO4, HIGH);

    pixels.clear();
    pixels.setPixelColor(0, pixels.Color(0, 255, 0)); //RED
    pixels.setPixelColor(1, pixels.Color(0, 255, 0));
    pixels.setPixelColor(2, pixels.Color(0, 255, 0));
    pixels.setPixelColor(3, pixels.Color(0, 255, 0));
    pixels.setPixelColor(4, pixels.Color(0, 255, 0));
    pixels.setPixelColor(5, pixels.Color(0, 255, 0));
    pixels.setPixelColor(6, pixels.Color(0, 255, 0)); //RED
    pixels.setPixelColor(7, pixels.Color(0, 255, 0));
    pixels.setPixelColor(8, pixels.Color(0, 255, 0));
    pixels.setPixelColor(9, pixels.Color(0, 255, 0));
    pixels.setPixelColor(10, pixels.Color(0, 255, 0));
    pixels.setPixelColor(11, pixels.Color(0, 255, 0));
    pixels.show();
    delay(50);
    pixels.clear();
    pixels.show();
    delay(50);
    }
}


void BlinkGREEN(){
  if (msgString == 2)
    {
      digitalWrite(GPIO4, HIGH);
    pixels.setPixelColor(0, pixels.Color(255, 0, 0)); //RED
    pixels.setPixelColor(1, pixels.Color(255, 0, 0));
    pixels.setPixelColor(2, pixels.Color(255, 0, 0));
    pixels.setPixelColor(3, pixels.Color(255, 0, 0));
    pixels.setPixelColor(4, pixels.Color(255, 0, 0));
    pixels.setPixelColor(5, pixels.Color(255, 0, 0));
    pixels.setPixelColor(6, pixels.Color(255, 0, 0)); //RED
    pixels.setPixelColor(7, pixels.Color(255, 0, 0));
    pixels.setPixelColor(8, pixels.Color(255, 0, 0));
    pixels.setPixelColor(9, pixels.Color(255, 0, 0));
    pixels.setPixelColor(10, pixels.Color(255, 0, 0));
    pixels.setPixelColor(11, pixels.Color(255, 0, 0));
    pixels.show();
    }
}

void ledOff(){
  if (msgString == 0)
    {
      pixels.clear();
      pixels.show();
    digitalWrite(GPIO4, LOW);
    }
}

//=================================================================================
//=================================================================================
void setup(void)
{
  Serial.begin(115200);
  pinMode(GPIO4, OUTPUT);
  client.setCallback(callback);
/////////////////////////////////////////////////////
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
/////////////////////////////////////////////////////
//++++++++++++++++++++++++++++++
  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(10); // Set BRIGHTNESS to about 1/5 (max = 255)
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
//++++++++++++++++++++++++++++++
}

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(wifi_ssid);
  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
//    blink_red();
    delay(480);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}
//////////////////////////////////////////////////////////////////////////////////////
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.println("Attempting MQTT connection.....");
    if (client.connect(mqtt_client_name, mqtt_user, mqtt_password)) {
      Serial.println("MQTT connected");
      client.subscribe("SetAlarm/command_01");
    } else {
      Serial.print("Connect failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
     // blink_red();
      delay(200);
      //blink_red();
      delay(4760);
    }
  }
}

void loop(void)
{
  if (!client.connected()) {
    reconnect();
    }
    client.loop();
    BlinkRED();
    ledOff();
    BlinkGREEN();
}

Но сейчас(без указателей) гораздо реже отваливается. Можно больше часа ждать.

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco .... ну я же говорил.

и где вы поправили?

 

Смысл правки был в том. чтоб не писать за границу массива... для этого надо увеличить массив. А вы... увеличили данные. Теперь ваш код распахивает память дважды

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Да, так он слона не продаст. Придти, обозвать всех п@дорасами, и буквально требовать ответа. Что у таких людей в голове? Так-то понятно - каша из г@вна и обиженности на несправедливую жизнь. И все им должны, как правило.

Вот и программисты - тоже должны, потому что горделивые пидорасы.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

и где вы поправили?

 

Это на самом деле мой косяк. Там в первом посте массив создаётся в строке 29, а я не туда глянул и написал 30. Описка, конечно, но ТС же не понимает ни буквы в написанном.

Но, всё равно поезд ушёл, я в этой теме больше не работаю.

Sirocco
Offline
Зарегистрирован: 28.09.2013

b707 пишет:

Sirocco .... ну я же говорил.

Говорили именно Вы? А где то ваше сообщение, в котором говорили?

Я вижу только совет этого товарища

поправить строку 30. Что у нас там было в строке 30? Лень листать? Я покажу:

так как я удалил лишний код, строки съехали. Но вот как теперь выглядит та строка

И что я сделал не так? Послушал не компетентного человека? Так я не программист, я не в состоянии оценить его компетентность.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

А, ну так понятно - это Алиса строчку перепутала!

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

И что я сделал не так? Послушал не компетентного человека? Так я не программист, я не в состоянии оценить его компетентность.

надо свою голову на плечах иметь.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Sirocco пишет:

Я вижу только совет этого товарища ... оправить строку 30.

И что я сделал не так? 

Не выложил код как тебя просили. Если бы ты это сделал - человек сразу бы заметил опечатку и поправил бы. Ты же этого нихрена не сделал, а полез в бутылку в #16. А виноваты, разумеется, программисты. 

b707
Offline
Зарегистрирован: 26.05.2017

ЕвгенийП пишет:

Это на самом деле мой косяк.

Фигня вопрос :)  Зато очень грамотная подстава получилась :) особенно с учетом того, что

Цитата:
ТС же не понимает ни буквы в написанном.

но при этом уверен, что он ни в чем и не должен разбираться, может всех поливать грязью, а ему на его оскорбления все бросятся помогать

 

 

Sirocco
Offline
Зарегистрирован: 28.09.2013

Ворота пишет:

Не выложил код как тебя просили. Если бы ты это сделал - человек сразу бы заметил опечатку и поправил бы. Ты же этого нихрена не сделал, а полез в бутылку в #16. А виноваты, разумеется, программисты. 

Не выложил? А это что?

Он, этот "программист", не заметил ошибку в двух строчках. В 166 строках шансов вообще не было бы.

А вам бы не с середины стоило врываться, а хотя бы вникнув в тему.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Что-то анекдот про долбоёба на встречке вспомнился. Sirocco, ты не поверишь - тут их тысячи!

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

Не выложил? А это что?

это не код, а обрывки. Любой из этих кодов может быть как правильным. так и ошибочным - в зависимости от того, что идет дальше.

Если вы нифига не понимаете в этих строчках - то либо четко выполняйте указания. либо ищите другое место для вопросов.

Sirocco
Offline
Зарегистрирован: 28.09.2013

И так... Собака лает - караван идёт. Изменил код следующим образом.

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
//++++++++++++++++++++++++++++++
#include <Adafruit_NeoPixel.h>
#define LED_PIN    5
#define LED_COUNT 12
#define NUMPIXELS 12 //
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
//++++++++++++++++++++++++++++++
#define wifi_ssid "***"
#define wifi_password "***"

#define mqtt_server "192.168.1.155"
#define mqtt_port 1885
#define mqtt_user "***"
#define mqtt_password "***"
#define mqtt_client_name "Sonka"  //Имя клиента, отображаемое в mqtt сервере.
#define GPIO4     4
int msgString = 0;

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char *command_01, byte *payload, unsigned int length)
{
  char buff_p[length+1];
  for (int i = 0; i < length; i++)
    {
    buff_p[i] = (char)payload[i];
    }
    buff_p[length] = '\0';
    String msg_p = String(buff_p);
    msgString = msg_p.toInt(); // to Int
    Serial.println(msgString);
}

void BlinkRED(){
  if (msgString == 1)
    {
      digitalWrite(GPIO4, HIGH);

    pixels.clear();
    pixels.setPixelColor(0, pixels.Color(0, 255, 0)); //RED
    pixels.setPixelColor(1, pixels.Color(0, 255, 0));
    pixels.setPixelColor(2, pixels.Color(0, 255, 0));
    pixels.setPixelColor(3, pixels.Color(0, 255, 0));
    pixels.setPixelColor(4, pixels.Color(0, 255, 0));
    pixels.setPixelColor(5, pixels.Color(0, 255, 0));
    pixels.setPixelColor(6, pixels.Color(0, 255, 0)); //RED
    pixels.setPixelColor(7, pixels.Color(0, 255, 0));
    pixels.setPixelColor(8, pixels.Color(0, 255, 0));
    pixels.setPixelColor(9, pixels.Color(0, 255, 0));
    pixels.setPixelColor(10, pixels.Color(0, 255, 0));
    pixels.setPixelColor(11, pixels.Color(0, 255, 0));
    pixels.show();
    delay(50);
    pixels.clear();
    pixels.show();
    delay(50);
    }
}


void BlinkGREEN(){
  if (msgString == 2)
    {
      digitalWrite(GPIO4, HIGH);
    pixels.setPixelColor(0, pixels.Color(255, 0, 0)); //RED
    pixels.setPixelColor(1, pixels.Color(255, 0, 0));
    pixels.setPixelColor(2, pixels.Color(255, 0, 0));
    pixels.setPixelColor(3, pixels.Color(255, 0, 0));
    pixels.setPixelColor(4, pixels.Color(255, 0, 0));
    pixels.setPixelColor(5, pixels.Color(255, 0, 0));
    pixels.setPixelColor(6, pixels.Color(255, 0, 0)); //RED
    pixels.setPixelColor(7, pixels.Color(255, 0, 0));
    pixels.setPixelColor(8, pixels.Color(255, 0, 0));
    pixels.setPixelColor(9, pixels.Color(255, 0, 0));
    pixels.setPixelColor(10, pixels.Color(255, 0, 0));
    pixels.setPixelColor(11, pixels.Color(255, 0, 0));
    pixels.show();
    }
}

void ledOff(){
  if (msgString == 0)
    {
      pixels.clear();
      pixels.show();
    digitalWrite(GPIO4, LOW);
    }
}

//=================================================================================
//=================================================================================
void setup(void)
{
  Serial.begin(115200);
  pinMode(GPIO4, OUTPUT);
  client.setCallback(callback);
/////////////////////////////////////////////////////
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
/////////////////////////////////////////////////////
//++++++++++++++++++++++++++++++
  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(10); // Set BRIGHTNESS to about 1/5 (max = 255)
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
//++++++++++++++++++++++++++++++
}

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(wifi_ssid);
  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
//    blink_red();
    delay(480);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}
//////////////////////////////////////////////////////////////////////////////////////
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.println("Attempting MQTT connection.....");
    if (client.connect(mqtt_client_name, mqtt_user, mqtt_password)) {
      Serial.println("MQTT connected");
      client.subscribe("SetAlarm/command_01");
    } else {
      Serial.print("Connect failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
     // blink_red();
      delay(200);
      //blink_red();
      delay(4760);
    }
  }
}

void loop(void)
{
  if (!client.connected()) {
    reconnect();
    }
    client.loop();
    BlinkRED();
    ledOff();
    BlinkGREEN();
}

Ничего не поменялось, вылеты продолжаются. Если взглянуть на коды других людей, то там примерно тоже самое, что у меня было изначально. Это куски выхваченные из кода MQTT. Думается мне, что проблема не совсем там. У всех же работает. Ну или все игнорят проблему, ведь после самосброса всё продолжает работать почти всегда.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Sirocco пишет:

Не выложил? А это что?

Блин, ты ведь так ничего и не понял. Тебя - дурака просили выложить код целиком

А теперь что, ... теперь попробуй на вот этом ресурсе - там тебе наверняка помогут. Здесь уже вряд ли.

b707
Offline
Зарегистрирован: 26.05.2017

посмотрел историю по нику - человек много лет типа "увлекается ардуино" - куча таких же тугих постов по элементарным вопросам, а времени прочесть учебник за 7 лет так и не нашлось

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Злые вы.  Тока мы с котом добрые седня. :-)

b707
Offline
Зарегистрирован: 26.05.2017

Sirocco пишет:

Это куски выхваченные из кода MQTT. Думается мне, что проблема не совсем там. У всех же работает.

а не приходит в голову, что люди, у которых работает - писали свой код с пониманием, а не "выхватывали куски " из чужих скетчей?

Шли бы вы ... далеко.

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Злые вы.  Тока мы с котом добрые седня. :-)

помоги ему :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

Тока мы с котом добрые седня. :-)

Дед, так это же находка! Вот возьмитесь с котом и напишите код для ТС!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Не, у мня ноута нет, купить ненашто, а на планшете писать неудобно. А к компу на 3й эташ я не пойду, там холодно, не топют. :-)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Кста. Я очень трепетно отношусь к русскому языку, и к его лучшему представителю,, - букве йо.  Поэтому, очень легко понять, когда я пишу с планшета, у него нет буквы йо., тока `е`. Не додумали, диафрагмоглазые. :-)

Ну а если я пишу с планшета, 146% я плюшевый почти вхлам. 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Не, у мня ноута нет, купить ненашто,

пусть тебе Сирокко купит, он же не "ох**ший программист", а добрый сантехник (или кто там он), готов помочь каждому..

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Не, мне уже никто не поможет, да и незачем. Я уже матерьял отработанный, мне на моем кладбище уже прогулы ставят. :-)  ждут не даждуца.