CC3000 Wi-Fi: включить отладку
Как включить отладку с помощью Adafruit CC3000?
Я использую Adafruit_CC3000_Library. Я следовал наброску примера WebClient.ino. Я могу сделать от 300 до 400 HTTP-запросов, но в итоге соединение зависнет.
Я просмотрел исходный код CC3000 и utilities и обнаружил, что Adafruit_CC3000_Library
имеет ссылку &Printer
в локальной переменной с именем CC3KPrinter
. Я не могу понять, как включить или активировать CC3KPrinter
, так как он находится в блоке кода, зависящем от CHECK_PRINTER
. Я подумал, что #define
-определение некоторых переменных в моем скетче поможет:
// Ни один из этих флагов не включает отладку в коде CC3000.
#define _CC3000_DEBUG 1
#define DEBUG_MODE 1
#define ENABLE_CC3K_PRINTER 1
Пример фрагмента кода в библиотеке CC3000, который я пытаюсь включить, находится в строке 916. :
CHECK_PRINTER {
CC3KPrinter->println(F("Timed out waiting to connect"));
}
@JJ Zabkar, 👍3
Обсуждение2 ответа
Плохой обходной путь: поскольку я пытался устранить зависание соединения, я решил использовать сторожевой таймер. timer, используя слегка документированную библиотеку <avr/wdt.h>
.
Чтобы включить отладку, необходимо
- раскомментируйте
ENABLE_CC3K_PRINTER
вAdafruit_CC3000.h
Если вы хотите передать какой-либо поток отладки, отличный от
Serial
по умолчанию, вы должны передать указатель на объект (который должен наследоваться отPrint
, напримерSD
илиClient
) в качестве последнего аргумента конструктора в вашем скетче:Adafruit_CC3000(uint8_t csPin, uint8_t irqPin, uint8_t vbatPin, uint8_t spispeed = SPI_CLOCK_DIVIDER, Print* cc3kPrinter = CC3K_DEFAULT_PRINTER);
В
utility/debug.h
измените значениеDEBUG_MODE
на 1 (или любое ненулевое значение)
Я не знаю, что вызвало вашу проблему, но вы не должны включать это в свой код:
#define _CC3000_DEBUG 1
Поскольку большая часть utility/debug.h
заключена в обычный:
#ifndef _CC3000_DEBUG
.
.
.
#endif
Ваш #define
, в зависимости от того, где он размещен, может привести к тому, что компилятор пропустит большую часть файла, что приведет к ошибкам компиляции. На всякий случай избавьтесь от него и просто включите utility/debug.h
по мере необходимости.
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Как напечатать несколько номеров через Serial с очень небольшим количеством строк кода?
- Использование ESP8266-01 с Arduino uno R3
- Акцептант векселей ИКТ
- Проблема с массивом + последовательным монитором
- Arduino wrap или подкласс print() для работы с несколькими Serial
Вы проверили, что плата действительно подключается к вашему Wi-Fi с помощью более простого кода? Включили ли вы какую-либо отладку оператора печати в свой код, чтобы увидеть, где он зависает? Вы имеете в виду этот раздел «Принтер», но я чувствую, что это, вероятно, отвлекающий маневр, не зная больше о том, почему вы выбрали его. Другие варианты выглядят как отладка, но если они не дают результатов, я просто просматриваю библиотеку и добавляю операторы печати, чтобы увидеть, куда вы попадете. Они могут ничего не возвращать, если по какой-то причине это не заходит так далеко. Убедитесь, что ваши изменения верны., @bladepanthera
@bladepanthera: я отредактировал вопрос, чтобы показать, что соединение работает в течение 300-400 циклов; обычно около 40 минут. Я подтвердил через заявления печати, что зависание происходит в коде CC3000. Этот вопрос относится исключительно к включению блоков кода отладки CC3000., @JJ Zabkar
Из того, что я видел, CC3KPrinter будет печатать в последовательный порт, когда включена отладка, а это то, что вам нужно. Я не уверен, почему это не так, когда вы, кажется, включили его. Я могу думать только об очевидных вещах, таких как убедиться, что
#include "utility/debug.h
' не закомментирован, и используете ли вы библиотеку, которую, по вашему мнению, используете (у меня на ноутбуке две версии Arduino). Если все еще не повезло, то отладьте библиотеку самостоятельно с отпечатками, чтобы узнать, где именно зависание.Убедитесь, что буфер очищается правильно и т. д. Извините, больше ничем помочь не могу., @bladepanthera@bladepanthera: я еще раз подтвердил, что у меня есть утилита/отладка. Я думаю, что "отлаживать библиотеку самостоятельно" - отличная идея, но я не уверен, с чего начать. В моей Arduino IDE (v1.6.5) я могу открывать только скетчи *.ino. Библиотеки написаны на C++. Вы предлагаете мне изменить файлы библиотеки *.cpp (например, [Adafruit_CC3000.cpp](https://github.com/adafruit/Adafruit_CC3000_Library/blob/master/Adafruit_CC3000.cpp))?, @JJ Zabkar
Ага. Буквально поместите операторы печати в файл cpp., @bladepanthera
@LookAlterno IIRC Я создавал новое TCP-соединение для каждого запроса., @JJ Zabkar