示例#1
0
 public ModbusDataWriter(ModbusInitDataArray arr, RWModeEnum mode = RWModeEnum.hh)
 {
     InitArray = arr;
     Headers = new List<string>();
     RWMode = mode;
     FirstRun = true;
 }
示例#2
0
 public DataDBWriter(ModbusInitDataArray initArray)
 {
     InitArray = initArray;
     Headers   = new List <int>();
     Dates     = new List <DateTime>();
     Data      = new SortedList <int, DataDBRecord>();
 }
示例#3
0
 public ModbusDataReader(ModbusServer server, ModbusInitDataArray initArr)
 {
     this.server = server;
     this.countData = initArr.MaxAddr;
     this.InitArr = initArr;
     data = new SortedList<int, int>(countData);
     server.ModbusMaster.OnResponseData += new Master.ResponseData(ModbusMaster_OnResponseData);
 }
示例#4
0
 public ModbusDataReader(ModbusServer server, ModbusInitDataArray initArr)
 {
     this.server    = server;
     this.countData = initArr.MaxAddr;
     this.InitArr   = initArr;
     data           = new SortedList <int, int>(countData);
     server.ModbusMaster.OnResponseData += new Master.ResponseData(ModbusMaster_OnResponseData);
 }
示例#5
0
 public static String GetFileName(String path, ModbusInitDataArray InitArray, RWModeEnum RWMode, DateTime date, bool createDir)
 {
     string dirName=GetDir(path, InitArray, RWMode, date);
     if (createDir) {
         Directory.CreateDirectory(dirName);
     }
     string fileName=String.Format("{0}\\data_{1}.csv",dirName,date.ToString("HH_mm"));
     return fileName;
 }
示例#6
0
 public ModbusDataReader(ModbusServer server, ModbusInitDataArray initArr)
 {
     this.Server = server;
     this.CountData = initArr.MaxAddr;
     this.InitArr = initArr;
     Data = new SortedList<string, double>(CountData);
     StepData = InitArr.IsDiscrete ? (ushort)(100 * 8) : (ushort)50;
     server.OnResponse += new ResponseDataDelegeate(ModbusMaster_OnResponseData);
     server.OnError += new ErrorDelegate(server_OnError);
 }
示例#7
0
        public static String GetFileName(ModbusInitDataArray InitArray, RWModeEnum RWMode, DateTime date, bool createDir)
        {
            string dirName = GetDir(InitArray, RWMode, date);

            if (createDir)
            {
                Directory.CreateDirectory(dirName);
            }
            string fileName = String.Format("{0}\\data_{1}.csv", dirName, date.ToString("HH_mm"));

            return(fileName);
        }
示例#8
0
 public ModbusDataWriter(ModbusInitDataArray arr, RWModeEnum mode = RWModeEnum.hh)
 {
     InitArray = arr;
     Headers   = new List <int>();
     foreach (ModbusInitData data in arr.Data)
     {
         if (!data.Name.Contains("_FLAG") && !String.IsNullOrEmpty(data.Name))
         {
             Headers.Add(data.Addr);
         }
     }
     rwMode = mode;
 }
