Пример #1
0
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            this.m_address = address;
            this.m_vport   = data_vport;

            libCrc = new LibCRC(LibCRC.Algorithms.crc8Dallas);
        }
Пример #2
0
        public void Init(uint address, string pass, VirtualPort vp)
        {
            this.m_address = address;
            this.m_vport   = vp;

            isMeterSelected = false;
            cachedAnsewerBytes.Clear();
        }
Пример #3
0
        public void Init(uint address, string pass, VirtualPort vp)
        {
            // перевод адреса в формат наладчика
            // формула: 4194304003 + (n кв*8)
            this.m_address = 0xFA000000 + Convert.ToUInt32(3 + address * 8);
            this.m_vport   = vp;

            SetTypesForRead(GetTypesForCategory(CommonCategory.Current));
        }
Пример #4
0
        public void Init(uint address, string pass, VirtualPort vp)
        {
            this.m_address = address;
            this.m_vport = vp;
            this.vp = vp;

            //для однозачного парсинга float значений
            System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
            customCulture.NumberFormat.NumberDecimalSeparator = ".";
            System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
        }
        public void Init(uint address, string pass, VirtualPort vp)
        {
            this.m_address = address;
            // TODO в этом драйвере сетевой номер получается не так, см. документацию
            // поправить
            this.m_addr  = (byte)(this.m_address & 0x000000ff);
            this.m_vport = vp;

            isMeterSelected = false;
            cachedAnsewerBytes.Clear();
        }
Пример #6
0
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            m_address    = address;
            this.m_vport = data_vport;


            for (byte t = 1; t <= m_max_canals; t++)
            {
                m_dictDataTypes.Add(t, "");
            }
            //m_log_file_name += this.GetType() + "_" + m_address.ToString();
        }
Пример #7
0
        //private byte m_ident_name_size = 0;
        //private int IDENT_CMD_ANSWER_SIZE = m_min_answer_length;
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="address"></param>
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            this.m_address = address;
            //m_ident_name_size = 7;

            for (byte t = 1; t <= m_max_types; t++)
            {
                m_dictDataTypes.Add(t, "");
            }

            this.m_vport = data_vport;
               // m_log_file_name += this.GetType() + "_" + m_address.ToString();
        }
Пример #8
0
 public void Init(uint address, string pass, VirtualPort data_vport)
 {
     if (drvt != null)
     {
         foreach (MethodInfo m in drvmi)
         {
             if (m.Name.CompareTo("Init") == 0)
             {
                 object[] FuncParam = { address, pass, data_vport };
                 m.Invoke(refo, FuncParam);
                 return;
             }
         }
     }
 }
Пример #9
0
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            try
            {
                string[] p = pass.Split('#');
                this.sPrgId = p[0];
                this.sItemTag = p[1];
            }
            catch (Exception ex)
            {
                sPrgId = "Logika.DA.2";
                sItemTag = "SPbus.SPG762.p1.300(Potr)";
            }

            this.m_vport = data_vport;
        }
Пример #10
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="address"></param>
        /// <param name="password"></param>
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            if (address == 0)
            {
                WriteToLog("Init: Не возможно проинициализировать драйвер karat30X с адресом 0");
                return;
            }

            // проинициализируем массив в котором будет кэш
            int[] archiveTypeRegisterVals = (int[])Enum.GetValues(typeof(ArchiveTypeRegister));
            foreach (int typeReg in archiveTypeRegisterVals)
            {
                this.archiveCash[(short)typeReg] = new byte[0];
            }

            this.m_address = address;
            m_vport        = data_vport;
        }
Пример #11
0
        private bool initMeterDriver(uint mAddr, string mPass, VirtualPort virtPort)
        {
            if (virtPort == null)
            {
                return(false);
            }

            try
            {
                Meter = new Mercury23XDriver();
                Meter.Init(mAddr, mPass, virtPort);
                return(true);
            }
            catch (Exception ex)
            {
                WriteToStatus("Ошибка инициализации драйвера: " + ex.Message);
                return(false);
            }
        }
