forked from andresarmento/modbus-esp8266
-
Notifications
You must be signed in to change notification settings - Fork 209
Open
Description
Здравствуйте, спасибо за вашу библиотеку.
Возникла проблема с использованием функции readHreg();
Вот мой код:
#include <ModbusRTU.h>
#include <HardwareSerial.h>
HardwareSerial Serial_Modbus(1);
ModbusRTU Modbus;
#define RX_PIN 16
#define TX_PIN 17
#define SLAVE_ID 1 // Адрес Slave-устройства
#define REG_ADDR 0 // Адрес регистра (например, 0x0000)
#define REG_COUNT 1 // Количество регистров для чтения
uint32_t tmr1;
uint16_t REG_VALUE = 0;
void setup() {
Serial.begin(115200); //Сериал порт для отладки
Serial_Modbus.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); //Сериал порт для передачи данных
Modbus.begin(&Serial_Modbus); // Передаём объект Serial в Modbus
Modbus.master(); // Режим Master
}
void loop() {
// Запрос Holding-регистров (функция 0x03)
if (!Modbus.slave()) { // Проверяем, не занята ли шина
Modbus.readHreg(SLAVE_ID, REG_ADDR, ®_VALUE, REG_COUNT, callback);
while (Modbus.slave()) { // Ждём ответа
Modbus.task();
delay(10);
}
}
delay(1000); // Пауза между запросами
}
bool callback(Modbus::ResultCode event, uint16_t transactionId) {
if (event == Modbus::EX_SUCCESS) {
Serial.print("obtained value: ");
Serial.println(REG_VALUE); // Выводим данные
} else {
Serial.print("ERROR: ");
Serial.println(event);
}
return true;
}Компилятор выдает вот такую ошибку:
Compilation error: no matching function for call to 'ModbusRTU::readHreg(int, int, uint16_t*, int, bool (&)(Modbus::ResultCode, uint16_t))'
Metadata
Metadata
Assignees
Labels
No labels