示例#9
0
        public MasterModbusReader(int sleepTime)
        {
            SleepTime     = sleepTime;
            InitArrays    = new SortedList <string, ModbusInitDataArray>();
            Readers       = new SortedList <string, ModbusDataReader>();
            WritersHH     = new SortedList <string, ModbusDataWriter>();
            WritersMin    = new SortedList <string, ModbusDataWriter>();
            FinishReading = new SortedList <string, bool>();
            foreach (string fileName in Settings.single.InitFiles)
            {
                try {
                    Logger.Info(String.Format("Чтение настроек modbus из файла '{0}'", fileName));
                    ModbusInitDataArray arr = XMLSer <ModbusInitDataArray> .fromXML(fileName);

                    arr.processData();
                    InitArrays.Add(arr.ID, arr);
                    String.Format("===Считано {0} записей", arr.FullData.Count);

                    Logger.Info(String.Format("Создание объекта чтения данных"));
                    ModbusServer     sv     = new ModbusServer(arr.IP, (ushort)arr.Port);
                    ModbusDataReader reader = new ModbusDataReader(sv, arr);
                    reader.OnFinish += new FinishEvent(reader_OnFinish);
                    readers.Add(arr.ID, reader);
                    String.Format("===Объект создан");

                    if (arr.WriteMin)
                    {
                        Logger.Info(String.Format("Создание объекта записи данных в файл (минуты)"));
                        ModbusDataWriter writer = new ModbusDataWriter(arr, RWModeEnum.min);
                        writersMin.Add(arr.ID, writer);
                        String.Format("===Объект создан");
                    }

                    if (arr.WriteHH)
                    {
                        Logger.Info(String.Format("Создание объекта записи данных в файл (получасовки)"));
                        ModbusDataWriter writer = new ModbusDataWriter(arr, RWModeEnum.hh);
                        writersHH.Add(arr.ID, writer);
                        String.Format("===Объект создан");
                    }

                    FinishReading.Add(arr.ID, false);
                } catch (Exception e) {
                    String.Format("===Ошибка при чтении настроек");
                    Logger.Error(e.ToString());
                }
            }
        }
示例#10
0
        public void reader_OnFinish(string InitArrayID, SortedList <int, double> ResultData)
        {
            Console.WriteLine(InitArrayID + "  read");
            ModbusInitDataArray init = initArrays[InitArrayID];

            if (init.WriteMin)
            {
                WritersMin[InitArrayID].writeData(ResultData);
            }
            if (init.WriteHH)
            {
                WritersHH[InitArrayID].writeData(ResultData);
            }
            FinishReading[InitArrayID] = true;
            if (!FinishReading.Values.Contains(false))
            {
                Thread.Sleep(SleepTime);
                Read();
            }
        }
示例#11
0
        public MasterDBWriter()
        {
            InitArrays = new SortedList <string, ModbusInitDataArray>();
            Writers    = new SortedList <string, DataDBWriter>();

            foreach (string fileName in Settings.single.InitFiles)
            {
                try {
                    Logger.Info(String.Format("Чтение настроек modbus из файла '{0}'", fileName));
                    ModbusInitDataArray arr = XMLSer <ModbusInitDataArray> .fromXML(fileName);

                    arr.processData();
                    InitArrays.Add(arr.ID, arr);
                    String.Format("===Считано {0} записей", arr.FullData.Count);

                    DataDBWriter writer = new DataDBWriter(arr);
                    Writers.Add(arr.ID, writer);
                } catch (Exception e) {
                    String.Format("===Ошибка при чтении настроек");
                    Logger.Error(e.ToString());
                }
            }
        }
示例#12
0
        public static string GetDir(ModbusInitDataArray InitArray, RWModeEnum RWMode, DateTime date)
        {
            string dirName = String.Format("{0}\\{1}\\{2}\\{3}", Settings.single.DataPath, InitArray.ID, RWMode.ToString(), date.ToString("yyyy_MM_dd"));

            return(dirName);
        }
示例#13
0
 public static string GetDir(String path,ModbusInitDataArray InitArray, RWModeEnum RWMode, DateTime date)
 {
     string dirName=String.Format("{0}\\{1}\\{2}\\{3}",path,InitArray.ID,RWMode.ToString(),date.ToString("yyyy_MM_dd"));
     return dirName;
 }
示例#14
0
 public DataDBWriter(ModbusInitDataArray initArray)
 {
     InitArray = initArray;
     Headers = new List<int>();
     Dates = new List<DateTime>();
     Data = new SortedList<int, DataDBRecord>();
 }
示例#15
0
 public DataDBWriter(ModbusInitDataArray initArray)
 {
     InitArray = initArray;
     Headers = new List<string>();
     Data = new SortedList<string, DataDBRecord>();
 }