Пример #12
0
        // TODO: сделать интерфейс получения информации из драйвера - по параметрам
        // и по паролю

        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            // ожидаемый формат пароля: ftp;admin;admin;1234 - номер прибора
            string[] passwordParts = pass.Split(';');
            if (passwordParts.Length < 4)
            {
                return;
            }
            // TODO: ловить исключения в драйверах
            //throw new Exception("Не возможно инициализировать драйвер, ожидаемый формат пароля ftp;admin;admin;1234");

            ftpCredentials     = new NetworkCredential(passwordParts[1], passwordParts[2]);
            ftpFileCurrentPath = FTP_PATH + FTP_FILENAME;

            // TODO: получать из data_vport
            ftpHost = "192.168.0.1";

            indivId = passwordParts[3];
        }
Пример #13
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="address"></param>
        /// <param name="password"></param>
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            // всегда делай так, нужно для логгирования
            this.m_vport = data_vport;

            //if (address == 0)
            //{
            //    WriteToLog("Init: Не возможно проинициализировать драйвер karat30X с адресом 0");
            //    return;
            //}

            this.WriteToLog("Драйвер карата проинициализирован");

            // проинициализируем массив в котором будет кэш
            int[] archiveTypeRegisterVals = (int[])Enum.GetValues(typeof(ArchiveTypeRegister));
            foreach (int typeReg in archiveTypeRegisterVals)
            {
                this.archiveCash[(short)typeReg] = new byte[0];
            }

            this.m_address = address;
        }
Пример #14
0
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            this.m_address = address;

            int tmp = 0;
            if (pass != "" && int.TryParse(pass, out tmp) && tmp > 0)
                readDailyTimeoutInDays = tmp;
            else
                readDailyTimeoutInDays = 3;

            directoryBase = AppDomain.CurrentDomain.BaseDirectory;
        }
Пример #15
0
        private bool setVirtualSerialPort(bool setTcp)
        {
            ushort read_timeout = (ushort)numericUpDown1.Value;
            byte   attempts     = 1;
            uint   mAddr        = 0x01;
            string mPass        = this.tbPass.Text;

            if (!setTcp)
            {
                try
                {
                    SerialPort m_Port = new SerialPort(comboBox1.Items[comboBox1.SelectedIndex].ToString());

                    m_Port.BaudRate  = int.Parse(ConfigurationSettings.AppSettings["baudrate"]);
                    m_Port.DataBits  = int.Parse(ConfigurationSettings.AppSettings["databits"]);
                    m_Port.Parity    = (Parity)int.Parse(ConfigurationSettings.AppSettings["parity"]);
                    m_Port.StopBits  = (StopBits)int.Parse(ConfigurationSettings.AppSettings["stopbits"]);
                    m_Port.DtrEnable = bool.Parse(ConfigurationSettings.AppSettings["dtr"]);



                    //meters initialized by secondary id (factory n) respond to 0xFD primary addr
                    Vp = new ComPort(m_Port, attempts, read_timeout, 400);
                    if (!initMeterDriver(mAddr, mPass, Vp))
                    {
                        return(false);
                    }

                    //check vp settings
                    SerialPort tmpSP = (SerialPort)Vp.GetPortObject();
                    toolStripStatusLabel2.Text = String.Format("{0} {1}{2}{3} DTR: {4} RTimeout: {5} ms", tmpSP.PortName, tmpSP.BaudRate, tmpSP.Parity, tmpSP.StopBits, tmpSP.DtrEnable, read_timeout);

                    exportFilename = String.Format("{0}_{1}-{2}", tmpSP.PortName, numericUpDown2.Value, numericUpDown3.Value);

                    return(true);
                }
                catch (Exception ex)
                {
                    WriteToStatus("Ошибка создания виртуального COM порта: " + ex.Message);
                    return(false);
                }
            }
            else
            {
                try
                {
                    ushort write_timeout          = 100;
                    int    delay_between_sendings = 50;

                    //TODO: сделать это подсосом из xml
                    NameValueCollection loadedAppSettings = new NameValueCollection();
                    loadedAppSettings.Add("localEndPointIp", this.listBox1.SelectedItem.ToString());


                    Vp = new TcpipPort(textBox1.Text, (int)numericUpDown4.Value, write_timeout, read_timeout, delay_between_sendings, loadedAppSettings);
                    if (!initMeterDriver(mAddr, mPass, Vp))
                    {
                        return(false);
                    }

                    toolStripStatusLabel2.Text = String.Format("TCP {0}:{1} RTimeout: {2} ms", textBox1.Text, (int)numericUpDown4.Value, read_timeout);


                    exportFilename = String.Format("{0}_{1}-{2}", textBox1.Text + "_" + numericUpDown4.Value, numericUpDown2.Value, numericUpDown3.Value);

                    return(true);
                }
                catch (Exception ex)
                {
                    WriteToStatus("Ошибка создания виртуального TCP порта: " + ex.Message);
                    return(false);
                }
            }
        }
