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); } }
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; } } }
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); }
/// <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); } } }
/// <summary> /// Pridedamas irasas i duomenu baze /// </summary> /// <param name="DeviceRecord"></param> public void AddNewRecord(DeviceRecord deviceRecord) { deviceRecord.dateTime = DateTime.Now; deviceRecordsArray.Add(deviceRecord); }