LightHub 4.6.0
Open-source smart home controller firmware
Loading...
Searching...
No Matches
out_modbus.cpp File Reference
#include "modules/out_modbus.h"
#include "Arduino.h"
#include "options.h"
#include "utils.h"
#include "Streaming.h"
#include "item.h"
#include <ModbusMaster.h>
#include "main.h"
#include <HardwareSerial.h>

Classes

struct  reg_t

Macros

#define PAR_I16   1
#define PAR_I32   2
#define PAR_U16   3
#define PAR_U32   4
#define PAR_I8H   5
#define PAR_I8L   6
#define PAR_U8H   7
#define PAR_U8L   8
#define PAR_TENS   9
#define PAR_100   10
#define PAR_COIL   11
#define regSizeNum   sizeof(regSize_P)/sizeof(reg_t)

Functions

void modbusIdle (void)
 Idle hook invoked by the Modbus code between serial operations to let the main system breathe.
uint16_t swap (uint16_t x)
 Меняет порядок байтов в 16-битном числе.
int str2regSize (char *str)
 Преобразует строку в тип регистра.
char * getParamNameByReg (aJsonObject *parameters, int regnum)
 Получает имя параметра по номеру регистра.
bool haveAction (aJsonObject *execObj)
 Проверяет наличие действия в JSON-объекте.
bool readModbus (uint16_t reg, int regType, int count)
 Читает данные из Modbus-устройства.

Variables

aJsonObject * modbusObj
ModbusMaster node
short modbusBusy
uint32_t mbusSlenceTimer = 0
const reg_t regSize_P[] PROGMEM

Macro Definition Documentation

◆ PAR_100

#define PAR_100   10

◆ PAR_COIL

#define PAR_COIL   11

◆ PAR_I16

#define PAR_I16   1

◆ PAR_I32

#define PAR_I32   2

◆ PAR_I8H

#define PAR_I8H   5

◆ PAR_I8L

#define PAR_I8L   6

◆ PAR_TENS

#define PAR_TENS   9

◆ PAR_U16

#define PAR_U16   3

◆ PAR_U32

#define PAR_U32   4

◆ PAR_U8H

#define PAR_U8H   7

◆ PAR_U8L

#define PAR_U8L   8

◆ regSizeNum

#define regSizeNum   sizeof(regSize_P)/sizeof(reg_t)

Function Documentation

◆ getParamNameByReg()

char * getParamNameByReg ( aJsonObject * parameters,
int regnum )

Получает имя параметра по номеру регистра.

Parameters
parametersJSON-объект с параметрами.
regnumНомер регистра.
Returns
Имя параметра или NULL.

◆ haveAction()

bool haveAction ( aJsonObject * execObj)

Проверяет наличие действия в JSON-объекте.

Parameters
execObjJSON-объект.
Returns
true, если действие найдено, иначе false.

◆ modbusIdle()

void modbusIdle ( void )
extern

Idle hook invoked by the Modbus code between serial operations to let the main system breathe.

◆ readModbus()

bool readModbus ( uint16_t reg,
int regType,
int count )

Читает данные из Modbus-устройства.

Parameters
regНомер регистра.
regTypeТип регистра.
countКоличество регистров.
Returns
true, если чтение успешно, иначе false.

◆ str2regSize()

int str2regSize ( char * str)

Преобразует строку в тип регистра.

Parameters
strСтрока с типом регистра.
Returns
Код типа регистра.

Parse a register size string (Modbus).

◆ swap()

uint16_t swap ( uint16_t x)

Меняет порядок байтов в 16-битном числе.

Parameters
xВходное число.
Returns
Число с изменённым порядком байтов.

Variable Documentation

◆ mbusSlenceTimer

uint32_t mbusSlenceTimer = 0

◆ modbusBusy

short modbusBusy
extern

◆ modbusObj

aJsonObject* modbusObj
extern

◆ node

ModbusMaster node
extern

◆ PROGMEM

const reg_t regSize_P [] PROGMEM
Initial value:
=
{
{ "i16", (uint8_t) PAR_I16 },
{ "i32", (uint8_t) PAR_I32 },
{ "u16", (uint8_t) PAR_U16 },
{ "u32", (uint8_t) PAR_U32 },
{ "i8h", (uint8_t) PAR_I8H },
{ "i8l", (uint8_t) PAR_I8L },
{ "u8h", (uint8_t) PAR_U8H },
{ "u8l", (uint8_t) PAR_U8L },
{ "x10", (uint8_t) PAR_TENS },
{ "100", (uint8_t) PAR_100 }
}
#define PAR_U32
Definition out_modbus.cpp:37
#define PAR_I16
Definition out_modbus.cpp:34
#define PAR_TENS
Definition out_modbus.cpp:42
#define PAR_100
Definition out_modbus.cpp:43
#define PAR_U8L
Definition out_modbus.cpp:41
#define PAR_I8L
Definition out_modbus.cpp:39
#define PAR_U8H
Definition out_modbus.cpp:40
#define PAR_I32
Definition out_modbus.cpp:35
#define PAR_U16
Definition out_modbus.cpp:36
#define PAR_I8H
Definition out_modbus.cpp:38