Пример #16
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="address"></param>
        /// <param name="password"></param>
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            byte[] password = new byte[pass.Length];

            for (int j = 0; j < password.Length; j++)
            {
                password[j] = Convert.ToByte(pass[j]);
                password[j] -= 0x30;
            }

            //if (address > 239) this.m_address = address - 239;
            //else this.m_address = address;

            if (address == 0)
            {
                WriteToLog("Init: Не возможно проинициализировать драйвер m230 с адресом 0");
                return;
            }

            this.m_address = address % 239;
            if (m_address == 0) m_address = 239;

            password.CopyTo(this.m_password, 0);

            m_vport = data_vport;
        }
Пример #17
0
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            bool password_type_hex = false;
            this.m_address = address;

            if (m_password.Length >= pass.Length)
            {
                for (int j = 0; j < pass.Length; j++)
                {
                    if (password_type_hex)
                    {
                        m_password[j] = Convert.ToByte(pass[j]);
                        m_password[j] -= 0x30;
                    }
                    else
                    {
                        m_password[j] = Convert.ToByte(pass[j]);
                    }
                }
            }

            /*
            for (byte t = 1; t <= (byte)TypesValues.QC; t++)
            {
                m_dictDataTypes.Add(t, "");
            }
            */

            m_vport = data_vport;

            //m_log_file_name += this.GetType() + "_" + m_address.ToString();
        }
Пример #18
0
 public void Init(uint address, string pass, VirtualPort vp)
 {
     this.m_address = address;
     this.m_addr    = (byte)(this.m_address & 0x000000ff);
     this.m_vport   = vp;
 }
Пример #19
0
        private bool initMeterDriver(uint mAddr, string mPass, VirtualPort virtPort)
        {
            if (virtPort == null) return false;

            try
            {
                Meter = new teplouchet1();
                Meter.Init(mAddr, mPass, virtPort);
                return true;
            }
            catch (Exception ex)
            {
                WriteToStatus("Ошибка инициализации драйвера: " + ex.Message);
                return false;
            }
        }
Пример #20
0
 public void Init(uint address, string pass, VirtualPort vp)
 {
     this.m_address = address;
     this.m_addr = (byte)(this.m_address & 0x000000ff);
     this.m_vport = vp;
 }
Пример #21
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="address"></param>
        /// <param Pulsar="password"></param>
        public void Init(uint address, string pass, VirtualPort data_vport)
        {
            this.m_address = address;

            m_vport = data_vport;
        }
Пример #22
0
        private bool setVirtualSerialPort()
        {
            try
            {
                byte attempts = 1;
                ushort read_timeout = (ushort)numericUpDownComReadTimeout.Value;
                ushort write_timeout = (ushort)numericUpDownComWriteTimeout.Value;

                if (!checkBoxTcp.Checked)
                {
                    SerialPort m_Port = new SerialPort(comboBoxComPorts.Items[comboBoxComPorts.SelectedIndex].ToString());

                    m_Port.BaudRate = int.Parse(ConfigurationSettings.AppSettings["baudrate"]);
                    m_Port.DataBits = int.Parse(ConfigurationSettings.AppSettings["databits"]);
                    m_Port.Parity = (Parity)int.Parse(ConfigurationSettings.AppSettings["parity"]);
                    m_Port.StopBits = (StopBits)int.Parse(ConfigurationSettings.AppSettings["stopbits"]);
                    m_Port.DtrEnable = bool.Parse(ConfigurationSettings.AppSettings["dtr"]);

                    //meters initialized by secondary id (factory n) respond to 0xFD primary addr
                    Vp = new ComPort(m_Port, attempts, read_timeout, write_timeout);
                }
                else
                {
                    Vp = new TcpipPort(textBoxIp.Text, int.Parse(textBoxPort.Text), write_timeout, read_timeout, 0);
                }

                uint mAddr = 0xFD;
                string mPass = "";

                if (!initMeterDriver(mAddr, mPass, Vp)) return false;

                //check vp settings
                if (!checkBoxTcp.Checked)
                {
                    SerialPort tmpSP = Vp.getSerialPortObject();
                    if (!DemoMode)
                    {
                        toolStripStatusLabel2.Text = String.Format("{0}-{1}-{2}-DTR({3})-RTimeout: {4}ms", tmpSP.PortName, tmpSP.BaudRate, tmpSP.Parity, tmpSP.DtrEnable, read_timeout);
                    }
                    else
                    {
                        toolStripStatusLabel2.Text = String.Empty;
                    }                   
                }
                else
                {
                    toolStripStatusLabel2.Text = "TCP mode";
                }
               

                return true;
            }
            catch (Exception ex)
            {
                WriteToStatus("Ошибка создания виртуального порта: " + ex.Message);
                return false;
            }
        }
