Несколько #ifndef против одного #endif
Мой вопрос связан с проблемой, указанной по ссылке: Существует ли какая-либо хорошо работающая основная библиотека MODBUS TCP для Arduino?
Пример библиотеки Modbus TCP master, как предложено в посте выше. Часть файла ModbusTCP.h:
#ifndef Modbus_TCPIP_h
#define Modbus_TCPIP_h
#ifndef WIZNET_W5100
#define WIZNET_W5100 0 /**< define 1 if WIZNET W5100 IC is used, otherwise 0 */
#ifndef ENC28J60
#define ENC28J60 1 /**< define 1 if ENC28J60 IC is used, otherwise 0 */
#ifndef ESP8266
#define ESP8266 0
//...Весь код заголовка
#endif // Всего одно вхождение #endif в последней строке кода заголовка! 8-|
Когда я запустил компиляцию в своей среде Arduino IDE, я получил следующую ошибку: unterminated #ifndef. Упомянутая ошибка имеет четыре появления в журнале ошибок и связана с: Modbus_TCPIP_h, WIZNET_W5100 и ENC28J60.
Что следует изменить в заголовочном файле?
@dskorupinski, 👍-1
Обсуждение1 ответ
В коде отсутствует "#endif". Должно выглядеть примерно так:
#ifndef WIZNET_W5100
#define WIZNET_W5100 0 /**< define 1 if WIZNET W5100 IC is used, otherwise 0 */
#endif
#ifndef ENC28J60
#define ENC28J60 1 /**< define 1 if ENC28J60 IC is used, otherwise 0 */
#endif
#ifndef ESP8266
#define ESP8266 0
#endif
Ура!
Доступна новая ошибка: modbusTCPlib_enc28j60:23: ошибка: токен "=" недопустим в выражениях препроцессора #определить ENC28J60 = 1, @dskorupinski
Вы приняли ответ выше? А теперь добавляю новый вопрос. Весело!, @Mikael Patel
Я пытаюсь исправить ошибки в коде. В данный момент ничего не работает. Все пути ни к чему не приводят. Поэтому я бы спросил еще раз. Есть ли какая-нибудь хорошо работающая, а также проверенная и безошибочная основная библиотека MODBUS TCP для Arduino? Заранее спасибо., @dskorupinski
Вы читали, как пользоваться этим сайтом? https://arduino.stackexchange.com/tour Я рекомендую вам следовать этой процедуре. Это даст вам больше ответов и друзей., @Mikael Patel
- Есть ли хорошая рабочая библиотека MODBUS TCP master для Arduino?
- Как использовать библиотеку Modbus RTU функционального кода 6
- Как получить исходные файлы для библиотек Arduino?
- Ошибка: "недопустимое использование нестатической функции-члена" при вызове функции из моего собственного класса-метода
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Несколько клиентских серверов через Wi-Fi
- Существуют ли библиотеки сглаживания сигналов для Arduino?
Конечно, каждому из них нужно соответствовать окончание, поскольку они полностью независимы. Вы путаете это с предложениями else?, @Chris Stratton
Это ошибка в библиотеке. Кто-то отправил PR: https://github.com/goddland16/Modbus-TCP/pull/2, и владелец библиотеки объединил его. Видимо, никто из них не удосужился протестировать код или хотя бы бегло на него взглянуть. Это не дает мне особой уверенности в качестве их работы. Мой совет — поискать альтернативную библиотеку более высокого качества., @per1234
Вы могли бы сами догадаться, если бы спросили: «почему ESP8266 не выдает ошибку?», @jsotola
Уважаемые все. По предложению per1234 я бы снова задал главный вопрос: есть ли какая-нибудь хорошо работающая, а также протестированная и проверенная мастер-библиотека MODBUS TCP для Arduino?, @dskorupinski