diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/bin/BRServer.dll b/bin/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/bin/BRServer.dll
+++ b/bin/BRServer.dll
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/bin/BRServer.dll b/bin/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/bin/BRServer.dll
+++ b/bin/BRServer.dll
Binary files differ
diff --git a/bin/BRServer.pdb b/bin/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/bin/BRServer.pdb
+++ b/bin/BRServer.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/bin/BRServer.dll b/bin/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/bin/BRServer.dll
+++ b/bin/BRServer.dll
Binary files differ
diff --git a/bin/BRServer.pdb b/bin/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/bin/BRServer.pdb
+++ b/bin/BRServer.pdb
Binary files differ
diff --git a/bin/BRServerTest.exe b/bin/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/bin/BRServerTest.exe
+++ b/bin/BRServerTest.exe
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/bin/BRServer.dll b/bin/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/bin/BRServer.dll
+++ b/bin/BRServer.dll
Binary files differ
diff --git a/bin/BRServer.pdb b/bin/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/bin/BRServer.pdb
+++ b/bin/BRServer.pdb
Binary files differ
diff --git a/bin/BRServerTest.exe b/bin/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/bin/BRServerTest.exe
+++ b/bin/BRServerTest.exe
Binary files differ
diff --git a/bin/BRServerTest.exe.config b/bin/BRServerTest.exe.config
index 915718e..c81d9f8 100644
--- a/bin/BRServerTest.exe.config
+++ b/bin/BRServerTest.exe.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/bin/BRServer.dll b/bin/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/bin/BRServer.dll
+++ b/bin/BRServer.dll
Binary files differ
diff --git a/bin/BRServer.pdb b/bin/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/bin/BRServer.pdb
+++ b/bin/BRServer.pdb
Binary files differ
diff --git a/bin/BRServerTest.exe b/bin/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/bin/BRServerTest.exe
+++ b/bin/BRServerTest.exe
Binary files differ
diff --git a/bin/BRServerTest.exe.config b/bin/BRServerTest.exe.config
index 915718e..c81d9f8 100644
--- a/bin/BRServerTest.exe.config
+++ b/bin/BRServerTest.exe.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/bin/BRServerTest.pdb b/bin/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/bin/BRServerTest.pdb
+++ b/bin/BRServerTest.pdb
Binary files differ
diff --git a/BRServer.BLL/BR.cs b/BRServer.BLL/BR.cs
index 918913b..b4af783 100644
--- a/BRServer.BLL/BR.cs
+++ b/BRServer.BLL/BR.cs
@@ -27,28 +27,29 @@
/// A method to insert a new Adapter
///
/// An adapter entity with information about the new adapter
- public void insert(List djs)
+ public void insert(Model.BR br)
{
- if (djs.Count <= 0)
- {
- return;
- }
-
IBR dal = DALFactory.BR.Create();
- dal.insert(djs);
+ dal.insert(br);
-
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
+ public void insertAlarm(Model.Alarm alarm)
{
IBR dal = DALFactory.BR.Create();
- dal.updateSequence(sequeceName);
+ dal.insertAlarm(alarm);
+ }
+
+ public Model.Config selectConfig(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ return dal.selectConfig(devcode);
+ }
+
+ public void updateConfigStatus(String devcode)
+ {
+ IBR dal = DALFactory.BR.Create();
+ dal.updateConfigStatus(devcode);
}
}
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
index 7331402..8936e6f 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.dll b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.dll
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.dll
Binary files differ
diff --git a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
+++ b/BRServer.BLL/obj/Debug/BRServer.BLL.pdb
Binary files differ
diff --git a/BRServer.DAL/BR.cs b/BRServer.DAL/BR.cs
index f424477..2cd50ab 100644
--- a/BRServer.DAL/BR.cs
+++ b/BRServer.DAL/BR.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
+using System.Data;
namespace BRServer.DAL
{
@@ -11,36 +12,16 @@
public static readonly string ConnectionStringOrderDistributedTransaction =
System.Configuration.ConfigurationManager.AppSettings["MySqlConnString"];
- // Static constants
- private const string TABLE_NAME = "BRGDF_DATA";
+ private const string SQL_INSERT_ELEC = "insert into data_elec (devcode,voltage1,voltage2,voltage3,voltage4,"
+ +"electricity1,electricity2,electricity3,electricity4,electricity5,electricity6,electricity7,electricity8,"
+ +"electricity9,electricity10,electricity11,electricity12,temperature,humidity,windspeed,uptime)"
+ +" values (@devcode,@voltage1,@voltage2,@voltage3,@voltage4,"
+ +"@electricity1,@electricity2,@electricity3,@electricity4,@electricity5,@electricity6,@electricity7,@electricity8,"
+ +"@electricity9,@electricity10,@electricity11,@electricity12,@temperature,@humidity,@windspeed,@uptime)";
- private const string COLUMN_DEVCODE = "DEVCODE";
- private const string COLUMN_LOGTIME = "LOGTIME";
- private const string COLUMN_CELL = "CELL";
- private const string COLUMN_VALUE = "OPENING";
- private const string COLUMN_UPTIME = "UPTIME";
-
- private const string PARM_DEVCODE = "@DEVCODE";
- private const string PARM_LOGTIME = "@LOGTIME";
- private const string PARM_CELL = "@CELL";
- private const string PARM_VALUE = "@OPENING";
- private const string PARM_UPTIME = "@UPTIME";
-
- private const string SQL_INSERT_CJ = "INSERT INTO " + TABLE_NAME
- + " (" + COLUMN_DEVCODE + ","
- + " " + COLUMN_LOGTIME + ","
- + " " + COLUMN_CELL + ","
- + " " + COLUMN_VALUE + ","
- + " " + COLUMN_UPTIME + ")"
- + " VALUES "
- + " (" + PARM_DEVCODE + ","
- + " " + PARM_LOGTIME + ","
- + " " + PARM_CELL + ","
- + " " + PARM_VALUE + ","
- + " " + PARM_UPTIME + ")";
-
-
- public void insert(List brs)
+ private const string SQL_INSERT_ALARM = "insert into alarm_elec (devcode,alarm) values (@devcode,@alarm)";
+
+ public void insert(Model.BR br)
{
MySqlTransaction tran = null;
using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
@@ -50,22 +31,20 @@
conn.Open();
tran = conn.BeginTransaction();
- foreach (Model.BR br in brs)
+ if (string.IsNullOrEmpty(br.DEVCODE))
{
- if (string.IsNullOrEmpty(br.DEVCODE))
- {
- throw new Exception("设备ID为空!");
- }
-
- MySqlParameter[] parms = GetAdapterParameters();
- SetAdapterParameters(parms, br);
-
- MySqlCommand cmd = new MySqlCommand(SQL_INSERT_CJ, conn);
- foreach (MySqlParameter pram in parms)
- cmd.Parameters.Add(pram);
- cmd.ExecuteNonQuery();
+ throw new Exception("设备ID为空!");
}
+ MySqlParameter[] parms = GetAdapterParameters();
+ SetAdapterParameters(parms, br);
+
+ MySqlCommand cmd = new MySqlCommand(SQL_INSERT_ELEC, conn);
+ foreach (MySqlParameter pram in parms)
+ cmd.Parameters.Add(pram);
+ cmd.ExecuteNonQuery();
+
+
tran.Commit();
}
catch (Exception e)
@@ -79,47 +58,6 @@
}
}
- /**
- *sequeceName:需要更新的序列名称
- *key:主键字段名称
- *tableName:表名称
- */
- public void updateSequence(String sequeceName)
- {
- MySqlTransaction tran = null;
- using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
- {
- try
- {
- conn.Open();
- tran = conn.BeginTransaction();
-
- String SQL_DROP_SEQUENCE = "ALTER TABLE " + TABLE_NAME +" DROP "+ sequeceName;
- MySqlCommand cmd1 = new MySqlCommand(SQL_DROP_SEQUENCE, conn);
- cmd1.ExecuteNonQuery();
-
- String SQL_ADD_SEQUENC = "ALTER TABLE " + TABLE_NAME + " ADD " + sequeceName +
- " INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (" + sequeceName + ")";
-
- MySqlCommand cmd2 = new MySqlCommand(SQL_ADD_SEQUENC, conn);
- cmd2.ExecuteNonQuery();
-
- tran.Commit();
- }
- catch (Exception e)
- {
- if (null != tran)
- {
- tran.Rollback();
- }
- throw (e);
- }
- }
- }
-
-
-
-
///
/// An internal function to get the database parameters
///
@@ -131,11 +69,27 @@
if (parms == null)
{
parms = new MySqlParameter[]{
- new MySqlParameter(PARM_DEVCODE, MySqlDbType.VarChar, 255),
- new MySqlParameter(PARM_LOGTIME, MySqlDbType.DateTime),
- new MySqlParameter(PARM_CELL, MySqlDbType.VarChar,255),
- new MySqlParameter(PARM_VALUE, MySqlDbType.Float,20),
- new MySqlParameter(PARM_UPTIME, MySqlDbType.DateTime)
+ new MySqlParameter("@devcode", MySqlDbType.VarChar, 20),
+ new MySqlParameter("@voltage1", MySqlDbType.Float),
+ new MySqlParameter("@voltage2", MySqlDbType.Float),
+ new MySqlParameter("@voltage3", MySqlDbType.Float),
+ new MySqlParameter("@voltage4", MySqlDbType.Float),
+ new MySqlParameter("@electricity1", MySqlDbType.Float),
+ new MySqlParameter("@electricity2", MySqlDbType.Float),
+ new MySqlParameter("@electricity3", MySqlDbType.Float),
+ new MySqlParameter("@electricity4", MySqlDbType.Float),
+ new MySqlParameter("@electricity5", MySqlDbType.Float),
+ new MySqlParameter("@electricity6", MySqlDbType.Float),
+ new MySqlParameter("@electricity7", MySqlDbType.Float),
+ new MySqlParameter("@electricity8", MySqlDbType.Float),
+ new MySqlParameter("@electricity9", MySqlDbType.Float),
+ new MySqlParameter("@electricity10", MySqlDbType.Float),
+ new MySqlParameter("@electricity11", MySqlDbType.Float),
+ new MySqlParameter("@electricity12", MySqlDbType.Float),
+ new MySqlParameter("@temperature", MySqlDbType.Float),
+ new MySqlParameter("@humidity", MySqlDbType.Float),
+ new MySqlParameter("@windspeed", MySqlDbType.Float),
+ new MySqlParameter("@uptime", MySqlDbType.DateTime)
};
}
@@ -152,41 +106,138 @@
{
parms[0].Value = br.DEVCODE;
- if (null != br.LOGTIME)
+ int i = 1;
+ foreach(float voltage in br.VOLTAGES)
{
- parms[1].Value = br.LOGTIME;
- }
- else
- {
- parms[1].Value = DBNull.Value;
+ parms[i++].Value = voltage;
}
- if (null != br.CELL)
+ int j = 5;
+ foreach (float electricity in br.ELECTRICITYS)
{
- parms[2].Value = br.CELL;
- }
- else
- {
- parms[2].Value = DBNull.Value;
+ parms[j++].Value = electricity;
}
- if (null != br.OPENING)
- {
- parms[3].Value = br.OPENING;
- }
- else
- {
- parms[3].Value = DBNull.Value;
- }
+ parms[17].Value = br.TEMPERATURE;
+ parms[18].Value = br.HUMIDITY;
+ parms[19].Value = br.WINDSPEED;
+ parms[20].Value = br.UPTIME;
+ }
- if (null != br.UPTIME)
+
+ public void insertAlarm(Model.Alarm alarm)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
{
- parms[4].Value = br.UPTIME;
- }
- else
- {
- parms[4].Value = DBNull.Value;
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(alarm.DEVCODE))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "insert into alarm_elec (devcode,alarm) values ("
+ + alarm.DEVCODE + ",'" + alarm.ALARM + "')";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
}
}
+
+
+ public Model.Config selectConfig(String devcode)
+ {
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ MySqlDataReader reader = null;
+
+ try
+ {
+ conn.Open();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "select * from config_elec where status = '0' and devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ reader = cmd.ExecuteReader();
+
+ Model.Config config = new Model.Config();
+ while (reader.Read())
+ {
+ if (reader.HasRows)
+ {
+ config.DEVCODE = reader.GetString(1);
+ config.IP = reader.IsDBNull(2) ? null : reader.GetString(2);
+ config.PORT = reader.IsDBNull(3) ? (UInt16)0 : reader.GetUInt16(3);
+ config.INTERVAL = reader.IsDBNull(4) ? (UInt16)0 : reader.GetUInt16(4);
+ }
+ }
+ return config;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ finally
+ {
+ reader.Close();
+ conn.Close();
+ }
+ }
+ }
+
+
+ public void updateConfigStatus(String devcode)
+ {
+ MySqlTransaction tran = null;
+ using (MySqlConnection conn = new MySqlConnection(ConnectionStringOrderDistributedTransaction))
+ {
+ try
+ {
+ conn.Open();
+ tran = conn.BeginTransaction();
+
+ if (string.IsNullOrEmpty(devcode))
+ {
+ throw new Exception("设备ID为空!");
+ }
+
+ string sql = "update config_elec set status = '1' where devcode='" + devcode + "'";
+
+ MySqlCommand cmd = new MySqlCommand(sql, conn);
+ cmd.ExecuteNonQuery();
+
+ tran.Commit();
+ }
+ catch (Exception e)
+ {
+ if (null != tran)
+ {
+ tran.Rollback();
+ }
+ throw (e);
+ }
+ }
+ }
+
}
}
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
index 063f696..6acaddd 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.dll b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.dll
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.dll
Binary files differ
diff --git a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
+++ b/BRServer.DAL/obj/Debug/BRServer.DAL.pdb
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
index 04b4f9b..ca08218 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.dll
Binary files differ
diff --git a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
+++ b/BRServer.DALFactory/obj/Debug/BRServer.DALFactory.pdb
Binary files differ
diff --git a/BRServer.IDAL/IBR.cs b/BRServer.IDAL/IBR.cs
index 9f8cf44..92c42d7 100644
--- a/BRServer.IDAL/IBR.cs
+++ b/BRServer.IDAL/IBR.cs
@@ -5,8 +5,9 @@
{
public interface IBR
{
- void insert(List djs);
- void updateSequence(String sequeceName);
- //int queryCountByDevAndUpTime(String devCode, DateTime upTime);
+ void insert(Model.BR br);
+ void insertAlarm(Model.Alarm alarm);
+ Model.Config selectConfig(String devcode);
+ void updateConfigStatus(String devcode);
}
}
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
index 930f397..de25524 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.dll
Binary files differ
diff --git a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
+++ b/BRServer.IDAL/obj/Debug/BRServer.IDAL.pdb
Binary files differ
diff --git a/BRServer.Model/Alarm.cs b/BRServer.Model/Alarm.cs
new file mode 100644
index 0000000..82862c2
--- /dev/null
+++ b/BRServer.Model/Alarm.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Alarm
+ {
+ private string devCode;
+ private string alarm;
+
+ public string DEVCODE
+ {
+ get { return devCode; }
+ set { devCode = value; }
+ }
+
+ public string ALARM
+ {
+ get { return alarm; }
+ set { alarm = value; }
+ }
+
+ }
+}
diff --git a/BRServer.Model/BR.cs b/BRServer.Model/BR.cs
index 9ba29ae..8942e92 100644
--- a/BRServer.Model/BR.cs
+++ b/BRServer.Model/BR.cs
@@ -7,18 +7,14 @@
{
public class BR
{
- private long dbId;
private string devCode;
- private DateTime logTime;
- private string cell;
- private float opening;
+ private List voltages = new List();
+ private List electricitys = new List();
+ private float? temperature;
+ private float? humidity;
+ private float? windspeed;
private DateTime upTime;
- public long DBID
- {
- get { return dbId; }
- set { dbId = value; }
- }
public string DEVCODE
{
@@ -26,22 +22,34 @@
set { devCode = value; }
}
- public DateTime LOGTIME
+ public List VOLTAGES
{
- get { return logTime; }
- set { logTime = value; }
+ get { return voltages; }
+ set { voltages = value; }
}
- public string CELL
+ public List ELECTRICITYS
{
- get { return cell; }
- set { cell = value; }
+ get { return electricitys; }
+ set { electricitys = value; }
}
- public float OPENING
+ public float? TEMPERATURE
{
- get { return opening; }
- set { opening = value; }
+ get { return temperature; }
+ set { temperature = value; }
+ }
+
+ public float? HUMIDITY
+ {
+ get { return humidity; }
+ set { humidity = value; }
+ }
+
+ public float? WINDSPEED
+ {
+ get { return windspeed; }
+ set { windspeed = value; }
}
public DateTime UPTIME
diff --git a/BRServer.Model/BRServer.Model.csproj b/BRServer.Model/BRServer.Model.csproj
index 282cd2c..8cc23af 100644
--- a/BRServer.Model/BRServer.Model.csproj
+++ b/BRServer.Model/BRServer.Model.csproj
@@ -40,7 +40,9 @@
+
+
diff --git a/BRServer.Model/Config.cs b/BRServer.Model/Config.cs
new file mode 100644
index 0000000..2b7de93
--- /dev/null
+++ b/BRServer.Model/Config.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer.Model
+{
+ public class Config
+ {
+ private string devcode;
+ private string ip;
+ private UInt16 port;
+ private UInt16 interval;
+ private bool status;
+
+ public string DEVCODE
+ {
+ get { return devcode; }
+ set { devcode = value; }
+ }
+
+ public string IP
+ {
+ get { return ip; }
+ set { ip = value; }
+ }
+
+ public UInt16 PORT
+ {
+ get { return port; }
+ set { port = value; }
+ }
+
+ public UInt16 INTERVAL
+ {
+ get { return interval; }
+ set { interval = value; }
+ }
+
+ public bool STATUS
+ {
+ get { return status; }
+ set { status = value; }
+ }
+ }
+}
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
index 28abe26..7803ceb 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
+++ b/BRServer.Model/obj/Debug/BRServer.Model.csproj.FileListAbsolute.txt
@@ -2,4 +2,3 @@
E:\gwq\BRServer\bin\BRServer.Model.pdb
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.dll
E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.pdb
-E:\gwq\BRServer\BRServer.Model\obj\Debug\BRServer.Model.csprojResolveAssemblyReference.cache
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.dll b/BRServer.Model/obj/Debug/BRServer.Model.dll
index 468d516..9536917 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.dll
+++ b/BRServer.Model/obj/Debug/BRServer.Model.dll
Binary files differ
diff --git a/BRServer.Model/obj/Debug/BRServer.Model.pdb b/BRServer.Model/obj/Debug/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/BRServer.Model/obj/Debug/BRServer.Model.pdb
+++ b/BRServer.Model/obj/Debug/BRServer.Model.pdb
Binary files differ
diff --git a/BRServer.suo b/BRServer.suo
index 0f63b41..5ae485c 100644
--- a/BRServer.suo
+++ b/BRServer.suo
Binary files differ
diff --git a/BRServer.v12.suo b/BRServer.v12.suo
new file mode 100644
index 0000000..5a6d2aa
--- /dev/null
+++ b/BRServer.v12.suo
Binary files differ
diff --git a/BRServer/BRServer.csproj b/BRServer/BRServer.csproj
index cbdd2ae..f2f5253 100644
--- a/BRServer/BRServer.csproj
+++ b/BRServer/BRServer.csproj
@@ -61,20 +61,27 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -84,9 +91,12 @@
-
-
+
+
+
+
+
diff --git a/BRServer/CasicCmd.cs b/BRServer/CasicCmd.cs
index cb72b09..54fe3d3 100644
--- a/BRServer/CasicCmd.cs
+++ b/BRServer/CasicCmd.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
+using BRServer.Model;
namespace BRServer
{
@@ -26,12 +27,9 @@
case 0:
devType = "未知设备";
break;
- case 21:
- devType = "北燃沉降监测仪";
- break;
- case 22:
- devType = "北燃轨道阀回讯装置";
- break;
+ case 27:
+ devType = "电缆护套接地电流在线监测装置";
+ break;
default:
devType = "undefiend";
break;
@@ -119,18 +117,6 @@
return tags;
}
- private CellTag getCellTag(List tags, CasicSession session)
- {
- foreach (Tag tag in tags)
- {
- if (tag != null && tag is CellTag)
- {
- return (CellTag)tag;
- }
- }
- return null;
- }
-
private SystemDateTag getSystemDateTag(List tags)
{
foreach (Tag tag in tags)
@@ -145,16 +131,6 @@
public override void ExecuteCommand(CasicSession session, StringRequestInfo requestInfo)
{
- //电信平台需返回200响应码
- session.Send("HTTP/1.1 200 OK\r\n\r\n\r\n");
- session.Close();
-
- if (requestInfo.Parameters[0] == "CRCERROR")
- {
- session.Logger.Error("CRC校验不通过,上传的数据为:" + requestInfo.Parameters[1]);
- return;
- }
-
//TODO: construct the receving casic data
String preamble = requestInfo.Parameters[0];
String version = requestInfo.Parameters[1];
@@ -165,7 +141,6 @@
String pduType = requestInfo.Parameters[6];
String seq = requestInfo.Parameters[7];
String settings = requestInfo.Parameters[8];
- String deviceId_Telecom = requestInfo.Parameters[9];
//print the receving data
String devType = getDeviceTypeByPdu(pduType);
@@ -179,30 +154,57 @@
session.Logger.Info("操作类型:" + operType);
session.Logger.Info("序列seq:" + seq);
+ //判断是返回的设置确认数据帧
+ if (operType == "SetResponse")
+ {
+ BLL.BR br = BLL.BR.getInstance();
+ br.updateConfigStatus(deviceId);
+ return;
+ }
+
+
+ BR elec = new BR();//设备数据表
+ elec.DEVCODE = deviceId;
+
List tags = this.getTags(settings, session);
- CellTag cellTag = this.getCellTag(tags, session);
- SystemDateTag systemDateTag = this.getSystemDateTag(tags);
try
{
- //TODO LIST:处理主动上报的数据、参数查、询参数设置
+ //TODO LIST:处理主动上报的数据、参数查询、参数设置
TagHandler systemDateHandler = new SystemDateTagHandler();
- TagHandler cellTagHandler = new CellTagHandler();
- TagHandler BRTagHandler = new BRTagHandler();
+ TagHandler voltageTagHandler = new VoltageTagHandler();
+ TagHandler electricityTagHandler = new ElectricityTagHandler();
+ TagHandler tempTagHandler = new TempTagHandler();
+ TagHandler humiTagHandler = new HumiTagHandler();
+ TagHandler windspeedTagHandler = new WindSpeedTagHandler();
+ TagHandler sensorException0TagHandler = new SensorException0TagHandler();
+ TagHandler sensorException1TagHandler = new SensorException1TagHandler();
+ TagHandler sensorException2TagHandler = new SensorException2TagHandler();
+ TagHandler sensorException3TagHandler = new SensorException3TagHandler();
- systemDateHandler.NextHandler = cellTagHandler;
- cellTagHandler.NextHandler = BRTagHandler;
+ systemDateHandler.NextHandler = voltageTagHandler;
+ voltageTagHandler.NextHandler = electricityTagHandler;
+ electricityTagHandler.NextHandler = tempTagHandler;
+ tempTagHandler.NextHandler = humiTagHandler;
+ humiTagHandler.NextHandler = windspeedTagHandler;
+ windspeedTagHandler.NextHandler = sensorException0TagHandler;
+ sensorException0TagHandler.NextHandler = sensorException1TagHandler;
+ sensorException1TagHandler.NextHandler = sensorException2TagHandler;
+ sensorException2TagHandler.NextHandler = sensorException3TagHandler;
foreach (Tag tag in tags)
{
//采用责任链的方式来处理各个tag
- systemDateHandler.handleTag(tag, deviceId, cellTag,
- systemDateTag, session);
+ systemDateHandler.handleTag(session, tag, elec);
}
- //回复校时信息
+ BLL.BR br = BLL.BR.getInstance();
+ br.insert(elec);
+
+
+ //回复校时、配置信息
CasicSender sender = new CasicSender(null);
- sender.doSendTimeConfig(deviceId, version, devType, session, "3", deviceId_Telecom);
+ sender.doSendTimeConfig(session, deviceId);
}
catch (Exception e)
{
diff --git a/BRServer/CasicReceiveFilter.cs b/BRServer/CasicReceiveFilter.cs
new file mode 100644
index 0000000..91a44dd
--- /dev/null
+++ b/BRServer/CasicReceiveFilter.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SuperSocket.Facility.Protocol;
+using SuperSocket.SocketBase.Protocol;
+using SuperSocket.Common;
+
+namespace BRServer
+{
+
+ public class CasicReceiveFilter : FixedHeaderReceiveFilter
+ {
+ public CasicReceiveFilter()
+ : base(4)
+ {
+
+ }
+
+ protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
+ {
+ int tagLength = (int)header[offset + 2] * 256 + (int)header[offset + 3] - 12;
+ return tagLength + 14 + (tagLength % 8 == 0 ? 0 : (8 - tagLength % 8));
+ }
+
+
+ protected override StringRequestInfo ResolveRequestInfo(ArraySegment header, byte[] bodyBuffer, int offset, int length)
+ {
+ byte[] tmpHead = header.Array;
+ byte[] tmpBody = bodyBuffer.CloneRange(offset, length);
+
+ byte[] src = new byte[tmpHead.Length + tmpBody.Length];
+
+ tmpHead.CopyTo(src, 0);
+ tmpBody.CopyTo(src, tmpHead.Length);
+
+ String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");
+ //TODO: construct the receving casic data
+ String preamble = data.Substring(0, 2);
+ String version = data.Substring(2, 2);
+ String leng = data.Substring(4, 4);
+ String deviceId = data.Substring(8, 12);
+
+ String routeFlag = data.Substring(20, 2);
+ String dstNodeAddr = data.Substring(22, 4);
+ String pduType = data.Substring(26, 4);
+ String seq = data.Substring(30, 2);
+
+ //对tag进行TEA解密
+ Byte[] dat = new Byte[data.Length / 2 - 18];
+ Array.Copy(src, 16, dat, 0, data.Length / 2 - 18);
+
+ TEA.decrypt(ref dat, dat.Length);
+ String settings = BitConverter.ToString(dat, 0, dat.Length).Replace("-", "").Substring(0, Convert.ToInt32(leng, 16) * 2 - 12 * 2);
+
+ String result = "Casic:" + preamble + "," + version + "," +
+ leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
+ seq + "," + settings;
+
+ BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");
+ return m_Parser.ParseRequestInfo(result);
+ }
+ }
+
+}
diff --git a/BRServer/CasicSender.cs b/BRServer/CasicSender.cs
index 381267e..d0030d0 100644
--- a/BRServer/CasicSender.cs
+++ b/BRServer/CasicSender.cs
@@ -11,22 +11,22 @@
/*
* 航天二院最新服务器协议
*/
- public class CasicSender
+ public class CasicSender
{
- private TelecomServer server;
+ private CasicServer server;
- public CasicSender(TelecomServer server)
+ public CasicSender(CasicServer server)
{
this.server = server;
}
- public bool doSendTimeConfig(String devCode, String ver, String typeName, CasicSession session, String flag, String deviceId_Telecom)
+ public void doSendTimeConfig(CasicSession session, String devCode)
{
//TODO: construct the receving casic data
String preamble = "A3";
byte btpreamble = byte.Parse(preamble, System.Globalization.NumberStyles.HexNumber);
- String version = ver;
+ String version = "20";
byte btVersion = byte.Parse(version, System.Globalization.NumberStyles.HexNumber);
String deviceId = devCode;//6个字节
@@ -38,7 +38,7 @@
btDevId[4] = byte.Parse(deviceId.Substring(8, 2), System.Globalization.NumberStyles.HexNumber);
btDevId[5] = byte.Parse(deviceId.Substring(10, 2), System.Globalization.NumberStyles.HexNumber);
- String routeFlag = flag;
+ String routeFlag = "03";
byte btRouteFlag = byte.Parse(routeFlag, System.Globalization.NumberStyles.HexNumber);
String dstNodeAddr = devCode.Substring(8);//2个字节 ** ****** ****
@@ -50,24 +50,41 @@
byte btSeq = byte.Parse(seq, System.Globalization.NumberStyles.HexNumber);
byte[] btPdu = new byte[2]; //2个字节
- byte[] tag = null;
+ btPdu[0] = 0x03;
+ btPdu[1] = 0x9B;
- switch (typeName)
+
+ byte[] tempTag = new byte[256];//为了组tag的临时变量
+ int flag = 0;//tag中有效字节标识位
+
+ byte[] timeTag = this.getTimeTag();
+ timeTag.CopyTo(tempTag, flag);
+ flag += timeTag.Length;
+
+ BLL.BR br = BLL.BR.getInstance();
+ Model.Config config = br.selectConfig(devCode);
+
+ if (config != null)
{
- case "北燃沉降监测仪":
- btPdu[0] = 0x05;
- btPdu[1] = 0x95;
- tag = this.getTimeTag();
- break;
- case "北燃轨道阀回讯装置":
- btPdu[0] = 0x03;
- btPdu[1] = 0x96;
- tag = this.getTimeTag();
- break;
- default:
- break;
+ byte[] ipportTag = this.getIpPortTag(config.IP, config.PORT);
+ if (ipportTag != null)
+ {
+ ipportTag.CopyTo(tempTag, flag);
+ flag += ipportTag.Length;
+ }
+
+ byte[] intervalTag = this.getIntervalTag(config.INTERVAL);
+ if (intervalTag != null)
+ {
+ intervalTag.CopyTo(tempTag, flag);
+ flag += intervalTag.Length;
+ }
}
+ byte[] tag = new byte[flag];
+ Array.Copy(tempTag, 0, tag, 0, flag);
+
+
int totalLen = 6 + 1 + 2 + 2 + 1 + tag.Length;
byte[] btLens = new byte[2];
byte[] btlens0 = BitConverter.GetBytes(totalLen);
@@ -105,7 +122,6 @@
result[15] = btSeq;
enTag.CopyTo(result, 16);
-
//增加CRC校验
String strCrc = StringUtil.To16HexString(String.Format("{0:X}", (int)CodeUtils.CRC16_AD(result)));
byte[] btcrc = { CodeUtils.String2Byte(strCrc.Substring(0, 2)), CodeUtils.String2Byte(strCrc.Substring(2, 2)) };
@@ -113,17 +129,8 @@
result.CopyTo(afcrc, 0);
btcrc.CopyTo(afcrc, result.Length);
- String strBase64Value = Convert.ToBase64String(afcrc);
- //TODO:发送数据
- int ret = SendNACommand(deviceId_Telecom, strBase64Value, session);
- if (ret != 201)
- {
- session.Logger.Info("回复校时信息失败,返回的Http状态码:" + ret);
- return false;
- }
-
- session.Logger.Info("回复校时信息成功 设备类型:" + typeName + " 设备编号:" + devCode + " 回复校时信息:" + strBase64Value);
- return true;
+ session.Send(afcrc, 0, afcrc.Length);
+ session.Logger.Info("回复校时信息:" + BitConverter.ToString(afcrc).Replace("-", ""));
}
@@ -139,44 +146,55 @@
return result;
}
- private int SendNACommand(String deviceId_Telecom, String strValue, CasicSession session)
+ private byte[] getIpPortTag(String ip, int port)
{
- NASDK currsdk = new NASDK(ConfigurationManager.AppSettings["TelecomIP"],
- Convert.ToInt32(ConfigurationManager.AppSettings["TelecomPORT"]),
- ConfigurationManager.AppSettings["AppID"],
- ConfigurationManager.AppSettings["AppKey"],
- GetWindowsServiceInstallPath(ConfigurationManager.AppSettings["ServiceName"]) + "\\outgoing.CertwithKey.pkcs12",
- "IoM@1234");
- TokenResult token = currsdk.getToken();
- if (token == null)
+ if (!string.IsNullOrEmpty(ip) && port != 0)
{
- session.Logger.Error("获取Token失败!");
- return 0;
+ //修改ip 0x10000022
+ byte[] ipOid = { 0x10, 0x00, 0x00, 0x22 };
+ byte[] ipValue = System.Text.Encoding.Default.GetBytes(ip);
+ byte[] ipLen = BitConverter.GetBytes((short)ipValue.Length);
+ Array.Reverse(ipLen);
+
+ //修改port 0x10000023
+ byte[] portOid = { 0x10, 0x00, 0x00, 0x23 };
+ byte[] portValue = System.Text.Encoding.Default.GetBytes(port.ToString());
+ byte[] portLen = BitConverter.GetBytes((short)portValue.Length);
+ Array.Reverse(portLen);
+
+ byte[] tag = new byte[4 + 2 + ipValue.Length + 4 + 2 + portValue.Length];
+
+ ipOid.CopyTo(tag, 0);
+ ipLen.CopyTo(tag, 4);
+ ipValue.CopyTo(tag, 6);
+
+ portOid.CopyTo(tag, 6 + ipValue.Length);
+ portLen.CopyTo(tag, 10 + ipValue.Length);
+ portValue.CopyTo(tag, 12 + ipValue.Length);
+
+ return tag;
}
- string strToken = token.accessToken;
- CommandPara cp = new CommandPara();
- cp.paraName = "Value";
- cp.paraValue = strValue;
-
- int result = currsdk.sendCommand(strToken, deviceId_Telecom, null, "Config", "Config", cp,session);
- return result;
+ return null;
}
- ///
- /// 获取服务安装路径
- ///
- ///
- ///
- public static string GetWindowsServiceInstallPath(string ServiceName)
+ private byte[] getIntervalTag(int interval)
{
- string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
- string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
- //替换掉双引号
- path = path.Replace("\"", string.Empty);
+ if (interval != 0)
+ {
+ //上传周期
+ byte[] tag = { 0x10, 0x00, 0x00, 0x62,
+ 0x00, 0x02,
+ 0x00, 0x00 };
- FileInfo fi = new FileInfo(path);
- return fi.Directory.ToString();
+ byte[] value = BitConverter.GetBytes(interval);
+ tag[6] = value[1];
+ tag[7] = value[0];
+
+ return tag;
+ }
+
+ return null;
}
}
diff --git a/BRServer/CasicServer.cs b/BRServer/CasicServer.cs
new file mode 100644
index 0000000..a17fe12
--- /dev/null
+++ b/BRServer/CasicServer.cs
@@ -0,0 +1,14 @@
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using System.Text;
+
+namespace BRServer
+{
+ public class CasicServer : AppServer
+ {
+ public CasicServer()
+ : base(new DefaultReceiveFilterFactory())
+ {
+ }
+ }
+}
diff --git a/BRServer/DefaultTagHandler.cs b/BRServer/DefaultTagHandler.cs
index be13008..650a86f 100644
--- a/BRServer/DefaultTagHandler.cs
+++ b/BRServer/DefaultTagHandler.cs
@@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Collections;
+using BRServer.Model;
namespace BRServer
{
@@ -13,38 +15,9 @@
}
//TODO LIST:默认打印出来未处理的tag信息
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session)
+ public override void execute(CasicSession session, Tag tag, BR br)
{
- switch(tag.Oid)
- {
- case "10000022":
- //TODO LIST:处理ip的逻辑
- String ad_ip = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器IP TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue + " IP:" + ad_ip);
- break;
- case "10000023":
- //TODO LIST:处理端口的逻
- String ad_port = getInfoFromStrEncoding(tag);
- session.Logger.Info("服务器端口 TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value" + tag.DataValue + " PORT:" + ad_port);
- break;
- default:
- session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
- break;
- }
-
- }
-
- //字符串最后结尾追加了一个
- private String getInfoFromStrEncoding(Tag tag)
- {
- byte[] src = new byte[tag.Len-1];
- for (int j = 0; j < tag.Len-1; )
- {
- src[j] = byte.Parse(tag.DataValue.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
- j = j + 2;
- }
- return Encoding.ASCII.GetString(src, 0, src.Length);
+ session.Logger.Info("未处理TAG" + " oid:" + tag.Oid + " len:" + tag.Len + " value:" + tag.DataValue);
}
}
}
diff --git a/BRServer/ElectricityTagHandler.cs b/BRServer/ElectricityTagHandler.cs
new file mode 100644
index 0000000..b3fc390
--- /dev/null
+++ b/BRServer/ElectricityTagHandler.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+
+namespace BRServer
+{
+ public class ElectricityTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 14 ? true : false;
+ }
+
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float elec = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(elec))
+ {
+ br.ELECTRICITYS.Add(null);
+ }
+ else
+ {
+ br.ELECTRICITYS.Add(elec);
+ }
+
+ session.Logger.Info("电流数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + elec);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/HumiTagHandler.cs b/BRServer/HumiTagHandler.cs
new file mode 100644
index 0000000..f0e686b
--- /dev/null
+++ b/BRServer/HumiTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class HumiTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 17 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float humi = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(humi))
+ {
+ br.HUMIDITY = null;
+ }
+ else
+ {
+ br.HUMIDITY = humi;
+ }
+
+ session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + humi);
+
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException0Tag.cs b/BRServer/SensorException0Tag.cs
new file mode 100644
index 0000000..e20dd39
--- /dev/null
+++ b/BRServer/SensorException0Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException0Tag:Tag
+ {
+ public static String SENSOR_EXCEP0_TAG_OID = "60000009";
+
+ public int state;
+
+ public SensorException0Tag()
+ {
+
+ }
+
+ public SensorException0Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException0TagHandler.cs b/BRServer/SensorException0TagHandler.cs
new file mode 100644
index 0000000..cb9d5e9
--- /dev/null
+++ b/BRServer/SensorException0TagHandler.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using log4net.Filter;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException0TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException0Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br)
+ {
+ SensorException0Tag sensorException0 = tag as SensorException0Tag;
+ int state = sensorException0.state;
+
+ session.Logger.Info("传感器1上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器1故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器1未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException1Tag.cs b/BRServer/SensorException1Tag.cs
new file mode 100644
index 0000000..a45918c
--- /dev/null
+++ b/BRServer/SensorException1Tag.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException1Tag:Tag
+ {
+ public static String SENSOR_EXCEP1_TAG_OID = "6000000A";
+
+ public int state;
+
+ public SensorException1Tag()
+ {
+
+ }
+
+ public SensorException1Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+}
diff --git a/BRServer/SensorException1TagHandler.cs b/BRServer/SensorException1TagHandler.cs
new file mode 100644
index 0000000..e57c4d4
--- /dev/null
+++ b/BRServer/SensorException1TagHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ class SensorException1TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException1Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException1Tag sensorException1 = tag as SensorException1Tag;
+ int state = sensorException1.state;
+
+ session.Logger.Info("传感器2上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器2故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器2未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+
+ }
+}
diff --git a/BRServer/SensorException2Tag.cs b/BRServer/SensorException2Tag.cs
new file mode 100644
index 0000000..275fd54
--- /dev/null
+++ b/BRServer/SensorException2Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException2Tag:Tag
+ {
+ public static String SENSOR_EXCEP2_TAG_OID = "6000000B";
+
+ public int state;
+
+ public SensorException2Tag()
+ {
+
+ }
+
+ public SensorException2Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException2TagHandler.cs b/BRServer/SensorException2TagHandler.cs
new file mode 100644
index 0000000..b60d74e
--- /dev/null
+++ b/BRServer/SensorException2TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException2TagHandler:TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException2Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag, BR br )
+ {
+ SensorException2Tag sensorException2 = tag as SensorException2Tag;
+ int state = sensorException2.state;
+
+ session.Logger.Info("传感器3上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器3故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器3未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SensorException3Tag.cs b/BRServer/SensorException3Tag.cs
new file mode 100644
index 0000000..8b50b44
--- /dev/null
+++ b/BRServer/SensorException3Tag.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BRServer
+{
+ public class SensorException3Tag:Tag
+ {
+ public static String SENSOR_EXCEP3_TAG_OID = "6000000C";
+
+ public int state;
+
+ public SensorException3Tag()
+ {
+
+ }
+
+ public SensorException3Tag(String oid, int len, String dataValue)
+ : base(oid, len, dataValue)
+ {
+ state = Int32.Parse(dataValue, System.Globalization.NumberStyles.HexNumber);
+ }
+ }
+
+}
diff --git a/BRServer/SensorException3TagHandler.cs b/BRServer/SensorException3TagHandler.cs
new file mode 100644
index 0000000..b5ac55a
--- /dev/null
+++ b/BRServer/SensorException3TagHandler.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class SensorException3TagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ return tag is SensorException3Tag ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ SensorException3Tag sensorException3 = tag as SensorException3Tag;
+ int state = sensorException3.state;
+
+ session.Logger.Info("传感器4上传容错信息:oid:" + tag.Oid + ";value:" + state);
+
+ Alarm alarm = new Alarm();
+ alarm.DEVCODE = br.DEVCODE;
+ if (state == 1)
+ {
+ alarm.ALARM = "传感器4故障";
+ }
+ else if (state == 0)//正常
+ {
+ return;
+ }
+ else
+ {
+ alarm.ALARM = "传感器4未知异常";
+ }
+
+ BLL.BR b = BLL.BR.getInstance();
+ b.insertAlarm(alarm);
+
+ }
+ }
+}
diff --git a/BRServer/SystemDateTagHandler.cs b/BRServer/SystemDateTagHandler.cs
index 9e87ad3..187b9e4 100644
--- a/BRServer/SystemDateTagHandler.cs
+++ b/BRServer/SystemDateTagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -12,15 +13,15 @@
return tag is SystemDateTag ? true : false;
}
- public override void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag0,CasicSession session)
+ public override void execute(CasicSession session,Tag tag, BR br)
{
//更新系统日期
SystemDateTag systemDateTag = tag as SystemDateTag;
- //CasicCmd.currentSystemDate = systemDateTag.CollectDate;
session.Logger.Info("系统日期TAG:oid:" + systemDateTag.Oid +
" 系统日期:" + systemDateTag.CollectDate);
+
+ br.UPTIME = Convert.ToDateTime(systemDateTag.CollectDate);
}
}
}
diff --git a/BRServer/TagFactory.cs b/BRServer/TagFactory.cs
index 56fed87..ae926ad 100644
--- a/BRServer/TagFactory.cs
+++ b/BRServer/TagFactory.cs
@@ -17,10 +17,22 @@
else if (oid == SystemDateTag.SYSTEM_DATE_OID)
{
tag = new SystemDateTag(oid, len, value);
- }
- else if (oid == CellTag.CELL_TAG_OID)
+ }
+ else if (oid == SensorException0Tag.SENSOR_EXCEP0_TAG_OID)
{
- tag = new CellTag(oid, len, value);
+ tag = new SensorException0Tag(oid, len, value);
+ }
+ else if (oid == SensorException1Tag.SENSOR_EXCEP1_TAG_OID)
+ {
+ tag = new SensorException1Tag(oid, len, value);
+ }
+ else if (oid == SensorException2Tag.SENSOR_EXCEP2_TAG_OID)
+ {
+ tag = new SensorException2Tag(oid, len, value);
+ }
+ else if (oid == SensorException3Tag.SENSOR_EXCEP3_TAG_OID)
+ {
+ tag = new SensorException3Tag(oid, len, value);
}
else
{
diff --git a/BRServer/TagHandler.cs b/BRServer/TagHandler.cs
index 87b0090..b9b523a 100644
--- a/BRServer/TagHandler.cs
+++ b/BRServer/TagHandler.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using BRServer.Model;
namespace BRServer
{
@@ -15,34 +16,30 @@
set { nextHandler = value; }
}
- public void handleTag(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag,CasicSession session)
+ public void handleTag(CasicSession session, Tag tag, BR br)
{
if (this.isThisTag(tag))
{
//处理当前逻辑
- this.execute(tag, devCode, cellTag, systemDateTag, session);
+ this.execute(session, tag, br);
}
else
{
if (nextHandler != null)
{
- nextHandler.handleTag(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.handleTag(session, tag, br);
}
else
{
//TODO LIST:用默认的TagHandler来处理
nextHandler = new DefaultTagHandler();
- nextHandler.execute(tag, devCode, cellTag, systemDateTag,
- session);
+ nextHandler.execute(session, tag, br);
}
}
}
public abstract bool isThisTag(Tag tag);
- public abstract void execute(Tag tag, String devCode, CellTag cellTag,
- SystemDateTag systemDateTag, CasicSession session);
+ public abstract void execute(CasicSession session, Tag tag, BR br);
}
}
diff --git a/BRServer/TempTagHandler.cs b/BRServer/TempTagHandler.cs
new file mode 100644
index 0000000..672e572
--- /dev/null
+++ b/BRServer/TempTagHandler.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class TempTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 8 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float temp = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(temp))
+ {
+ br.TEMPERATURE = null;
+ }
+ else
+ {
+ br.TEMPERATURE = temp;
+ }
+
+ session.Logger.Info("温度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + temp);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/VoltageTagHandler.cs b/BRServer/VoltageTagHandler.cs
new file mode 100644
index 0000000..da632e6
--- /dev/null
+++ b/BRServer/VoltageTagHandler.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class VoltageTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 15 ? true : false;
+ }
+
+ public override void execute(CasicSession session,Tag tag,BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float voltage = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(voltage))
+ {
+ br.VOLTAGES.Add(null);
+ }
+ else
+ {
+ br.VOLTAGES.Add(voltage);
+ }
+
+ session.Logger.Info("电压数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + voltage);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+ }
+}
diff --git a/BRServer/WindSpeedTagHandler.cs b/BRServer/WindSpeedTagHandler.cs
new file mode 100644
index 0000000..d305b3a
--- /dev/null
+++ b/BRServer/WindSpeedTagHandler.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Collections;
+using BRServer.Model;
+
+namespace BRServer
+{
+ public class WindSpeedTagHandler : TagHandler
+ {
+ public override bool isThisTag(Tag tag)
+ {
+ if (!(tag is UploadTag))
+ {
+ return false;
+ }
+
+ UploadTag uploadTag = tag as UploadTag;
+
+ return uploadTag.BizType == 20 ? true : false;
+ }
+
+ public override void execute(CasicSession session, Tag tag, BR br)
+ {
+ //TODO LIST:解析数据,保存数据
+ UploadTag BRTag = tag as UploadTag;
+ int itv = BRTag.CollectInter;
+ String collecTime = BRTag.CollectTime;
+ int len = BRTag.Len;
+ String dataValue = BRTag.DataValue;
+
+ float windspeed = strHexToFloat(dataValue.Substring(0, 8));
+ if (float.IsNaN(windspeed))
+ {
+ br.WINDSPEED = null;
+ }
+ else
+ {
+ br.WINDSPEED = windspeed;
+ }
+
+ session.Logger.Info("风速数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
+ itv + " 采集时间:" + collecTime + " 上传数值:" + windspeed);
+ }
+
+ //网络序列转float
+ private float strHexToFloat(String src)
+ {
+ if (src.Length != 8)
+ return 0;
+
+ byte[] lBt ={
+ byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
+ byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)
+ };
+ float ss = BitConverter.ToSingle(lBt, 0);
+ return ss;
+
+ }
+
+ }
+}
diff --git a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
index 6731e8d..163ea86 100644
--- a/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
+++ b/BRServer/obj/Debug/BRServer.csprojResolveAssemblyReference.cache
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.dll b/BRServer/obj/Debug/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/BRServer/obj/Debug/BRServer.dll
+++ b/BRServer/obj/Debug/BRServer.dll
Binary files differ
diff --git a/BRServer/obj/Debug/BRServer.pdb b/BRServer/obj/Debug/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/BRServer/obj/Debug/BRServer.pdb
+++ b/BRServer/obj/Debug/BRServer.pdb
Binary files differ
diff --git a/BRServerTest/App.config b/BRServerTest/App.config
index 915718e..c81d9f8 100644
--- a/BRServerTest/App.config
+++ b/BRServerTest/App.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
index e6df40c..1a3137f 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.csproj.FileListAbsolute.txt
@@ -1,6 +1,6 @@
-E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
E:\gwq\BRServer\bin\BRServerTest.exe.config
E:\gwq\BRServer\bin\BRServerTest.exe
E:\gwq\BRServer\bin\BRServerTest.pdb
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.exe
E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.pdb
+E:\gwq\BRServer\BRServerTest\obj\x86\Debug\BRServerTest.csprojResolveAssemblyReference.cache
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.exe b/BRServerTest/obj/x86/Debug/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.exe
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.exe
Binary files differ
diff --git a/BRServerTest/obj/x86/Debug/BRServerTest.pdb b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/BRServerTest/obj/x86/Debug/BRServerTest.pdb
+++ b/BRServerTest/obj/x86/Debug/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServer.BLL.dll b/bin/BRServer.BLL.dll
index ef3bd34..beb763b 100644
--- a/bin/BRServer.BLL.dll
+++ b/bin/BRServer.BLL.dll
Binary files differ
diff --git a/bin/BRServer.BLL.pdb b/bin/BRServer.BLL.pdb
index 5a110ce..2294208 100644
--- a/bin/BRServer.BLL.pdb
+++ b/bin/BRServer.BLL.pdb
Binary files differ
diff --git a/bin/BRServer.DAL.dll b/bin/BRServer.DAL.dll
index 2dda937..c0c01f2 100644
--- a/bin/BRServer.DAL.dll
+++ b/bin/BRServer.DAL.dll
Binary files differ
diff --git a/bin/BRServer.DAL.pdb b/bin/BRServer.DAL.pdb
index 93e1467..d0cda71 100644
--- a/bin/BRServer.DAL.pdb
+++ b/bin/BRServer.DAL.pdb
Binary files differ
diff --git a/bin/BRServer.DALFactory.dll b/bin/BRServer.DALFactory.dll
index a4b423a..887458a 100644
--- a/bin/BRServer.DALFactory.dll
+++ b/bin/BRServer.DALFactory.dll
Binary files differ
diff --git a/bin/BRServer.DALFactory.pdb b/bin/BRServer.DALFactory.pdb
index a32c409..cc2e47d 100644
--- a/bin/BRServer.DALFactory.pdb
+++ b/bin/BRServer.DALFactory.pdb
Binary files differ
diff --git a/bin/BRServer.IDAL.dll b/bin/BRServer.IDAL.dll
index f2a3bd7..284341e 100644
--- a/bin/BRServer.IDAL.dll
+++ b/bin/BRServer.IDAL.dll
Binary files differ
diff --git a/bin/BRServer.IDAL.pdb b/bin/BRServer.IDAL.pdb
index b0efdbc..8bd983a 100644
--- a/bin/BRServer.IDAL.pdb
+++ b/bin/BRServer.IDAL.pdb
Binary files differ
diff --git a/bin/BRServer.Model.dll b/bin/BRServer.Model.dll
index 468d516..9536917 100644
--- a/bin/BRServer.Model.dll
+++ b/bin/BRServer.Model.dll
Binary files differ
diff --git a/bin/BRServer.Model.pdb b/bin/BRServer.Model.pdb
index 3ba05f3..4475a72 100644
--- a/bin/BRServer.Model.pdb
+++ b/bin/BRServer.Model.pdb
Binary files differ
diff --git a/bin/BRServer.dll b/bin/BRServer.dll
index 13bc7bd..ceb528b 100644
--- a/bin/BRServer.dll
+++ b/bin/BRServer.dll
Binary files differ
diff --git a/bin/BRServer.pdb b/bin/BRServer.pdb
index 619b4d5..f3df4ac 100644
--- a/bin/BRServer.pdb
+++ b/bin/BRServer.pdb
Binary files differ
diff --git a/bin/BRServerTest.exe b/bin/BRServerTest.exe
index c969846..0c1f9de 100644
--- a/bin/BRServerTest.exe
+++ b/bin/BRServerTest.exe
Binary files differ
diff --git a/bin/BRServerTest.exe.config b/bin/BRServerTest.exe.config
index 915718e..c81d9f8 100644
--- a/bin/BRServerTest.exe.config
+++ b/bin/BRServerTest.exe.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/bin/BRServerTest.pdb b/bin/BRServerTest.pdb
index 3e417af..5e229ec 100644
--- a/bin/BRServerTest.pdb
+++ b/bin/BRServerTest.pdb
Binary files differ
diff --git a/bin/BRServerTest.vshost.exe.config b/bin/BRServerTest.vshost.exe.config
index 915718e..c81d9f8 100644
--- a/bin/BRServerTest.vshost.exe.config
+++ b/bin/BRServerTest.vshost.exe.config
@@ -5,11 +5,11 @@
-
+
-
+
@@ -17,10 +17,6 @@
-
-
-
-
-
+
\ No newline at end of file