Пример #23
0
        public void Init(uint address, string pass, VirtualPort vp)
        {
            // перевод адреса в формат наладчика
            this.m_address = 0xFA000000 + Convert.ToUInt32(3 + address * 8);
            this.m_vport = vp;

            SetTypesForRead(GetTypesForCategory(CommonCategory.Current));
        }
Пример #24
0
            public ArchiveValueParser(byte[] d_array, uint m_address, VirtualPort vport)
            {
                this.m_address = m_address;
                this.m_vport = vport;

                WriteToLog("ArchiveValueParser - constructor start");
                crc_check = CRC8(d_array, d_array.Length);
                if (crc_check == 0x0)
                {

                    try
                    {
                        Array.Copy(d_array, id_index, id_bytes_arr, 0, id_bytes_arr.Length);
                        Array.Copy(d_array, date_index, date_bytes_arr, 0, date_bytes_arr.Length);
                        Array.Copy(d_array, energy_index, energy_bytes_arr, 0, energy_bytes_arr.Length);
                        Array.Copy(d_array, vol_index, vol_bytes_arr, 0, vol_bytes_arr.Length);
                        Array.Copy(d_array, time_on_index, time_on_bytes_arr, 0, time_on_bytes_arr.Length);
                        Array.Copy(d_array, time_err_index, time_err_bytes_arr, 0, time_err_bytes_arr.Length);

                        /*Во всех запросах кроме запросов на получение архивов используется формат данных LSB-MSB*/
                        if (BitConverter.IsLittleEndian)
                        {
                            Array.Reverse(id_bytes_arr);
                            Array.Reverse(energy_bytes_arr);
                            Array.Reverse(vol_bytes_arr);
                            Array.Reverse(time_on_bytes_arr);
                            Array.Reverse(time_err_bytes_arr);
                        }
                        //id записи
                        archVal.id = BitConverter.ToInt32(id_bytes_arr, 0);

                        //разбор даты [15 [14 05] 01 02] 01-02-15 14:05
                        string hexValue = date_bytes_arr[0].ToString("X");
                        int year = Convert.ToByte(hexValue, 16) + 2000;
                        hexValue = date_bytes_arr[1].ToString("X");
                        int hours = Convert.ToByte(hexValue, 16);
                        hexValue = date_bytes_arr[2].ToString("X");
                        int minutes = Convert.ToByte(hexValue, 16);
                        hexValue = date_bytes_arr[3].ToString("X");
                        int day = Convert.ToByte(hexValue, 16);
                        hexValue = date_bytes_arr[4].ToString("X");
                        int month = Convert.ToByte(hexValue, 16);
                        archVal.dt = new DateTime(year, month, day, hours, minutes, 0);

                        //разбор ресурсов
                        archVal.energy = ((float)BitConverter.ToUInt32(energy_bytes_arr, 0) / 1000);
                        archVal.volume = ((float)BitConverter.ToUInt32(vol_bytes_arr, 0) / 1000);

                        //разбор времени работы и вр.работы с ошибкой соответственно
                        archVal.timeOn = BitConverter.ToInt32(time_on_bytes_arr, 0);
                        archVal.timeErr = BitConverter.ToInt32(time_err_bytes_arr, 0);

                        isOk = true;
                    }
                    catch (Exception ex)
                    {
                        isOk = false;
                        WriteToLog("ArchiveValueReader: Ошибка разбора значений");
                    }
                }
                else
                {
                    WriteToLog("ArchiveValueReader: Ошибка подсчета контрольной суммы");
                }
            }