Beispiel #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (databaseClass != null)
            {
                DeviceRecord deviceRecord = new DeviceRecord();
                deviceRecord.DeviceID   = string.Format("{0}", rnd.Next(1, 5));
                deviceRecord.DeviceName = "Prietaiso pavadinimas";
                deviceRecord.Location   = "Kazkur";

                deviceRecord.AddValue(new DeviceValue(DateTime.Now, "DeviceTime", "", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 1000.0, "Energy", "MWh", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 100000.0, "Volume", "m3", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 10.0, "Flow", "m3/h", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 10.0, "Power", "kW", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 100.0, "T1", "°C", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 100.0, "T2", "°C", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 100.0, "dT", "°C", ""));
                deviceRecord.AddValue(new DeviceValue(rnd.NextDouble() * 100.0, "OnTime", "h", ""));
                deviceRecord.AddValue(new DeviceValue("0000001001101111", "Error", "", ""));

                databaseClass.AddNewRecord(deviceRecord);

                DatabaseClass.GetDeviceList(cbDeviceList);
                if (cbDeviceList.Items.Count > 0)
                {
                    cbDeviceList.SelectedIndex = 0;
                }
            }
        }
        public static void CheckReceivedData(ref byte[] buff, DeviceRecord deviceRecord)
        {
            int Size;

            if ((Size = MBusCheckSum(ref buff, false)) > 0)
            {
                DecodingMBUSData(ref buff, Size, deviceRecord);
            }
        }
Beispiel #3
0
 private void NuskaitytiDuomenys(DeviceRecord deviceRecord)
 {
     dataGridView1.Rows.Clear();
     label1.Text = "";
     if (deviceRecord.ValueCount > 0)
     {
         label1.Text = string.Format("Prietaiso gamyklinis numeris: {0:00000000}", deviceRecord.DeviceID);
         for (int i = 0; i < deviceRecord.ValueCount; i++)
         {
             dataGridView1.RowCount += 1;
             dataGridView1.Rows[i].Cells[0].Value = i + 1;
             dataGridView1.Rows[i].Cells[1].Value = deviceRecord.deviceValues[i].ParamName;
             dataGridView1.Rows[i].Cells[2].Value = string.Format("{0:0.000}", deviceRecord.deviceValues[i].Value);
             dataGridView1.Rows[i].Cells[3].Value = deviceRecord.deviceValues[i].ParamDim;
         }
     }
 }
Beispiel #4
0
        private void button5_Click(object sender, EventArgs e)
        {
            DeviceRecord deviceRecord = new DeviceRecord();

            byte[] test;
            switch (comboBox1.SelectedIndex)
            {
            case 0: test = MBusClass.TestData1;
                break;

            case 1: test = MBusClass.TestData2;
                break;

            case 2: test = MBusClass.TestData3;
                break;

            case 3: test = MBusClass.TestData4;
                break;

            default: return;
            }

            deviceRecord.DeviceName = "Prietaiso pavadinimas";
            deviceRecord.Location   = "Kazkur";
            MBusClass.CheckReceivedData(ref test, deviceRecord);
            if (deviceRecord.ValueCount > 0)
            {
                if (databaseClass != null)
                {
                    databaseClass.AddNewRecord(deviceRecord);
                    if (cbDeviceList.Items.Count > 0)
                    {
                        cbDeviceList.SelectedIndex = 0;
                    }
                }
                NuskaitytiDuomenys(deviceRecord);
            }
        }
        private static bool DecodingMBUSData(ref byte[] Data, int Size, DeviceRecord deviceRecord)
        {
            int ValueIndex = 0;

            deviceRecord.DeviceID = string.Format("{0}", Common.bcdTobin(ref Data, 7, 4));

            ValueIndex = 12 + 7;
            while (ValueIndex < Size - 2)
            {
                var ValueClass = new VIF_DIF_Value();
                ValueIndex = DecodingDIF(ref Data, ValueIndex, ValueClass);
                ValueIndex = DecodingVIF(ref Data, ValueIndex, ValueClass);
                if (ValueClass.DateTimeFormat > 0)
                {
                    switch (ValueClass.DateTimeFormat)
                    {
                    case 1:
                        ValueClass.Value = DecodeDateTypeF(ref Data, ValueIndex);
                        break;

                    case 2:
                        ValueClass.Value = DecodeDateTimeTypeF(ref Data, ValueIndex);
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    switch (ValueClass.ValueSize)
                    {
                    case 0: return(false);

                    case 1:
                        ValueClass.Value = string.Format("{0}", (Data[ValueIndex]) * ValueClass.Daug);
                        break;

                    case 2:
                        ValueClass.Value = string.Format("{0}", (System.BitConverter.ToUInt16(Data, ValueIndex)) * ValueClass.Daug);
                        break;

                    case 3:
                        ValueClass.Value = string.Format("{0}", (System.BitConverter.ToUInt32(Data, ValueIndex) & 0xFFFFFF) * ValueClass.Daug);
                        break;

                    case 4:
                        ValueClass.Value = string.Format("{0}", (System.BitConverter.ToUInt32(Data, ValueIndex)) * ValueClass.Daug);
                        break;

                    case 5:
                        try
                        {
                            ValueClass.Value = string.Format("{0}", (System.BitConverter.ToSingle(Data, ValueIndex)) * ValueClass.Daug);
                        }
                        catch (Exception)
                        {
                            ValueClass.Value = "";
                        }
                        ValueClass.ValueSize = 4;
                        break;

                    case 6:
                        ValueClass.Value = string.Format("{0}", (System.BitConverter.ToUInt64(Data, ValueIndex) & 0xFFFFFFFFFFFF) * ValueClass.Daug);
                        break;

                    case 7:
                        ValueClass.Value = string.Format("{0}", (System.BitConverter.ToUInt64(Data, ValueIndex)) * ValueClass.Daug);
                        break;

                    case 0x0D:
                        ValueClass.ValueSize = Data[ValueIndex];
                        break;

                    default:
                        if ((ValueClass.ValueSize & 0x08) > 0)
                        {
                            ValueClass.Value     = string.Format("{0}", (Common.bcdTobin(ref Data, ValueIndex, (ValueClass.ValueSize & 7))) * ValueClass.Daug);
                            ValueClass.ValueSize = (ValueClass.ValueSize & 0x07);
                        }
                        else
                        {
                            return(false);
                        }
                        break;
                    }
                }
                deviceRecord.AddValue(new DeviceValue(ValueClass.Value, ValueClass.Name, ValueClass.Dimention, ""));
                ValueIndex += ValueClass.ValueSize;
            }
            return(true);
        }
Beispiel #6
0
        /// <summary>
        /// Issaugomas duomenu irasas duomenu bazeje
        /// </summary>
        /// <param name="deviceRecord"></param>
        private void StoreNewRecord(DeviceRecord deviceRecord)
        {
            if (sqlConnection != null)
            {
                try
                {
                    int DevID = 0;

                    sqlConnection.Open();
                    // patikrinam prietaisu sarasa
                    using (SqlCommand sqlCommand = new SqlCommand("SELECT COUNT(*) AS RecordCount FROM DeviceList WHERE ([FabricationNumber] = @DeviceID)", sqlConnection))
                    {
                        SqlDataReader reader = null;
                        sqlCommand.Parameters.AddWithValue("@DeviceID", deviceRecord.DeviceID);
                        int Count = (int)sqlCommand.ExecuteScalar();

                        string queryStr = "";
                        if (Count == 0) // jeigu neradom sukuriam nauja prietaisa
                        {
                            queryStr = "INSERT INTO DeviceList (FabricationNumber, DeviceName, Location) VALUES(@FabricationNumber, @DeviceName, @Location); ";
                        }
                        queryStr += "SELECT * FROM DeviceList WHERE ([FabricationNumber] = @DeviceID)";
                        using (SqlCommand DevSql = new SqlCommand(queryStr, sqlConnection))
                        {
                            if (Count == 0) // jeigu neradom sukuriam nauja prietaisa
                            {
                                DevSql.Parameters.AddWithValue("@FabricationNumber", deviceRecord.DeviceID);
                                DevSql.Parameters.AddWithValue("@DeviceName", deviceRecord.DeviceName);
                                DevSql.Parameters.AddWithValue("@Location", deviceRecord.Location);
                            }
                            DevSql.Parameters.AddWithValue("@DeviceID", deviceRecord.DeviceID);
                            reader = DevSql.ExecuteReader();
                            reader.Read();
                            DevID = (int)reader["Id"];
                        }
                        reader.Close();
                    }
                    sqlConnection.Close();

                    if (DevID > 0)
                    {
                        int i = 0;
                        foreach (var item in deviceRecord.deviceValues)
                        {
                            int ParamID     = 0;
                            int DimID       = 0;
                            int ParamTypeID = 0;

                            sqlConnection.Open();
                            // patikrinam prietaisu parametru sarasa
                            using (SqlCommand sqlCommand = new SqlCommand("SELECT COUNT(*) AS RecordCount FROM Parameter WHERE ([ParameterName] = @ParameterName)", sqlConnection))
                            {
                                sqlCommand.Parameters.AddWithValue("@ParameterName", item.ParamName);
                                int Count = (int)sqlCommand.ExecuteScalar();

                                string queryStr = "";
                                if (Count == 0) // jeigu neradom sukuriam nauja prietaisa
                                {
                                    queryStr = "INSERT INTO Parameter (ParameterName) VALUES(@ParameterName); ";
                                }
                                queryStr += "SELECT * FROM Parameter WHERE ([ParameterName] = @ParameterID)";

                                SqlDataReader reader = null;
                                using (SqlCommand ParSql = new SqlCommand(queryStr, sqlConnection))
                                {
                                    if (Count == 0) // jeigu neradom sukuriam nauja prietaisa
                                    {
                                        ParSql.Parameters.AddWithValue("@ParameterName", item.ParamName);
                                    }
                                    ParSql.Parameters.AddWithValue("@ParameterID", item.ParamName);
                                    reader = ParSql.ExecuteReader();
                                }
                                reader.Read();
                                ParamID = (int)reader["Id"];
                                reader.Close();
                            }
                            sqlConnection.Close();

                            sqlConnection.Open();
                            // patikrinam prietaisu parametru dimensiju sarasa
                            using (SqlCommand sqlCommand = new SqlCommand("SELECT COUNT(*) AS RecordCount FROM Dimension WHERE ([DimensionName] = @DimensionName)", sqlConnection))
                            {
                                sqlCommand.Parameters.AddWithValue("@DimensionName", item.ParamDim);
                                int Count = (int)sqlCommand.ExecuteScalar();

                                string queryStr = "";
                                if (Count == 0) // jeigu neradom sukuriam nauja parametro dimensija
                                {
                                    queryStr = "INSERT INTO Dimension (DimensionName) VALUES(@DimensionName); ";
                                }
                                queryStr += "SELECT * FROM Dimension WHERE ([DimensionName] = @DimensionID)";

                                SqlDataReader reader = null;
                                using (SqlCommand DimSql = new SqlCommand(queryStr, sqlConnection))
                                {
                                    if (Count == 0) // jeigu neradom sukuriam nauja parametro dimensija
                                    {
                                        DimSql.Parameters.AddWithValue("@DimensionName", item.ParamDim);
                                    }
                                    DimSql.Parameters.AddWithValue("@DimensionID", item.ParamDim);
                                    reader = DimSql.ExecuteReader();
                                }
                                reader.Read();
                                DimID = (int)reader["Id"];
                                reader.Close();
                            }
                            sqlConnection.Close();

                            sqlConnection.Open();
                            // patikrinam prietaisu parametru tipu sarasa
                            using (SqlCommand sqlCommand = new SqlCommand("SELECT COUNT(*) AS RecordCount FROM DataType WHERE ([TypeName] = @TypeName)", sqlConnection))
                            {
                                sqlCommand.Parameters.AddWithValue("@TypeName", item.ParamType);
                                int Count = (int)sqlCommand.ExecuteScalar();

                                string queryStr = "";
                                if (Count == 0) // jeigu neradom sukuriam nauja parametro tipa
                                {
                                    queryStr = "INSERT INTO DataType (TypeName) VALUES(@TypeName); ";
                                }
                                queryStr += "SELECT * FROM DataType WHERE ([TypeName] = @TypeID)";

                                SqlDataReader reader = null;
                                using (SqlCommand TypeSql = new SqlCommand(queryStr, sqlConnection))
                                {
                                    if (Count == 0) // jeigu neradom sukuriam nauja parametro tipa
                                    {
                                        TypeSql.Parameters.AddWithValue("@TypeName", item.ParamType);
                                    }
                                    TypeSql.Parameters.AddWithValue("@TypeID", item.ParamType);
                                    reader = TypeSql.ExecuteReader();
                                }
                                reader.Read();
                                ParamTypeID = (int)reader["Id"];
                                reader.Close();
                            }
                            sqlConnection.Close();

                            if ((ParamID > 0) && (DimID > 0) && (ParamTypeID > 0))
                            {
                                sqlConnection.Open();
                                // Iraso nauja irasa
                                using (SqlCommand sqlCommand = new SqlCommand(
                                           "INSERT INTO DataCollection (ReadingTime,DeviceID,DataType,DeviceData,ParameterID,DimensionID,ParameterTypeID,ColumnIndex) " +
                                           "VALUES(@ReadingTime,@DeviceID,@DataType,@DeviceData,@ParameterID,@DimensionID,@ParameterTypeID,@ColumnIndex)", sqlConnection))
                                {
                                    sqlCommand.Parameters.AddWithValue("@ReadingTime", deviceRecord.dateTime);
                                    sqlCommand.Parameters.AddWithValue("@DeviceID", DevID);
                                    sqlCommand.Parameters.AddWithValue("@DataType", 0);
                                    sqlCommand.Parameters.AddWithValue("@DeviceData", item.Value);
                                    sqlCommand.Parameters.AddWithValue("@ParameterID", ParamID);
                                    sqlCommand.Parameters.AddWithValue("@DimensionID", DimID);
                                    sqlCommand.Parameters.AddWithValue("@ParameterTypeID", ParamTypeID);
                                    sqlCommand.Parameters.AddWithValue("@ColumnIndex", i);
                                    sqlCommand.ExecuteNonQuery();
                                }
                                sqlConnection.Close();
                            }
                            i++;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
Beispiel #7
0
 /// <summary>
 /// Pridedamas irasas i duomenu baze
 /// </summary>
 /// <param name="DeviceRecord"></param>
 public void AddNewRecord(DeviceRecord deviceRecord)
 {
     deviceRecord.dateTime = DateTime.Now;
     deviceRecordsArray.Add(deviceRecord);
 }