Commit 9aeb86d5 authored by Pavel Vainerman's avatar Pavel Vainerman

Удалил уже несоответствующие действительности старые заголовки от cvs (date,$Id)

parent ef6c70aa
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2005/08/28 20:55:53 $
* \version $Id: DBInterface.h,v 1.1 2005/08/28 20:55:53 vpashka Exp $
*/
//----------------------------------------------------------------------------
#ifndef DBInterface_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2005/08/28 20:55:53 $
* \version $Id: DBServer_MySQL.h,v 1.1 2005/08/28 20:55:53 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef DBServer_MySQL_H_
......
/*! $Id: MBSlave.h,v 1.6 2009/02/24 20:27:24 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef MBSlave_H_
#define MBSlave_H_
......
/*! $Id: MBTCPServer.h,v 1.1 2008/11/22 23:22:23 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef MBTCPServer_H_
#define MBTCPServer_H_
// -------------------------------------------------------------------------
......
// $Id: NullController.h,v 1.11 2008/02/10 03:21:41 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef NullController_H_
#define NullController_H_
......
// $Id$
// -----------------------------------------------------------------------------
#ifndef TestGen_H_
#define TestGen_H_
......
// $Id$
// -----------------------------------------------------------------------------
#ifndef TestGenAlone_H_
#define TestGenAlone_H_
......
// $Id: ComediInterface.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -----------------------------------------------------------------------------
#ifndef ComediInterface_H_
#define ComediInterface_H_
......
// $Id: IOControl.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -----------------------------------------------------------------------------
#ifndef IOControl_H_
#define IOControl_H_
......
// --------------------------------------------------------------------------
//! \version $Id: RTUStorage.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef _RTUSTORAGE_H_
#define _RTUSTORAGE_H_
// -----------------------------------------------------------------------------
......
/*! $Id$ */
//--------------------------------------------------------------------------------
#ifndef _SMVIEWER_H
#define _SMVIEWER_H
......
/* $Id: SharedMemory.h,v 1.2 2009/01/22 02:11:24 vpashka Exp $ */
// -----------------------------------------------------------------------------
#ifndef SharedMemory_H_
#define SharedMemory_H_
......
// $Id: UDPPacket.h,v 1.1 2009/02/10 20:38:27 vpashka Exp $
// -----------------------------------------------------------------------------
#ifndef UDPPacket_H_
#define UDPPacket_H_
......
// $Id: UniExchange.h,v 1.2 2009/04/07 16:11:23 pv Exp $
// -----------------------------------------------------------------------------
#ifndef UniExchange_H_
#define UniExchange_H_
......
// $Id: DigitalFilter.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
//--------------------------------------------------------------------------
// Цифровой фильтр с двумя (опционально) уровнями фильтрации сигнала
// Первый уровень фильтра усредняет несколько значений, переданных через массив
// Второй уровень - математическая реалезация RC фильтра
// После вызова конструктора фильтра, его необходимо еще проинициализировать
// вызвав функцию FirstValue
//--------------------------------------------------------------------------
#ifndef DigitalFilter_H_
#define DigitalFilter_H_
//--------------------------------------------------------------------------
#include <list>
#include <vector>
#include <ostream>
#include "PassiveTimer.h"
//--------------------------------------------------------------------------
class DigitalFilter
{
public:
DigitalFilter ( unsigned int bufsize=5, double T=0, double lsq=0.2,
int iir_thr=10000, double iir_coeff_prev=0.5,
double iir_coeff_new=0.5 );
~DigitalFilter ();
// T <=0 - отключить вторую ступень фильтра
void setSettings( unsigned int bufsize, double T, double lsq,
int iir_thr, double iir_coeff_prev, double iir_coeff_new );
// Усреднение с учётом СКОС
// На вход подается новое значение
// возвращается фильтрованное с учётом
// предыдущих значений...
int filter1( int newValue );
// RC-фильтр
int filterRC( int newVal );
// медианный фильтр
int median( int newval );
// адаптивный фильтр по схеме наименьших квадратов
int leastsqr( int newval );
// рекурсивный фильтр
int filterIIR( int newval );
// получить текущее фильтрованное значение
int current1();
int currentRC();
int currentMedian();
int currentLS();
int currentIIR();
// просто добавить очередное значение
void add( int newValue );
void init( int val );
// void init( list<int>& data );
inline int size(){ return buf.size(); }
inline double middle(){ return M; }
inline double sko(){ return S; }
friend std::ostream& operator<<(std::ostream& os, const DigitalFilter& d);
friend std::ostream& operator<<(std::ostream& os, const DigitalFilter* d);
private:
// Первая ступень фильтра
double firstLevel();
// Вторая ступень фильтра, математическая реализация RC фильтра
double secondLevel( double val );
double Ti; // Постоянная времени для апериодического звена в милисекундах
double val; // Текущее значение второй ступени фильтра
double M; // Среднее арифметическое
double S; // Среднеквадратичное отклонение
PassiveTimer tmr;
typedef std::list<int> FIFOBuffer;
FIFOBuffer buf;
unsigned int maxsize;
typedef std::vector<int> MedianVector;
MedianVector mvec;
typedef std::vector<double> Coeff;
Coeff w; // Вектор коэффициентов для filterIIR
double lsparam; // Параметр для filterIIR
double ls; // Последнее значение, возвращённое filterIIR
int thr; // Порог для изменений, обрабатываемых рекурсивным фильтром
int prev; // Последнее значение, возвращённое рекурсивным фильтром
// Коэффициенты для рекурсивного фильтра
double coeff_prev;
double coeff_new;
};
//--------------------------------------------------------------------------
#endif // DigitalFilter_H_
//--------------------------------------------------------------------------
// $Id: Extensions.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -------------------------------------------------------------------------
#ifndef Extensions_H_
#define Extensions_H_
// -------------------------------------------------------------------------
#include <string>
#include "UniXML.h"
#include "Debug.h"
#include "UniSetTypes.h"
#include "Calibration.h"
// -------------------------------------------------------------------------
namespace UniSetExtensions
{
/*! Получение идентификатора объекта(процесса) разделяемой памяти */
UniSetTypes::ObjectId getSharedMemoryID();
/*! Получение времени для подтверждения "живости" */
int getHeartBeatTime();
xmlNode* findNode( xmlNode* node, const std::string snode, const std::string field );
xmlNode* getCalibrationsSection();
/*! замена служебных символов в строке
* '\\' -> '\n'
*/
void escape_string( std::string& s );
/*! Загрузка калибровочной диаграммы */
Calibration* buildCalibrationDiagram( const std::string dname );
extern DebugStream dlog;
}
// -------------------------------------------------------------------------
#endif // Extensions_H_
// $Id: IOBase.h,v 1.3 2009/01/23 23:56:54 vpashka Exp $
// -----------------------------------------------------------------------------
#ifndef IOBase_H_
#define IOBase_H_
// -----------------------------------------------------------------------------
#include <string>
#include "PassiveTimer.h"
#include "Trigger.h"
#include "Mutex.h"
#include "DigitalFilter.h"
#include "Calibration.h"
#include "IOController.h"
#include "SMInterface.h"
// -----------------------------------------------------------------------------
static const int DefaultSubdev = -1;
static const int DefaultChannel = -1;
static const int NoSafety = -1;
// -----------------------------------------------------------------------------
/*! Информация о входе/выходе */
struct IOBase
{
IOBase():
cdiagram(0),
breaklim(0),
value(0),
craw(0),
safety(0),
defval(0),
df(1),
nofilter(false),
f_median(false),
f_ls(false),
f_filter_iir(false),
ignore(false),
invert(false),
noprecision(false),
jar_state(false),
ondelay_state(false),
offdelay_state(false),
t_ai(UniSetTypes::DefaultObjectId)
{}
bool check_channel_break( long val ); /*!< проверка обрыва провода */
bool check_jar( bool val ); /*!< реализация фильтра против дребезга */
bool check_on_delay( bool val ); /*!< реализация задержки на включение */
bool check_off_delay( bool val ); /*!< реализация задержки на отключение */
IOController_i::SensorInfo si;
UniversalIO::IOTypes stype; /*!< тип канала (DI,DO,AI,AO) */
IOController_i::CalibrateInfo cal; /*!< калибровочные параметры */
Calibration* cdiagram; /*!< специальная калибровочная диаграмма */
long breaklim; /*!< значение задающее порог определяющий обрыв (задаётся 'сырое' значение) */
long value; /*!< текущее значение */
long craw; /*!< текущее 'сырое' значение до калибровки */
long cprev; /*!< предыдущее значение после калибровки */
long safety; /*!< безопасное состояние при завершении процесса */
long defval; /*!< безопасное состояние при завершении процесса */
DigitalFilter df; /*!< реализация программного фильтра */
bool nofilter; /*!< отключение фильтра */
bool f_median; /*!< признак использования медианного фильтра */
bool f_ls; /*!< признак использования адаптивного фильтра по методу наименьших квадратов */
bool f_filter_iir; /*!< признак использования рекурсивного фильтра */
bool ignore; /*!< игнорировать при опросе */
bool invert; /*!< инвертированная логика */
bool noprecision;
PassiveTimer ptJar; /*!< таймер на дребезг */
PassiveTimer ptOnDelay; /*!< задержка на срабатывание */
PassiveTimer ptOffDelay; /*!< задержка на отпускание */
bool jar_pause;
Trigger trOnDelay;
Trigger trOffDelay;
Trigger trJar;
bool jar_state; /*!< значение для фильтра дребезга */
bool ondelay_state; /*!< значение для задержки включения */
bool offdelay_state; /*!< значение для задержки отключения */
// Порог
UniSetTypes::ObjectId t_ai; /*!< если данный датчик дискретный,
и является пороговым, то в данном поле
хранится идентификатор аналогового датчика
с которым он связан */
IONotifyController_i::ThresholdInfo ti;
IOController::AIOStateList::iterator ait;
IOController::DIOStateList::iterator dit;
UniSetTypes::uniset_spin_mutex val_lock; /*!< флаг блокирующий работу со значением */
friend std::ostream& operator<<(std::ostream& os, IOBase& inf );
static void processingFasAI( IOBase* it, float new_val, SMInterface* shm, bool force );
static void processingAsAI( IOBase* it, long new_val, SMInterface* shm, bool force );
static void processingAsDI( IOBase* it, bool new_set, SMInterface* shm, bool force );
static long processingAsAO( IOBase* it, SMInterface* shm, bool force );
static float processingFasAO( IOBase* it, SMInterface* shm, bool force );
static bool processingAsDO( IOBase* it, SMInterface* shm, bool force );
static void processingThreshold( IOBase* it, SMInterface* shm, bool force );
static bool initItem( IOBase* b, UniXML_iterator& it, SMInterface* shm,
DebugStream* dlog=0, std::string myname="",
int def_filtersize=0, float def_filterT=0.0,
float def_lsparam=0.2, float def_iir_coeff_prev=0.5,
float def_iir_coeff_new=0.5 );
};
// -----------------------------------------------------------------------------
#endif // IOBase_H_
// -----------------------------------------------------------------------------
// $Id: PID.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// -----------------------------------------------------------------------------
#ifndef PID_H_
#define PID_H_
// -----------------------------------------------------------------------------
#include <sstream>
#include <iomanip>
// -----------------------------------------------------------------------------
/*! ПИД
Формулы выведены на основе разностных уравнений
см. http://atm.h1.ru/root/theory/theory33.html
Он даёт неплохой результат и опимальнее по расчётам
(содержит только умножение, не переполняется
т.к. учитывает только два последних шага)
*/
class PID
{
public:
PID();
~PID();
/*! Выполнение очередного шага расчётов
\param X - входное значение
\param Z - заданное значение
\param Ts - интервал расчёта данных, [сек] (интервал между шагами расчёта).
Ts - должно быть больше нуля
*/
void step( double X, double Z, double Ts );
/*! рестарт регулятора... */
void reset();
/*! пересчёт констант */
void recalc();
double Y; /*!< расчётное выходное значение */
double Kc; /*!< пропорциональный коэффициент */
double Ti; /*!< постоянная времени интеграла, [сек] */
double Td; /*!< постоянная времени дифференциала, [сек] */
double vlim; /*!< максимальное(минимальное) разрешённое значение (для любого растущего во времени коэффициента)
защита от переполнения
*/
double d0;
double d1;
double d2;
double sub1;
double sub2;
double sub;
double prevTs;
friend std::ostream& operator<<(std::ostream& os, PID& p );
friend std::ostream& operator<<(std::ostream& os, PID* p )
{
return os << (*p);
}
protected:
private:
};
// -----------------------------------------------------------------------------
#endif // PID_H_
// -----------------------------------------------------------------------------
// --------------------------------------------------------------------------
//! \version $Id: RTUTypes.h,v 1.1 2008/12/14 21:57:50 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef _RTUTypes_H_
#define _RTUTypes_H_
// -----------------------------------------------------------------------------
#include <string>
#include <cmath>
#include <cstring>
#include <ostream>
#include "modbus/ModbusTypes.h"
// -----------------------------------------------------------------------------
namespace VTypes
{
/*! Тип переменной для Modbus[RTU|TCP] */
enum VType
{
vtUnknown,
vtF2, /*!< двойное слово float(4 байта). В виде строки задаётся как \b "F2". */
vtF4, /*!< 8-х байтовое слово (double). В виде строки задаётся как \b "F4". */
vtByte, /*!< байт. В виде строки задаётся как \b "byte". */
vtUnsigned, /*!< беззнаковое целое (2 байта). В виде строки задаётся как \b "unsigned". */
vtSigned, /*!< знаковое целое (2 байта). В виде строки задаётся как \b "signed". */
vtI2, /*!< целое (4 байта). В виде строки задаётся как \b "I4".*/
vtU2 /*!< беззнаковое целое (4 байта). В виде строки задаётся как \b "U4".*/
};
std::ostream& operator<<( std::ostream& os, const VType& vt );
// -------------------------------------------------------------------------
std::string type2str( VType t ); /*!< преобразование строки в тип */
VType str2type( const std::string s ); /*!< преобразование названия в строку */
int wsize( VType t ); /*!< длина данных в словах */
// -------------------------------------------------------------------------
class F2
{
public:
// ------------------------------------------
static const int f2Size=2;
/*! тип хранения в памяти */
typedef union
{
unsigned short v[f2Size];
float val; //
} F2mem;
// ------------------------------------------
// конструкторы на разные случаи...
F2(){ memset(raw.v,0,sizeof(raw.v)); }
F2( float f ){ raw.val = f; }
F2( const ModbusRTU::ModbusData* data, int size )
{
for( int i=0; i<wsize() && i<size; i++ )
raw.v[i] = data[i];
}
~F2(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return f2Size; }
/*! тип значения */
static VType type(){ return vtF2; }
// ------------------------------------------
operator float(){ return raw.val; }
operator long(){ return lroundf(raw.val); }
F2mem raw;
};
// --------------------------------------------------------------------------
class F4
{
public:
// ------------------------------------------
static const int f4Size=4;
/*! тип хранения в памяти */
typedef union
{
unsigned short v[f4Size];
float val; //
} F4mem;
// ------------------------------------------
// конструкторы на разные случаи...
F4(){ memset(raw.v,0,sizeof(raw.v)); }
F4( float f ){ raw.val = f; }
F4( const ModbusRTU::ModbusData* data, int size )
{
for( int i=0; i<wsize() && i<size; i++ )
raw.v[i] = data[i];
}
~F4(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return f4Size; }
/*! тип значения */
static VType type(){ return vtF4; }
// ------------------------------------------
operator float(){ return raw.val; }
operator long(){ return lroundf(raw.val); }
F4mem raw;
};
// --------------------------------------------------------------------------
class Byte
{
public:
static const int bsize = 2;
// ------------------------------------------
/*! тип хранения в памяти */
typedef union
{
unsigned short w;
unsigned char b[bsize];
} Bytemem;
// ------------------------------------------
// конструкторы на разные случаи...
Byte(){ raw.w = 0; }
Byte( unsigned char b1, unsigned char b2 ){ raw.b[0]=b1; raw.b[1]=b2; }
Byte( const long val )
{
raw.w = val;
}
Byte( const ModbusRTU::ModbusData dat )
{
raw.w = dat;
}
~Byte(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return 1; }
/*! тип значения */
static VType type(){ return vtByte; }
// ------------------------------------------
operator long(){ return lroundf(raw.w); }
unsigned char operator[]( const int i ){ return raw.b[i]; }
Bytemem raw;
};
// --------------------------------------------------------------------------
class Unsigned
{
public:
// ------------------------------------------
// конструкторы на разные случаи...
Unsigned():raw(0){}
Unsigned( const long val )
{
raw = val;
}
Unsigned( const ModbusRTU::ModbusData dat )
{
raw = dat;
}
~Unsigned(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return sizeof(unsigned short); }
/*! тип значения */
static VType type(){ return vtUnsigned; }
// ------------------------------------------
operator long(){ return raw; }
unsigned short raw;
};
// --------------------------------------------------------------------------
class Signed
{
public:
// ------------------------------------------
// конструкторы на разные случаи...
Signed():raw(0){}
Signed( const long val )
{
raw = val;
}
Signed( const ModbusRTU::ModbusData dat )
{
raw = dat;
}
~Signed(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return sizeof(signed short); }
/*! тип значения */
static VType type(){ return vtSigned; }
// ------------------------------------------
operator long(){ return raw; }
signed short raw;
};
// --------------------------------------------------------------------------
class I2
{
public:
// ------------------------------------------
static const int i2Size=2;
/*! тип хранения в памяти */
typedef union
{
unsigned short v[i2Size];
int val; //
} I2mem;
// ------------------------------------------
// конструкторы на разные случаи...
I2(){ memset(raw.v,0,sizeof(raw.v)); }
I2( int v ){ raw.val = v; }
I2( const ModbusRTU::ModbusData* data, int size )
{
for( int i=0; i<wsize() && i<size; i++ )
raw.v[i] = data[i];
}
~I2(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return i2Size; }
/*! тип значения */
static VType type(){ return vtI2; }
// ------------------------------------------
operator int(){ return raw.val; }
I2mem raw;
};
// --------------------------------------------------------------------------
class U2
{
public:
// ------------------------------------------
static const int u2Size=2;
/*! тип хранения в памяти */
typedef union
{
unsigned short v[u2Size];
unsigned int val; //
} U2mem;
// ------------------------------------------
// конструкторы на разные случаи...
U2(){ memset(raw.v,0,sizeof(raw.v)); }
U2( unsigned int v ){ raw.val = v; }
U2( const ModbusRTU::ModbusData* data, int size )
{
for( int i=0; i<wsize() && i<size; i++ )
raw.v[i] = data[i];
}
~U2(){}
// ------------------------------------------
/*! размер в словах */
static int wsize(){ return u2Size; }
/*! тип значения */
static VType type(){ return vtU2; }
// ------------------------------------------
operator unsigned int(){ return raw.val; }
U2mem raw;
};
// --------------------------------------------------------------------------
} // end of namespace VTypes
// --------------------------------------------------------------------------
#endif // _RTUTypes_H_
// -----------------------------------------------------------------------------
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:20 $
* \version $Id: CallBackTimer.h,v 1.5 2005/01/28 20:52:20 vitlav Exp $
*/
//----------------------------------------------------------------------------
# ifndef CallBackTimer_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/02/07 21:04:56 $
* \version $Id: CallBackTimer_template.h,v 1.6 2008/02/07 21:04:56 vpashka Exp $
*/
// --------------------------------------------------------------------------
# ifndef CallBackTimer_TEMPLATE_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Класс работы с конфигурацией
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2008/02/21 19:59:57 $
* \version $Id: Configuration.h,v 1.25 2008/02/21 19:59:57 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef Configuration_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: DBServer.h,v 1.8 2007/06/17 21:30:55 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef DBServer_H_
......
......@@ -20,9 +20,6 @@
/*! \file
* \brief "Пустая" реализация интерфейса работы с сообщениями
* \author Pavel Vainerman
* \date $Date: 2006/12/22 13:37:48 $
* \version $Id: DefaultMessageInterface.h,v 1.3 2006/12/22 13:37:48 vpashka Exp $
*
*/
// --------------------------------------------------------------------------
#ifndef DefaultMessageInterface_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Реализация IOController_i
* \author Pavel Vainerman
* \date $Date: 2008/11/29 21:24:25 $
* \version $Id: IOController.h,v 1.28 2008/11/29 21:24:25 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef IOController_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Реализация IONotifyController_i
* \author Pavel Vainerman
* \date $Date: 2007/12/16 21:32:07 $
* \version $Id: IONotifyController.h,v 1.23 2007/12/16 21:32:07 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef IONotifyController_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2007/07/31 18:13:40 $
* \version $Id: IONotifyController_LT.h,v 1.4 2007/07/31 18:13:40 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef IONotifyController_LT_H_
......
......@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \version $Id: IORFile.h,v 1.4 2007/11/15 20:55:26 vpashka Exp $
* \date $Date: 2007/11/15 20:55:26 $
*/
// --------------------------------------------------------------------------
#ifndef IORFile_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Заголовочный файл для организации низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \date $Date: 2005/11/01 21:44:53 $
* \version $Id: DigitalCard.h,v 1.4 2005/11/01 21:44:53 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef DIGITALCARD_H__
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Заголовочный файл для дискретной карты DIO5600
* \author Vitaly Lipatov
* \date $Date: 2005/01/28 20:52:53 $
* \version $Id: DigitalCard_O5600.h,v 1.3 2005/01/28 20:52:53 vitlav Exp $
*/
// --------------------------------------------------------------------------
#ifndef __DIO5600_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Заголовочный файл для организации низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \date $Date: 2006/12/21 14:47:42 $
* \version $Id: IOAccess.h,v 1.5 2006/12/21 14:47:42 vpashka Exp $
* \par
* Этот файл предназначен для внутреннего использования в классах
* ввода-вывода
......@@ -39,8 +37,6 @@
/*! \class IOAccess
* \brief Предоставление операций для низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \date $Date: 2006/12/21 14:47:42 $
* \version $Id: IOAccess.h,v 1.5 2006/12/21 14:47:42 vpashka Exp $
* \par
* Этот класс предназначен для внутреннего использования в классах
* ввода-вывода
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Предоставление операций для низкоуровневого ввода-вывода.
* \author Vitaly Lipatov
* \date $Date: 2006/12/19 15:46:14 $
* \version $Id: IOAccessOld.h,v 1.4 2006/12/19 15:46:14 vpashka Exp $
*/
// --------------------------------------------------------------------------
#include <unistd.h>
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а
* \author Pavel Vainerman
* \version $Id: ISRestorer.h,v 1.9 2008/12/14 21:57:51 vpashka Exp $
* \date $Date: 2008/12/14 21:57:51 $
*/
// --------------------------------------------------------------------------
#ifndef ISRestorer_H_
......@@ -58,8 +56,6 @@ class ISRestorer
/*!
* \brief Реализация сохранения списка заказчиков в xml.
* \author Pavel Vainerman
* \version $Id: ISRestorer.h,v 1.9 2008/12/14 21:57:51 vpashka Exp $
* \date $Date: 2008/12/14 21:57:51 $
*
Реализует сохранение списка заказчиков в xml-файле.
\sa ISRestorer
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2007/01/06 00:03:34 $
* \version $Id: InfoServer.h,v 1.11 2007/01/06 00:03:34 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef InfoServer_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2006/12/20 10:39:01 $
* \version $Id: LT_Object.h,v 1.5 2006/12/20 10:39:01 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef Object_LT_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Класс работы с сообщениями
* \author Pavel Vainerman
* \date $Date: 2006/12/22 13:37:48 $
* \version $Id: MessageInterface.h,v 1.7 2006/12/22 13:37:48 vpashka Exp $
*
* Получение сообщения по id
*/
......
......@@ -20,9 +20,6 @@
/*! \file
* \brief Реализация интерфейса работы с сообщениями на основе XML
* \author Pavel Vainerman
* \date $Date: 2008/11/22 23:22:24 $
* \version $Id: MessageInterface_XML.h,v 1.7 2008/11/22 23:22:24 vpashka Exp $
*
*/
// --------------------------------------------------------------------------
#ifndef __MESSAGEINTERFACE_XML_H__
......
/*! \file
* \brief Класс работы с сообщениями
* \author Pavel Vainerman
* \date $Date: 2008/11/22 23:22:24 $
* \version $Id: MessageInterface_idXML.h,v 1.5 2008/11/22 23:22:24 vpashka Exp $
*/
/**************************************************************************/
#ifndef MessageInterface_idXML_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Базовые типы сообщений
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2008/12/14 21:57:51 $
* \version $Id: MessageType.h,v 1.14 2008/12/14 21:57:51 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef MessageType_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
* \version $Id: Mutex.h,v 1.14 2007/11/18 19:13:35 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef UniSet_MUTEX_H_
......@@ -75,8 +73,6 @@ namespace UniSetTypes
/*! \class uniset_mutex_lock
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
* \version $Id: Mutex.h,v 1.14 2007/11/18 19:13:35 vpashka Exp $
*
* Предназначен для блокирования совместного доступа. Как пользоваться см. \ref MutexHowToPage
* \note Если ресурс уже занят, то lock ждет его освобождения...
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \version $Id: ORepHelpers.h,v 1.9 2007/11/18 19:13:35 vpashka Exp $
* \date $Date: 2007/11/18 19:13:35 $
*/
// --------------------------------------------------------------------------
#ifndef ORepHelpers_H_
......
......@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Vitaly Lipatov
* \version $Id: ObjectIndex.h,v 1.11 2008/11/22 23:22:24 vpashka Exp $
* \date $Date: 2008/11/22 23:22:24 $
*/
// --------------------------------------------------------------------------
#ifndef ObjcetIndex_H_
......
......@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Vitaly Lipatov
* \version $Id: ObjectIndex_Array.h,v 1.6 2008/11/22 23:22:24 vpashka Exp $
* \date $Date: 2008/11/22 23:22:24 $
*/
// --------------------------------------------------------------------------
#ifndef ObjectIndex_Array_H_
......
......@@ -18,8 +18,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Vitaly Lipatov
* \version $Id: ObjectIndex_XML.h,v 1.8 2008/11/22 23:22:24 vpashka Exp $
* \date $Date: 2008/11/22 23:22:24 $
*/
// --------------------------------------------------------------------------
#ifndef ObjectIndex_XML_H_
......
// $Id: ObjectIndex_idXML.h,v 1.6 2008/11/22 23:22:24 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef ObjectIndex_idXML_H_
#define ObjectIndex_idXML_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Интерфейсный класс для работы с репозитарием объектов
* \author Pavel Vainerman
* \date $Date: 2007/11/18 19:13:35 $
* \version $Id: ObjectRepository.h,v 1.9 2007/11/18 19:13:35 vpashka Exp $ *
*/
// --------------------------------------------------------------------------
#ifndef ObjectRepository_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Интерфейсный класс для создания структуры репозитария объектов
* \author Pavel Vainerman
* \version $Id: ObjectRepositoryFactory.h,v 1.8 2007/07/07 18:58:42 vpashka Exp $
* \date $Date: 2007/07/07 18:58:42 $
*/
// --------------------------------------------------------------------------
#ifndef ObjectRepositoryFactory_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Активатор объектов
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: ObjectsActivator.h,v 1.13 2007/06/17 21:30:55 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef ObjectsActivator_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Реализация интерфейса менеджера объектов.
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
* \version $Id: ObjectsManager.h,v 1.13 2009/01/16 23:16:42 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef ObjectsManager_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2007/07/31 18:13:40 $
* \version $Id: ObjectsManager_LT.h,v 1.4 2007/07/31 18:13:40 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef ObjectsManager_LT_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Создатель потоков
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:21 $
* \version $Id: OmniThreadCreator.h,v 1.5 2005/01/28 20:52:21 vitlav Exp $
*/
// --------------------------------------------------------------------------
#ifndef OmniThreadCreator_h_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/11/29 21:24:25 $
* \version $Id: PassiveObject.h,v 1.9 2008/11/29 21:24:25 vpashka Exp $
*/
// -------------------------------------------------------------------------
#ifndef PassiveObject_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Vitaly Lipatov, Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
*/
//----------------------------------------------------------------------------
# ifndef PASSIVETIMER_H_
......@@ -36,8 +34,6 @@
/*! \class UniSetTimer
* \brief Базовый интерфейс пасивных таймеров
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
*/
class UniSetTimer
{
......@@ -78,8 +74,6 @@ class UniSetTimer
/*! \class PassiveTimer
* \brief Пассивный таймер
* \author Vitaly Lipatov
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
* \par
* Установив таймер в конструкторе или с помощью setTiming,
* можно с помощью checkTime проверять, не наступило ли нужное время
......@@ -125,8 +119,6 @@ class omni_condition;
/*! \class ThrPassiveTimer
* \brief Пассивный таймер с режимом засыпания (ожидания)
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
* \par
* Позволяет заснуть на заданное время wait(timeout_t timeMS).
* Механизм работает на основе взаимных блокировок потоков (mutex и condition).
......@@ -154,8 +146,6 @@ class ThrPassiveTimer:
/*! \class PassiveSysTimer
* \brief Пассивный таймер с режимом засыпания (ожидания)
* \author Pavel Vainerman
* \date $Date: 2007/08/02 22:52:27 $
* \version $Id: PassiveTimer.h,v 1.9 2007/08/02 22:52:27 vpashka Exp $
* \par
* Создан на основе сигнала (SIGALRM).
*/
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Интефес для создания и управления потоками
* \author Anthony Korbin
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: PosixThread.h,v 1.7 2007/06/17 21:30:55 vpashka Exp $
*/
//----------------------------------------------------------------------------
#ifndef PosixThread_h_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2006/12/20 10:39:01 $
* \version $Id: ProxyManager.h,v 1.6 2006/12/20 10:39:01 vpashka Exp $
*/
// --------------------------------------------------------------------------
#ifndef ProxyManager_H_
......
// --------------------------------------------------------------------------
//! \version $Id: Pulse.h,v 1.1 2008/12/14 21:57:51 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef Pulse_H_
#define Pulse_H_
// --------------------------------------------------------------------------
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Реализация RepositoryAgent
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:21 $
* \version $Id: RepositoryAgent.h,v 1.5 2005/01/28 20:52:21 vitlav Exp $
*/
// --------------------------------------------------------------------------
#ifndef RepositoryAgent_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а
* \author Pavel Vainerman
* \version $Id: Restorer.h,v 1.4 2007/11/18 19:13:35 vpashka Exp $
* \date $Date: 2007/11/18 19:13:35 $
*/
// --------------------------------------------------------------------------
#ifndef Restorer_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Блокировка повторного запуска программы
* \author Ahton Korbin, Pavel Vainerman
* \date $Date: 2006/12/20 10:39:01 $
* \version $Id: RunLock.h,v 1.6 2006/12/20 10:39:01 vpashka Exp $
*/
// ---------------------------------------------------------------------------
#ifndef RunLock_H_
......
// $Id: SMonitor.h,v 1.2 2007/12/17 22:51:00 vpashka Exp $
// ------------------------------------------------------------------------------------------
#ifndef SMonitor_H_
#define SMonitor_H_
// ------------------------------------------------------------------------------------------
......
......@@ -20,9 +20,6 @@
/*! \file
* \brief Программа просмотра состояния датчиков
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: SViewer.h,v 1.11 2007/06/17 21:30:55 vpashka Exp $
* \par
*/
//--------------------------------------------------------------------------------
#ifndef _SVIEWER_H
......
......@@ -19,7 +19,6 @@
// --------------------------------------------------------------------------
// idea: lav@etersoft.ru
// realisation: pv@etersoft.ru, lav@etersoft.ru
//! \version $Id: SandClock.h,v 1.1 2008/10/05 19:00:53 vpashka Exp $
// --------------------------------------------------------------------------
#ifndef SandClock_H_
#define SandClock_H_
......
......@@ -19,11 +19,8 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \version $Id: StorageInterface.h,v 1.2 2006/12/20 10:39:01 vpashka Exp $
* \date $Date: 2006/12/20 10:39:01 $
*/
// --------------------------------------------------------------------------
#ifndef StorageInterface_H_
#define StorageInterface_H_
// ---------------------------------------------------------------------------
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Ivan Donchevskiy
* \date $Date: 2009/07/15 15:55:00 $
* \version $Id: Jrn.h,v 1.0 2009/07/15 15:55:00 vpashka Exp $
*/
// --------------------------------------------------------------------------
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Реализация SystemGuard
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:55 $
* \version $Id: SystemGuard.h,v 1.9 2007/06/17 21:30:55 vpashka Exp $
*/
//--------------------------------------------------------------------------------
#ifndef SystemGuard_H_
......
......@@ -19,8 +19,6 @@
/*! \file
* \author Vitaly Lipatov
* \date $Date: 2007/01/02 22:30:48 $
* \version $Id: TextDBIndex.h,v 1.6 2007/01/02 22:30:48 vpashka Exp $
* \par
* Базовый класс получения строки по её индексу
*/
......
......@@ -19,8 +19,6 @@
/*! \file
* \author Vitaly Lipatov
* \date $Date: 2007/01/02 22:30:48 $
* \version $Id: TextFileIndex.h,v 1.7 2007/01/02 22:30:48 vpashka Exp $
* \par
* Базовый класс получения строки по её индексу
*/
......
......@@ -19,8 +19,6 @@
/*! \file
* \author Vitaly Lipatov
* \date $Date: 2007/01/02 22:30:48 $
* \version $Id: TextIndex.h,v 1.6 2007/01/02 22:30:48 vpashka Exp $
* \par
* Базовый класс получения строки по её индексу
*/
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Создатель потоков
* \author Pavel Vainerman
* \date $Date: 2005/01/28 20:52:21 $
* \version $Id: ThreadCreator.h,v 1.5 2005/01/28 20:52:21 vitlav Exp $
*/
//--------------------------------------------------------------------------------
#ifndef ThreadCreator_h_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Реализация TimerService
* \author Pavel Vainerman
* \date $Date: 2007/06/17 21:30:56 $
* \version $Id: TimerService.h,v 1.7 2007/06/17 21:30:56 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef TimerService_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Триггер, позволяющий красиво засекать изменения во флаге
* \author Vitaly Lipatov
* \date $Date: 2006/11/18 14:53:58 $
* \version $Id: Trigger.h,v 1.1 2006/11/18 14:53:58 vpashka Exp $
*/
//--------------------------------------------------------------------------
#ifndef UNITRIGGER_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerAND.h,v 1.7 2008/06/01 21:36:19 vpashka Exp $
*/
// --------------------------------------------------------------------------
//---------------------------------------------------------------------------
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerAND_template.h,v 1.8 2008/06/01 21:36:19 vpashka Exp $
*/
// --------------------------------------------------------------------------
#include "TriggerAND.h"
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOR.h,v 1.7 2008/06/01 21:36:19 vpashka Exp $
*/
// --------------------------------------------------------------------------
//---------------------------------------------------------------------------
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOR_template.h,v 1.8 2008/06/01 21:36:19 vpashka Exp $
*/
// --------------------------------------------------------------------------
#include "TriggerOR.h"
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOutput.h,v 1.7 2008/06/01 21:36:19 vpashka Exp $
*/
// --------------------------------------------------------------------------
//---------------------------------------------------------------------------
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2008/06/01 21:36:19 $
* \version $Id: TriggerOutput_template.h,v 1.4 2008/06/01 21:36:19 vpashka Exp $
*/
// --------------------------------------------------------------------------
......
......@@ -21,8 +21,6 @@
* \brief Реализация базового(фундаментального) класса для объектов системы
* (процессов управления, элементов графического интерфейса и т.п.)
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
* \version $Id: UniSetObject.h,v 1.19 2009/01/16 23:16:42 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef UniSetObject_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2007/07/31 18:13:40 $
* \version $Id: UniSetObject_LT.h,v 1.5 2007/07/31 18:13:40 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef UniSetObject_LT_H_
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Базовый класс для реализации шаблона "наблюдатель"
* \author Pavel Vainerman
* \date $Date: 2006/12/20 10:39:04 $
* \version $Id: UniSetObserver.h,v 1.3 2006/12/20 10:39:04 vpashka Exp $
*/
//---------------------------------------------------------------------------
#ifndef UniSetObserver_H_
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Pavel Vainerman
* \date $Date: 2009/01/16 23:16:42 $
* \version $Id: UniSetTypes.h,v 1.12 2009/01/16 23:16:42 vpashka Exp $
* \brief базовые типы библиотеки UniSet
*/
// --------------------------------------------------------------------------
......
......@@ -19,8 +19,6 @@
// --------------------------------------------------------------------------
/*! \file
* \author Vitaly Lipatov
* \date $Date: 2006/12/20 10:39:04 $
* \version $Id: UniXML.h,v 1.9 2006/12/20 10:39:04 vpashka Exp $
* \par
* \bug НЕ РАБОТАЕТ функция findNode. (не ищет по полю name, если задать)
......
......@@ -20,8 +20,6 @@
/*! \file
* \brief Универсальный интерфейс для взаимодействия с объектами системы
* \author Pavel Vainerman
* \version $Id: UniversalInterface.h,v 1.24 2008/12/14 21:57:51 vpashka Exp $
* \date $Date: 2008/12/14 21:57:51 $
*/
// --------------------------------------------------------------------------
#ifndef UniversalInterface_H_
......
/* $Id: WDTInterface.h,v 1.1 2008/12/14 21:57:51 vpashka Exp $ */
//--------------------------------------------------------------------------
#ifndef WDTInterface_H_
#define WDTInterface_H_
......
/*! $Id: ModbusClient.h,v 1.3 2009/01/11 19:08:46 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusClient_H_
#define ModbusClient_H_
......
/*! $Id: ModbusHelpers.h,v 1.1 2009/01/12 20:40:11 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusHelpers_H_
#define ModbusHelpers_H_
......
/*! $Id: ModbusRTUMaster.h,v 1.3 2009/02/24 20:27:25 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusRTUMaster_H_
#define ModbusRTUMaster_H_
......
/*! $Id: ModbusRTUSlave.h,v 1.3 2009/02/24 20:27:25 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusRTUSlave_H_
#define ModbusRTUSlave_H_
......
/*! $Id: ModbusRTUSlaveSlot.h,v 1.2 2009/02/24 20:27:25 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusRTUSlaveSlot_H_
#define ModbusRTUSlaveSlot_H_
......
/*! $Id: ModbusServer.h,v 1.3 2009/01/11 19:08:46 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusServer_H_
#define ModbusServer_H_
......
/*! $Id: ModbusServerSlot.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusServerSlot_H_
#define ModbusServerSlot_H_
......
/*! $Id: ModbusTCPCore.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusTCPCore_H_
#define ModbusTCPCore_H_
......
/*! $Id: ModbusTCPServer.h,v 1.2 2008/11/23 22:16:03 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusTCPServer_H_
#define ModbusTCPServer_H_
......
/*! $Id: ModbusTCPServerSlot.h,v 1.1 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusTCPServerSlot_H_
#define ModbusTCPServerSlot_H_
......
/*! $Id: ModbusTypes.h,v 1.11 2008/11/22 23:22:24 vpashka Exp $ */
// -------------------------------------------------------------------------
#ifndef ModbusTypes_H_
#define ModbusTypes_H_
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment