diff --git a/SCADA/Database/mysql.sql b/SCADA/Database/mysql.sql
index cd044a7..504c9e0 100644
--- a/SCADA/Database/mysql.sql
+++ b/SCADA/Database/mysql.sql
@@ -1,392 +1,410 @@
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `dictionary` (
- `DictType` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
- `Code` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
- `Description` varchar(50) COLLATE latin1_german1_ci DEFAULT ''
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `log_alarm` (
- `StartTime` datetime DEFAULT NULL,
- `Source` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
- `ConditionID` int(11) DEFAULT '0',
- `AlarmText` varchar(128) COLLATE latin1_german1_ci DEFAULT '',
- `AlarmValue` text COLLATE latin1_german1_ci,
- `Duration` int(11) DEFAULT '0',
- `Severity` int(11) DEFAULT '0',
- `SubAlarmType` int(11) DEFAULT '0'
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `log_event` (
- `EventType` int(11) DEFAULT NULL,
- `Severity` int(11) DEFAULT NULL,
- `IsAcked` bit(1) DEFAULT NULL,
- `ActiveTime` datetime DEFAULT NULL,
- `Source` varchar(50) DEFAULT NULL,
- `Comment` varchar(50) DEFAULT NULL,
- `SQLCounter` int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`SQLCounter`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `log_hdata` (
- `ID` int(11) NOT NULL DEFAULT '0',
- `TimeStamp` datetime NOT NULL,
- `Value` text COLLATE latin1_german1_ci
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `membership` (
- `ID` int(11) NOT NULL AUTO_INCREMENT,
- `UserName` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
- `Password` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
- `Role` int(11) NOT NULL DEFAULT '0',
- `Email` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
- `Phone` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
- PRIMARY KEY (`ID`)
-) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `membership` VALUES (1,'admin','c4ca4238a0b923820dcc509a6f75849b',4,NULL,NULL),(2,'op','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL),(3,'everyone','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL);
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `meta_condition` (
- `TypeID` int(11) NOT NULL AUTO_INCREMENT,
- `Source` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
- `AlarmType` int(11) NOT NULL DEFAULT '0',
- `EventType` tinyint(4) NOT NULL DEFAULT '0',
- `ConditionType` tinyint(4) NOT NULL DEFAULT '0',
- `Para` text COLLATE latin1_german1_ci,
- `IsEnabled` tinyint(4) NOT NULL DEFAULT '1',
- `DeadBand` text COLLATE latin1_german1_ci,
- `Delay` int(11) NOT NULL DEFAULT '0',
- `Comment` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
- PRIMARY KEY (`TypeID`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `meta_driver` (
- `DriverID` int(11) NOT NULL DEFAULT '0',
- `DriverType` int(11) NOT NULL DEFAULT '0',
- `DriverName` varchar(64) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
- `TimeOut` int(11) NOT NULL DEFAULT '0',
- `Server` varchar(128) COLLATE latin1_german1_ci DEFAULT '',
- `Spare1` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
- `Spare2` varchar(50) COLLATE latin1_german1_ci DEFAULT ''
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `meta_driver` VALUES (1,3,'S1',1000,'127.0.0.1','{6E6170F0-FF2D-11D2-8087-00105AA8F840}','9600'),(2,5,'Modbus',1000,'127.0.0.1','','2');
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `meta_group` (
- `GroupID` int(11) NOT NULL DEFAULT '0',
- `DriverID` int(11) DEFAULT '0',
- `GroupName` varchar(20) COLLATE latin1_german1_ci DEFAULT '',
- `UpdateRate` int(11) DEFAULT '0',
- `DeadBand` text COLLATE latin1_german1_ci,
- `IsActive` tinyint(4) NOT NULL DEFAULT '1'
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `meta_group` VALUES (20001,1,'Receiving1',300,'0',0),(20002,1,'Receiving2',0,'0',0),(20003,2,'test',1000,'0',1);
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `meta_scale` (
- `ScaleID` int(11) NOT NULL DEFAULT '0',
- `ScaleType` tinyint(4) NOT NULL DEFAULT '0',
- `EUHi` text COLLATE latin1_german1_ci,
- `EULo` text COLLATE latin1_german1_ci,
- `RawHi` text COLLATE latin1_german1_ci,
- `RawLo` text COLLATE latin1_german1_ci
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `meta_subcondition` (
- `ConditionID` int(11) NOT NULL DEFAULT '0',
- `SubAlarmType` int(11) NOT NULL DEFAULT '0',
- `Threshold` text COLLATE latin1_german1_ci,
- `Severity` tinyint(4) NOT NULL DEFAULT '0',
- `Message` varchar(250) COLLATE latin1_german1_ci DEFAULT '',
- `IsEnable` tinyint(4) NOT NULL DEFAULT '1'
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `meta_tag` (
- `TagID` smallint(5) NOT NULL AUTO_INCREMENT,
- `TagName` varchar(512) NOT NULL,
- `DataType` tinyint(3) unsigned NOT NULL,
- `DataSize` smallint(5) NOT NULL DEFAULT '0',
- `Address` varchar(64) NOT NULL,
- `GroupID` smallint(5) NOT NULL DEFAULT '0',
- `IsActive` bit(1) NOT NULL,
- `Archive` bit(1) NOT NULL,
- `DefaultValue` blob,
- `Description` varchar(128) DEFAULT NULL,
- `Maximum` double(24,2) NOT NULL DEFAULT '0.00',
- `Minimum` double(24,2) NOT NULL DEFAULT '0.00',
- `Cycle` int(10) NOT NULL DEFAULT '0',
- `RowVersion` blob NOT NULL,
- UNIQUE KEY `TagID` (`TagID`)
-) ENGINE=InnoDB AUTO_INCREMENT=159 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `meta_tag` VALUES (2,'Receiving1_AlmAck',1,1,'Channel4.Receiving1.K0008.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0划'),(3,'Receiving1_888',1,1,'Channel4.Receiving1.K0006.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0化'),(4,'Receiving1_Conveyor3_Running',1,1,'Channel4.Receiving1.K0006.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0话'),(5,'Receiving1_Conveyor4_Alarm',1,1,'Channel4.Receiving1.K0001.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0槐'),(6,'Receiving1_Conveyor4_Running',1,1,'Channel4.Receiving1.K0001.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0徊'),(7,'Receiving1_Conveyor5_Alarm',1,1,'Channel4.Receiving1.K0008.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0怀'),(8,'Receiving1_Conveyor5_Running',1,1,'Channel4.Receiving1.K0007.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0淮'),(9,'Receiving1_Conveyor6_Alarm',1,1,'Channel4.Receiving1.K0008.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0坏'),(10,'Receiving1_Conveyor6_Running',1,1,'Channel4.Receiving1.K0005.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0欢'),(11,'Receiving1_Conveyor7_Alarm',1,1,'Channel4.Receiving1.K0006.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0环'),(12,'Receiving1_Conveyor7_Running',1,1,'Channel4.Receiving1.K0006.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0桓'),(13,'Receiving1_Conveyor8_Running',1,1,'Channel4.Receiving1.K0001.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0还'),(14,'Receiving1_Conveyor9_Alarm',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0缓'),(15,'Receiving1_Conveyor9_Running',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0换'),(16,'Receiving1_DF01SQH_Alarm',1,1,'Channel4.Receiving1.K0002.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0患'),(17,'Receiving1_DF01SQL_Alarm',1,1,'Channel4.Receiving1.K0003.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0唤'),(18,'Receiving1_DF02SQH_Alarm',1,1,'Channel4.Receiving1.K0002.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0痪'),(19,'Receiving1_DF02SQL_Alarm',1,1,'Channel4.Receiving1.K0003.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0豢'),(20,'Receiving1_DF03SQH_Alarm',1,1,'Channel4.Receiving1.K0002.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0焕'),(21,'Receiving1_DF03SQL_Alarm',1,1,'Channel4.Receiving1.K0003.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0涣'),(22,'Receiving1_DF04SQH_Alarm',1,1,'Channel4.Receiving1.K0002.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(23,'Receiving1_DF04SQL_Alarm',1,1,'Channel4.Receiving1.K0003.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(24,'Receiving1_DF05SQH_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(25,'Receiving1_DF05SQL_Alarm',1,1,'Channel4.Receiving1.K0003.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(26,'Receiving1_DF06SQL_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(27,'Receiving1_F01SQH_Alarm',1,1,'Channel4.Receiving1.K0007.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(28,'Receiving1_F02SQH_Alarm',1,1,'Channel4.Receiving1.K0007.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(29,'Receiving1_F03SQH_Alarm',1,1,'Channel4.Receiving1.K0007.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(30,'Receiving1_F04SQH_Alarm',1,1,'Channel4.Receiving1.K0007.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(31,'Receiving1_F05SQH_Alarm',1,1,'Channel4.Receiving1.K0007.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(32,'Receiving1_F06SQH_Alarm',1,1,'Channel4.Receiving1.K0007.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(33,'Receiving1_Fan1_Alarm',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(34,'Receiving1_Fan1_Running',1,1,'Channel4.Receiving1.K0008.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(35,'Receiving1_Fan2_Running',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(36,'Receiving1_Fan3_Running',1,1,'Channel4.Receiving1.K0001.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(37,'Receiving1_FourWays_Left',1,1,'Channel4.Receiving1.K0006.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(38,'Receiving1_FourWays_MID',1,1,'Channel4.Receiving1.K0006.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(39,'Receiving1_FourWays_Right',1,1,'Channel4.Receiving1.K0006.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(40,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(41,'Receiving1_Gate10_Alarm',1,1,'Channel4.Receiving1.K0003.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(42,'Receiving1_Gate10_Cls',1,1,'Channel4.Receiving1.K0004.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(43,'Receiving1_Gate10_Ols',1,1,'Channel4.Receiving1.K0004.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(44,'Receiving1_Gate11_Alarm',1,1,'Channel4.Receiving1.K0005.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(45,'Receiving1_Gate11_Cls',1,1,'Channel4.Receiving1.K0001.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(46,'Receiving1_Gate11_Ols',1,1,'Channel4.Receiving1.K0005.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(47,'Receiving1_Gate12_Alarm',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(48,'Receiving1_Gate12_Cls',1,1,'Channel4.Receiving1.K0001.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(49,'Receiving1_Gate12_Ols',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(50,'Receiving1_Gate13_Alarm',1,1,'Channel4.Receiving1.K0005.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(51,'Receiving1_Gate13_Cls',1,1,'Channel4.Receiving1.K0001.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(52,'Receiving1_Gate13_Ols',1,1,'Channel4.Receiving1.K0005.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(53,'Receiving1_Gate14_Alarm',1,1,'Channel4.Receiving1.K0005.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(54,'Receiving1_Gate14_Cls',1,1,'Channel4.Receiving1.K0000.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(55,'Receiving1_Gate14_Ols',1,1,'Channel4.Receiving1.K0005.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(56,'Receiving1_Gate15_Alarm',1,1,'Channel4.Receiving1.K0005.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(57,'Receiving1_Gate15_Cls',1,1,'Channel4.Receiving1.K0000.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(58,'Receiving1_Gate15_Ols',1,1,'Channel4.Receiving1.K0005.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(59,'Receiving1_Gate16_Ols',1,1,'Channel4.Receiving1.K0000.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(60,'Receiving1_Gate17_Ols',1,1,'Channel4.Receiving1.K0000.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(61,'Receiving1_Gate18_Ols',1,1,'Channel4.Receiving1.K0000.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(62,'Receiving1_Gate19_Ols',1,1,'Channel4.Receiving1.K0000.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(63,'Receiving1_Gate20_Ols',1,1,'Channel4.Receiving1.K0000.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(64,'Receiving1_Gate21_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(65,'Receiving1_Gate3_Alarm',1,1,'Channel4.Receiving1.K0005.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(66,'Receiving1_Gate3_Cls',1,1,'Channel4.Receiving1.K0000.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(67,'Receiving1_Gate3_Ols',1,1,'Channel4.Receiving1.K0005.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(68,'Receiving1_Gate4_Alarm',1,1,'Channel4.Receiving1.K0005.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0火'),(69,'Receiving1_Gate4_Cls',1,1,'Channel4.Receiving1.K0000.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0获'),(70,'Receiving1_Gate4_Ols',1,1,'Channel4.Receiving1.K0005.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0或'),(71,'Receiving1_Gate5_Alarm',1,1,'Channel4.Receiving1.K0003.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惑'),(72,'Receiving1_Gate5_Cls',1,1,'Channel4.Receiving1.K0004.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0霍'),(73,'Receiving1_Gate5_Ols',1,1,'Channel4.Receiving1.K0000.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0货'),(74,'Receiving1_Gate6_Alarm',1,1,'Channel4.Receiving1.K0003.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0祸'),(75,'Receiving1_Gate6_Cls',1,1,'Channel4.Receiving1.K0004.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0击'),(76,'Receiving1_Gate6_Ols',1,1,'Channel4.Receiving1.K0000.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0圾'),(77,'Receiving1_Gate7_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0基'),(78,'Receiving1_Gate7_Cls',1,1,'Channel4.Receiving1.K0004.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0机'),(79,'Receiving1_Gate7_Ols',1,1,'Channel4.Receiving1.K0000.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0畸'),(80,'Receiving1_Gate8_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0稽'),(81,'Receiving1_Gate8_Cls',1,1,'Channel4.Receiving1.K0004.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0积'),(82,'Receiving1_Gate8_Ols',1,1,'Channel4.Receiving1.K0000.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0箕'),(83,'Receiving1_Gate9_Alarm',1,1,'Channel4.Receiving1.K0003.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(84,'Receiving1_Gate9_Cls',1,1,'Channel4.Receiving1.K0004.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(85,'Receiving1_Gate9_Ols',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(86,'Receiving1_Gate9_Ols4',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(87,'Receiving1_Gate9_Ols5',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(88,'Receiving1_Gate9_Ols6',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(89,'Receiving1_Gate9_Ols7',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(90,'Receiving1_Gate9_Ols8',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(91,'Receiving1_Gate9_Ols9',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(92,'Receiving1_leg1alm',1,1,'Channel4.Receiving1.K0010.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(93,'Receiving1_LegMotor1_Overload',8,4,'Channel4.Receiving1.R0016',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪n'),(94,'Receiving1_LegMotor1_Running',1,1,'Channel4.Receiving1.K0006.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(95,'Receiving1_LegMotor2_Overload',8,4,'Channel4.Receiving1.R0024',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(96,'Receiving1_LegMotor2_Running',1,1,'Channel4.Receiving1.K0005.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪r'),(97,'Receiving1_Legmotor2Speed_Speed',8,4,'Channel4.Receiving1.R0028',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(98,'Receiving1_LegMotor3_Overload',8,4,'Channel4.Receiving1.R0044',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(99,'Receiving1_LegMotor3_Running',1,1,'Channel4.Receiving1.K0006.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(100,'Receiving1_Legmotor3Curr_Digi',8,4,'Channel4.Receiving1.R0036',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(101,'Receiving1_Legmotor3Speed_Speed',8,4,'Channel4.Receiving1.R0048',20001,'','',NULL,'鎻愬崌鏈烘祴閫',0.00,0.00,0,'\0\0\0\0\0'),(102,'Receiving1_LegMotor4_Overload',8,4,'Channel4.Receiving1.R0004',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(103,'Receiving1_LegMotor4_Running',1,1,'Channel4.Receiving1.K0001.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(104,'Receiving1_Legmotor4Curr_Digi',8,4,'Channel4.Receiving1.R0000',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(105,'Receiving1_LocalRemote',1,1,'Channel4.Receiving1.K0008.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(106,'Receiving1_MagicRoll1_Alarm',1,1,'Channel4.Receiving1.K0007.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(107,'Receiving1_MagicRoll1_Running',1,1,'Channel4.Receiving1.K0006.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(108,'Receiving1_MagicRoll2_Alarm',1,1,'Channel4.Receiving1.K0007.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(109,'Receiving1_MagicRoll2_Running',1,1,'Channel4.Receiving1.K0006.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪Z'),(110,'Receiving1_MagicRoll3_Alarm',1,1,'Channel4.Receiving1.K0007.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(111,'Receiving1_MagicRoll3_Running',1,1,'Channel4.Receiving1.K0006.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(112,'Receiving1_MagicRoll4_Alarm',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(113,'Receiving1_MagicRoll4_Running',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(114,'Receiving1_Sifter1_Running',1,1,'Channel4.Receiving1.K0006.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(115,'Receiving1_Sifter2_Running',1,1,'Channel4.Receiving1.K0006.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(116,'Receiving1_Sifter3_Alarm',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0!'),(117,'Receiving1_Sifter3_Running',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪"'),(118,'Receiving1_ThreeWays1_Left',1,1,'Channel4.Receiving1.K0001.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0#'),(119,'Receiving1_ThreeWays1_Right',1,1,'Channel4.Receiving1.K0001.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0$'),(120,'Receiving1_ThreeWays2_Left',1,1,'Channel4.Receiving1.K0006.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0%'),(121,'Receiving1_ThreeWays2_Right',1,1,'Channel4.Receiving1.K0006.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0&'),(122,'Receiving2_LegCUR102_Digi',8,4,'Channel4.Receiving1.R0020',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪''),(123,'Receiving2_LegCUR106_Digi',8,4,'Channel4.Receiving1.R0012',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0('),(124,'Receiving1_Conveyor1_Alarm',1,1,'Channel4.Receiving2.K0002.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0)'),(125,'Receiving1_Conveyor1_Running',1,1,'Channel4.Receiving2.K0002.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0*'),(126,'Receiving1_Conveyor2_Alarm',1,1,'Channel4.Receiving2.K0002.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0+'),(127,'Receiving1_Conveyor2_Running',1,1,'Channel4.Receiving2.K0002.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0,'),(128,'Receiving1_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0-'),(129,'Receiving1_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0.'),(130,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0/'),(131,'Receiving1_Gate2_Alarm',1,1,'Channel4.Receiving2.K0001.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\00'),(132,'Receiving1_Gate2_Cls',1,1,'Channel4.Receiving2.K0001.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\01'),(133,'Receiving1_Gate2_Ols',1,1,'Channel4.Receiving2.K0001.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\02'),(134,'Receiving2_Airport1_Alarm',1,1,'Channel4.Receiving2.K0002.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\03'),(135,'Receiving2_Airport1_Running',1,1,'Channel4.Receiving2.K0001.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\04'),(136,'Receiving2_Airport2_Alarm',1,1,'Channel4.Receiving2.K0001.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\05'),(137,'Receiving2_Airport2_Running',1,1,'Channel4.Receiving2.K0001.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\06'),(138,'Receiving2_AlmAck',1,1,'Channel4.Receiving2.K0002.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\07'),(139,'Receiving2_Converyor1_Running',1,1,'Channel4.Receiving2.K0001.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\08'),(140,'Receiving2_Converyor2_Alarm',1,1,'Channel4.Receiving2.K0002.12',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\09'),(141,'Receiving2_Converyor2_Running',1,1,'Channel4.Receiving2.K0002.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0:'),(142,'Receiving2_Fan1_Alarm',1,1,'Channel4.Receiving2.K0001.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0;'),(143,'Receiving2_Fan1_Running',1,1,'Channel4.Receiving2.K0001.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0<'),(144,'Receiving2_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0='),(145,'Receiving2_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.06',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0>'),(146,'Receiving2_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0?'),(147,'Receiving2_Gate2_Ols',1,1,'Channel4.Receiving2.K0002.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0粿'),(148,'Receiving2_LegMotor1_Overload',8,4,'Channel4.Receiving2.R0008',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糀'),(149,'Receiving2_Legmotor1Speed_Speed',8,4,'Channel4.Receiving2.R0012',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糂'),(150,'Receiving2_LegMotor2_Overload',8,4,'Channel4.Receiving2.R0000',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糃'),(151,'Receiving2_LegMotor2_Running',1,1,'Channel4.Receiving2.K0002.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糄'),(152,'Receiving2_Legmotor2Speed_Speed',8,4,'Channel4.Receiving2.R0004',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糆'),(153,'Receiving2_LocalRemote',1,1,'Channel4.Receiving2.K0002.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糉'),(154,'Receiving2_MagicRoll1_Alarm',1,1,'Channel4.Receiving2.K0002.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糋'),(155,'Receiving2_MagicRoll1_Running',1,1,'Channel4.Receiving2.K0002.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糎'),(156,'Receiving2_Sifter1_Alarm',1,1,'Channel4.Receiving2.K0002.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糏'),(157,'Receiving2_Sifter1_Running',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糐'),(158,'Receiving2_Sifter1_Running8',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糑');
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `registermodule` (
- `DriverID` int(10) NOT NULL AUTO_INCREMENT,
- `AssemblyName` varchar(255) DEFAULT NULL,
- `ClassName` varchar(50) DEFAULT NULL,
- `ClassFullName` varchar(128) DEFAULT NULL,
- `Description` varchar(50) DEFAULT NULL,
- UNIQUE KEY `DriverID` (`DriverID`)
-) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-INSERT INTO `registermodule` VALUES (4,'E:\\SCADA\\dll\\OPCDriver.dll','OPCReader','OPCDriver.OPCReader','OPC鍗忚'),(5,'E:\\SCADA\\dll\\FileDriver.dll','DataBaseReader','FileDriver.DataBaseReader','SQL 鏁版嵁搴'),(6,'E:\\SCADA\\dll\\FileDriver.dll','TagDriver','FileDriver.TagDriver','鏍囩鐩存帴璇诲啓'),(8,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusRTUReader','ModbusDriver.ModbusRTUReader','Modbus RTU鍗忚'),(9,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusTCPReader','ModbusDriver.ModbusTCPReader','Modbus Tcp鍗忚'),(10,'E:\\SCADA\\dll\\SiemensPLCDriver.dll','SiemensTCPReader','SiemensPLCDriver.SiemensTCPReader','S7 浠ュお缃戝崗璁');
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `AddEventLog`(IN pStartTime DATETIME,
- IN pSource NVARCHAR(50) ,
- IN pComment NVARCHAR(50))
-BEGIN
-IF pComment<>IFNULL((SELECT Comment FROM LOG_EVENT WHERE EVENTTYPE=2 AND Source=Source ORDER BY SQLCOUNTER DESC LIMIT 1),'') THEN
- INSERT INTO LOG_EVENT(EVENTTYPE,SEVERITY,ACTIVETIME,SOURCE,COMMENT) VALUES(2,0,pStartTime,pSource,pComment);
-END IF;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAlarm`(IN pStartTime DATETIME,
- IN pEndTime DATETIME )
-BEGIN
-SELECT StartTime,AlarmText,AlarmValue,SubAlarmType,Severity,ConditionID,Source,Duration FROM LOG_ALARM WHERE StartTime BETWEEN pStartTime AND pEndTime ORDER BY StartTime;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEventTime`(IN pEVENTTYPE int,
- IN pSOURCE nvarchar(50),
- IN pCOMMENT nvarchar(50),
- OUT pSTARTTIME DATETIME,
- OUT pENDTIME DATETIME)
-BEGIN
-DECLARE _ID INT DEFAULT 0;
-
-SELECT SQLCOUNTER,ACTIVETIME INTO _ID,pSTARTTIME FROM LOG_EVENT WHERE EVENTTYPE=pEVENTTYPE AND SOURCE=pSOURCE AND COMMENT=pCOMMENT ORDER BY ACTIVETIME DESC LIMIT 1;
-
-SET @sql = CONCAT('SELECT ACTIVETIME INTO ', pENDTIME, ' FROM LOG_EVENT WHERE EVENTTYPE = "',
- pEVENTTYPE, '" AND SOURCE = "', pSOURCE, '" AND SQLCOUNTER> ',_ID,' ORDER BY ACTIVETIME DESC LIMIT 1');
- PREPARE stmt FROM @sql;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `InitServer`(IN pTYPE int)
-BEGIN
-
- IF pTYPE<>1 THEN
- SELECT M.DRIVERID,DRIVERNAME,SERVER,TIMEOUT,R.AssemblyName,R.ClassFullName,Spare1,Spare2 FROM META_DRIVER M INNER JOIN RegisterModule R ON M.DRIVERTYPE=R.DriverID;
- END IF;
-
- SELECT COUNT(*) FROM META_TAG;
-
- SELECT TAGID,GROUPID,RTRIM(TAGNAME),ADDRESS,DATATYPE,DATASIZE,ARCHIVE,MAXIMUM,MINIMUM,CYCLE FROM META_TAG WHERE ISACTIVE=1;
-
- IF pTYPE<>1 THEN
- SELECT DRIVERID,GROUPNAME,GROUPID,UPDATERATE,DEADBAND,ISACTIVE FROM META_GROUP ;
- END IF;
-
- IF pTYPE=0 THEN
- SELECT SOURCE FROM META_Condition WHERE EVENTTYPE=2;
- END IF;
-
- IF pTYPE<>2 THEN
- SELECT TYPEID,SOURCE,ALARMTYPE,A.ISENABLED,CONDITIONTYPE,PARA,IFNULL(COMMENT,''),DEADBAND,DELAY,SUBALARMTYPE,Threshold,SEVERITY,
- IFNULL(MESSAGE,''),B.ISENABLE FROM META_Condition a LEFT OUTER JOIN META_SUBCONDITION b ON a.TypeID=b.ConditionID WHERE EVENTTYPE<>2;
- END IF;
-
- -- LEFT OUTER JOIN META_TAG c ON a.SOURCEID=c.TAGID
- SELECT SCALEID,SCALETYPE,EUHI,EULO,RAWHI,RAWLO FROM META_SCALE;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadALL`(IN pGroupID SMALLINT)
-BEGIN
-
-SELECT COUNT(*) FROM META_TAG WHERE GROUPID=pGroupID AND IsActive=1;
-SELECT TAGID,DATATYPE,IFNULL(DEFAULTVALUE,0) FROM META_TAG WHERE IsActive=1 AND GROUPID=pGroupID ORDER BY TAGID;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadHData`(IN pStartTime DATETIME,
- IN pEndTime DATETIME,
- IN pID INT)
-BEGIN
-
- IF pID IS NULL THEN
- SELECT ID,TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY ID,TIMESTAMP;
- ELSE
- SELECT TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE ID=pID AND TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY TIMESTAMP;
- -- select ID,TIMESTAMP,VALUE from HDADATA WHERE TIMESTAMP BETWEEN @StartTime AND @EndTime order by TIMESTAMP
- END IF;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadValueByID`(IN pID SMALLINT,
- IN pDATATYPE TinyInt)
-BEGIN
-
- -- 寰呭畬鍠
--- IF @DATATYPE=1
--- SELECT CAST(DEFAULTVALUE AS BIT) FROM META_TAG WHERE TAGID=@ID
--- ELSE IF @DATATYPE=3
--- SELECT CAST(DEFAULTVALUE AS TINYINT) FROM META_TAG WHERE TAGID=@ID
--- ELSE IF @DATATYPE=4
--- SELECT CAST(DEFAULTVALUE AS SMALLINT) FROM META_TAG WHERE TAGID=@ID
--- ELSE IF @DATATYPE=7
--- SELECT CAST(DEFAULTVALUE AS INT) FROM META_TAG WHERE TAGID=@ID
--- ELSE IF @DATATYPE=8
--- SELECT CAST(DEFAULTVALUE AS REAL) FROM META_TAG WHERE TAGID=@ID
--- ELSE IF @DATATYPE=11
--- SELECT CAST(DEFAULTVALUE AS VARCHAR) FROM META_TAG WHERE TAGID=@ID
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateValueByID`(IN pID SMALLINT,
- IN pValue varchar(50))
-BEGIN
-
- UPDATE META_TAG SET DEFAULTVALUE=pValue WHERE TAGID=pID;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!50003 SET @saved_col_connection = @@collation_connection */ ;
-/*!50003 SET character_set_client = utf8 */ ;
-/*!50003 SET character_set_results = utf8 */ ;
-/*!50003 SET collation_connection = utf8_general_ci */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `WriteHData`(IN pDATE DATETIME)
-BEGIN
-
- -- DELETE FROM LOG_HDATA FROM LOG_HDATA L INNER JOIN META_TAG T ON T.TAGID=L.ID WHERE T.DATATYPE=11
- -- SELECT COUNT(*),COUNT(DISTINCT ID) FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0;
- -- SELECT H.ID,T.DATATYPE,C FROM( SELECT ID,COUNT(*)C FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 GROUP BY ID)H INNER JOIN META_TAG T ON H.ID=T.TAGID ORDER BY ID --WITH ROLLUP
- -- SELECT TIMESTAMP,VALUE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 ORDER BY ID,TIMESTAMP
-
- -- DELETE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!50003 SET character_set_client = @saved_cs_client */ ;
-/*!50003 SET character_set_results = @saved_cs_results */ ;
-/*!50003 SET collation_connection = @saved_col_connection */ ;
+/*
+SQLyog Enterprise Trial - MySQL GUI v7.11
+MySQL - 5.7.20-log : Database - scada
+*********************************************************************
+*/
+
+/*!40101 SET NAMES utf8 */;
+
+/*!40101 SET SQL_MODE=''*/;
+
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+
+CREATE DATABASE /*!32312 IF NOT EXISTS*/`scada` /*!40100 DEFAULT CHARACTER SET utf8 */;
+
+USE `scada`;
+
+/*Table structure for table `dictionary` */
+
+DROP TABLE IF EXISTS `dictionary`;
+
+CREATE TABLE `dictionary` (
+ `DictType` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
+ `Code` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
+ `Description` varchar(50) COLLATE latin1_german1_ci DEFAULT ''
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `dictionary` */
+
+/*Table structure for table `log_alarm` */
+
+DROP TABLE IF EXISTS `log_alarm`;
+
+CREATE TABLE `log_alarm` (
+ `StartTime` datetime DEFAULT NULL,
+ `Source` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
+ `ConditionID` int(11) DEFAULT '0',
+ `AlarmText` varchar(128) COLLATE latin1_german1_ci DEFAULT '',
+ `AlarmValue` text COLLATE latin1_german1_ci,
+ `Duration` int(11) DEFAULT '0',
+ `Severity` int(11) DEFAULT '0',
+ `SubAlarmType` int(11) DEFAULT '0'
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `log_alarm` */
+
+/*Table structure for table `log_event` */
+
+DROP TABLE IF EXISTS `log_event`;
+
+CREATE TABLE `log_event` (
+ `EventType` int(11) DEFAULT NULL,
+ `Severity` int(11) DEFAULT NULL,
+ `IsAcked` bit(1) DEFAULT NULL,
+ `ActiveTime` datetime DEFAULT NULL,
+ `Source` varchar(50) DEFAULT NULL,
+ `Comment` varchar(50) DEFAULT NULL,
+ `SQLCounter` int(11) NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (`SQLCounter`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+/*Data for the table `log_event` */
+
+/*Table structure for table `log_hdata` */
+
+DROP TABLE IF EXISTS `log_hdata`;
+
+CREATE TABLE `log_hdata` (
+ `ID` int(11) NOT NULL DEFAULT '0',
+ `TimeStamp` datetime NOT NULL,
+ `Value` text COLLATE latin1_german1_ci
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `log_hdata` */
+
+/*Table structure for table `membership` */
+
+DROP TABLE IF EXISTS `membership`;
+
+CREATE TABLE `membership` (
+ `ID` int(11) NOT NULL AUTO_INCREMENT,
+ `UserName` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
+ `Password` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
+ `Role` int(11) NOT NULL DEFAULT '0',
+ `Email` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
+ `Phone` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
+ PRIMARY KEY (`ID`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `membership` */
+
+insert into `membership`(`ID`,`UserName`,`Password`,`Role`,`Email`,`Phone`) values (1,'admin','c4ca4238a0b923820dcc509a6f75849b',4,NULL,NULL),(2,'op','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL),(3,'everyone','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL);
+
+/*Table structure for table `meta_condition` */
+
+DROP TABLE IF EXISTS `meta_condition`;
+
+CREATE TABLE `meta_condition` (
+ `TypeID` int(11) NOT NULL AUTO_INCREMENT,
+ `Source` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
+ `AlarmType` int(11) NOT NULL DEFAULT '0',
+ `EventType` tinyint(4) NOT NULL DEFAULT '0',
+ `ConditionType` tinyint(4) NOT NULL DEFAULT '0',
+ `Para` text COLLATE latin1_german1_ci,
+ `IsEnabled` tinyint(4) NOT NULL DEFAULT '1',
+ `DeadBand` text COLLATE latin1_german1_ci,
+ `Delay` int(11) NOT NULL DEFAULT '0',
+ `Comment` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
+ PRIMARY KEY (`TypeID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `meta_condition` */
+
+/*Table structure for table `meta_driver` */
+
+DROP TABLE IF EXISTS `meta_driver`;
+
+CREATE TABLE `meta_driver` (
+ `DriverID` int(11) NOT NULL DEFAULT '0',
+ `DriverType` int(11) NOT NULL DEFAULT '0',
+ `DriverName` varchar(64) COLLATE latin1_german1_ci NOT NULL DEFAULT '',
+ `TimeOut` int(11) NOT NULL DEFAULT '0',
+ `Server` varchar(128) COLLATE latin1_german1_ci DEFAULT '',
+ `Spare1` varchar(50) COLLATE latin1_german1_ci DEFAULT '',
+ `Spare2` varchar(50) COLLATE latin1_german1_ci DEFAULT ''
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `meta_driver` */
+
+insert into `meta_driver`(`DriverID`,`DriverType`,`DriverName`,`TimeOut`,`Server`,`Spare1`,`Spare2`) values (1,3,'S1',1000,'127.0.0.1','{6E6170F0-FF2D-11D2-8087-00105AA8F840}','9600'),(2,5,'Modbus',1000,'127.0.0.1','','2');
+
+/*Table structure for table `meta_group` */
+
+DROP TABLE IF EXISTS `meta_group`;
+
+CREATE TABLE `meta_group` (
+ `GroupID` int(11) NOT NULL DEFAULT '0',
+ `DriverID` int(11) DEFAULT '0',
+ `GroupName` varchar(20) COLLATE latin1_german1_ci DEFAULT '',
+ `UpdateRate` int(11) DEFAULT '0',
+ `DeadBand` text COLLATE latin1_german1_ci,
+ `IsActive` tinyint(4) NOT NULL DEFAULT '1'
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `meta_group` */
+
+insert into `meta_group`(`GroupID`,`DriverID`,`GroupName`,`UpdateRate`,`DeadBand`,`IsActive`) values (20001,1,'Receiving1',300,'0',0),(20002,1,'Receiving2',0,'0',0),(20003,2,'test',1000,'0',1);
+
+/*Table structure for table `meta_scale` */
+
+DROP TABLE IF EXISTS `meta_scale`;
+
+CREATE TABLE `meta_scale` (
+ `ScaleID` int(11) NOT NULL DEFAULT '0',
+ `ScaleType` tinyint(4) NOT NULL DEFAULT '0',
+ `EUHi` text COLLATE latin1_german1_ci,
+ `EULo` text COLLATE latin1_german1_ci,
+ `RawHi` text COLLATE latin1_german1_ci,
+ `RawLo` text COLLATE latin1_german1_ci
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `meta_scale` */
+
+/*Table structure for table `meta_subcondition` */
+
+DROP TABLE IF EXISTS `meta_subcondition`;
+
+CREATE TABLE `meta_subcondition` (
+ `ConditionID` int(11) NOT NULL DEFAULT '0',
+ `SubAlarmType` int(11) NOT NULL DEFAULT '0',
+ `Threshold` text COLLATE latin1_german1_ci,
+ `Severity` tinyint(4) NOT NULL DEFAULT '0',
+ `Message` varchar(250) COLLATE latin1_german1_ci DEFAULT '',
+ `IsEnable` tinyint(4) NOT NULL DEFAULT '1'
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
+
+/*Data for the table `meta_subcondition` */
+
+/*Table structure for table `meta_tag` */
+
+DROP TABLE IF EXISTS `meta_tag`;
+
+CREATE TABLE `meta_tag` (
+ `TagID` smallint(5) NOT NULL AUTO_INCREMENT,
+ `TagName` varchar(512) NOT NULL,
+ `DataType` tinyint(3) unsigned NOT NULL,
+ `DataSize` smallint(5) NOT NULL DEFAULT '0',
+ `Address` varchar(64) NOT NULL,
+ `GroupID` smallint(5) NOT NULL DEFAULT '0',
+ `IsActive` bit(1) NOT NULL,
+ `Archive` bit(1) NOT NULL,
+ `DefaultValue` blob,
+ `Description` varchar(128) DEFAULT NULL,
+ `Maximum` float(24,2) NOT NULL DEFAULT '0.00',
+ `Minimum` float(24,2) NOT NULL DEFAULT '0.00',
+ `Cycle` int(10) NOT NULL DEFAULT '0',
+ `RowVersion` blob NOT NULL,
+ UNIQUE KEY `TagID` (`TagID`)
+) ENGINE=InnoDB AUTO_INCREMENT=159 DEFAULT CHARSET=utf8;
+
+/*Data for the table `meta_tag` */
+
+insert into `meta_tag`(`TagID`,`TagName`,`DataType`,`DataSize`,`Address`,`GroupID`,`IsActive`,`Archive`,`DefaultValue`,`Description`,`Maximum`,`Minimum`,`Cycle`,`RowVersion`) values (2,'Receiving1_AlmAck',1,1,'Channel4.Receiving1.K0008.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0划'),(3,'Receiving1_888',1,1,'Channel4.Receiving1.K0006.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0化'),(4,'Receiving1_Conveyor3_Running',1,1,'Channel4.Receiving1.K0006.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0话'),(5,'Receiving1_Conveyor4_Alarm',1,1,'Channel4.Receiving1.K0001.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0槐'),(6,'Receiving1_Conveyor4_Running',1,1,'Channel4.Receiving1.K0001.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0徊'),(7,'Receiving1_Conveyor5_Alarm',1,1,'Channel4.Receiving1.K0008.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0怀'),(8,'Receiving1_Conveyor5_Running',1,1,'Channel4.Receiving1.K0007.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0淮'),(9,'Receiving1_Conveyor6_Alarm',1,1,'Channel4.Receiving1.K0008.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0坏'),(10,'Receiving1_Conveyor6_Running',1,1,'Channel4.Receiving1.K0005.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0欢'),(11,'Receiving1_Conveyor7_Alarm',1,1,'Channel4.Receiving1.K0006.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0环'),(12,'Receiving1_Conveyor7_Running',1,1,'Channel4.Receiving1.K0006.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0桓'),(13,'Receiving1_Conveyor8_Running',1,1,'Channel4.Receiving1.K0001.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0还'),(14,'Receiving1_Conveyor9_Alarm',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0缓'),(15,'Receiving1_Conveyor9_Running',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0换'),(16,'Receiving1_DF01SQH_Alarm',1,1,'Channel4.Receiving1.K0002.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0患'),(17,'Receiving1_DF01SQL_Alarm',1,1,'Channel4.Receiving1.K0003.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0唤'),(18,'Receiving1_DF02SQH_Alarm',1,1,'Channel4.Receiving1.K0002.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0痪'),(19,'Receiving1_DF02SQL_Alarm',1,1,'Channel4.Receiving1.K0003.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0豢'),(20,'Receiving1_DF03SQH_Alarm',1,1,'Channel4.Receiving1.K0002.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0焕'),(21,'Receiving1_DF03SQL_Alarm',1,1,'Channel4.Receiving1.K0003.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0涣'),(22,'Receiving1_DF04SQH_Alarm',1,1,'Channel4.Receiving1.K0002.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0宦'),(23,'Receiving1_DF04SQL_Alarm',1,1,'Channel4.Receiving1.K0003.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0幻'),(24,'Receiving1_DF05SQH_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0荒'),(25,'Receiving1_DF05SQL_Alarm',1,1,'Channel4.Receiving1.K0003.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0慌'),(26,'Receiving1_DF06SQL_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0黄'),(27,'Receiving1_F01SQH_Alarm',1,1,'Channel4.Receiving1.K0007.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0磺'),(28,'Receiving1_F02SQH_Alarm',1,1,'Channel4.Receiving1.K0007.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0蝗'),(29,'Receiving1_F03SQH_Alarm',1,1,'Channel4.Receiving1.K0007.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0簧'),(30,'Receiving1_F04SQH_Alarm',1,1,'Channel4.Receiving1.K0007.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0皇'),(31,'Receiving1_F05SQH_Alarm',1,1,'Channel4.Receiving1.K0007.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0凰'),(32,'Receiving1_F06SQH_Alarm',1,1,'Channel4.Receiving1.K0007.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惶'),(33,'Receiving1_Fan1_Alarm',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0煌'),(34,'Receiving1_Fan1_Running',1,1,'Channel4.Receiving1.K0008.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0晃'),(35,'Receiving1_Fan2_Running',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0幌'),(36,'Receiving1_Fan3_Running',1,1,'Channel4.Receiving1.K0001.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0恍'),(37,'Receiving1_FourWays_Left',1,1,'Channel4.Receiving1.K0006.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0谎'),(38,'Receiving1_FourWays_MID',1,1,'Channel4.Receiving1.K0006.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0灰'),(39,'Receiving1_FourWays_Right',1,1,'Channel4.Receiving1.K0006.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0挥'),(40,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0辉'),(41,'Receiving1_Gate10_Alarm',1,1,'Channel4.Receiving1.K0003.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0徽'),(42,'Receiving1_Gate10_Cls',1,1,'Channel4.Receiving1.K0004.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0恢'),(43,'Receiving1_Gate10_Ols',1,1,'Channel4.Receiving1.K0004.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0蛔'),(44,'Receiving1_Gate11_Alarm',1,1,'Channel4.Receiving1.K0005.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0回'),(45,'Receiving1_Gate11_Cls',1,1,'Channel4.Receiving1.K0001.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0毁'),(46,'Receiving1_Gate11_Ols',1,1,'Channel4.Receiving1.K0005.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0悔'),(47,'Receiving1_Gate12_Alarm',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0慧'),(48,'Receiving1_Gate12_Cls',1,1,'Channel4.Receiving1.K0001.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0卉'),(49,'Receiving1_Gate12_Ols',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惠'),(50,'Receiving1_Gate13_Alarm',1,1,'Channel4.Receiving1.K0005.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0晦'),(51,'Receiving1_Gate13_Cls',1,1,'Channel4.Receiving1.K0001.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0贿'),(52,'Receiving1_Gate13_Ols',1,1,'Channel4.Receiving1.K0005.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0秽'),(53,'Receiving1_Gate14_Alarm',1,1,'Channel4.Receiving1.K0005.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0会'),(54,'Receiving1_Gate14_Cls',1,1,'Channel4.Receiving1.K0000.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0烩'),(55,'Receiving1_Gate14_Ols',1,1,'Channel4.Receiving1.K0005.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0汇'),(56,'Receiving1_Gate15_Alarm',1,1,'Channel4.Receiving1.K0005.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0讳'),(57,'Receiving1_Gate15_Cls',1,1,'Channel4.Receiving1.K0000.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0诲'),(58,'Receiving1_Gate15_Ols',1,1,'Channel4.Receiving1.K0005.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0绘'),(59,'Receiving1_Gate16_Ols',1,1,'Channel4.Receiving1.K0000.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0荤'),(60,'Receiving1_Gate17_Ols',1,1,'Channel4.Receiving1.K0000.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0昏'),(61,'Receiving1_Gate18_Ols',1,1,'Channel4.Receiving1.K0000.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0婚'),(62,'Receiving1_Gate19_Ols',1,1,'Channel4.Receiving1.K0000.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0魂'),(63,'Receiving1_Gate20_Ols',1,1,'Channel4.Receiving1.K0000.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0浑'),(64,'Receiving1_Gate21_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0混'),(65,'Receiving1_Gate3_Alarm',1,1,'Channel4.Receiving1.K0005.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0豁'),(66,'Receiving1_Gate3_Cls',1,1,'Channel4.Receiving1.K0000.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0活'),(67,'Receiving1_Gate3_Ols',1,1,'Channel4.Receiving1.K0005.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0伙'),(68,'Receiving1_Gate4_Alarm',1,1,'Channel4.Receiving1.K0005.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0火'),(69,'Receiving1_Gate4_Cls',1,1,'Channel4.Receiving1.K0000.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0获'),(70,'Receiving1_Gate4_Ols',1,1,'Channel4.Receiving1.K0005.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0或'),(71,'Receiving1_Gate5_Alarm',1,1,'Channel4.Receiving1.K0003.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惑'),(72,'Receiving1_Gate5_Cls',1,1,'Channel4.Receiving1.K0004.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0霍'),(73,'Receiving1_Gate5_Ols',1,1,'Channel4.Receiving1.K0000.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0货'),(74,'Receiving1_Gate6_Alarm',1,1,'Channel4.Receiving1.K0003.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0祸'),(75,'Receiving1_Gate6_Cls',1,1,'Channel4.Receiving1.K0004.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0击'),(76,'Receiving1_Gate6_Ols',1,1,'Channel4.Receiving1.K0000.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0圾'),(77,'Receiving1_Gate7_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0基'),(78,'Receiving1_Gate7_Cls',1,1,'Channel4.Receiving1.K0004.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0机'),(79,'Receiving1_Gate7_Ols',1,1,'Channel4.Receiving1.K0000.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0畸'),(80,'Receiving1_Gate8_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0稽'),(81,'Receiving1_Gate8_Cls',1,1,'Channel4.Receiving1.K0004.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0积'),(82,'Receiving1_Gate8_Ols',1,1,'Channel4.Receiving1.K0000.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0箕'),(83,'Receiving1_Gate9_Alarm',1,1,'Channel4.Receiving1.K0003.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(84,'Receiving1_Gate9_Cls',1,1,'Channel4.Receiving1.K0004.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(85,'Receiving1_Gate9_Ols',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(86,'Receiving1_Gate9_Ols4',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(87,'Receiving1_Gate9_Ols5',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(88,'Receiving1_Gate9_Ols6',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(89,'Receiving1_Gate9_Ols7',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(90,'Receiving1_Gate9_Ols8',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(91,'Receiving1_Gate9_Ols9',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(92,'Receiving1_leg1alm',1,1,'Channel4.Receiving1.K0010.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(93,'Receiving1_LegMotor1_Overload',8,4,'Channel4.Receiving1.R0016',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪n'),(94,'Receiving1_LegMotor1_Running',1,1,'Channel4.Receiving1.K0006.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(95,'Receiving1_LegMotor2_Overload',8,4,'Channel4.Receiving1.R0024',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(96,'Receiving1_LegMotor2_Running',1,1,'Channel4.Receiving1.K0005.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪r'),(97,'Receiving1_Legmotor2Speed_Speed',8,4,'Channel4.Receiving1.R0028',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(98,'Receiving1_LegMotor3_Overload',8,4,'Channel4.Receiving1.R0044',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(99,'Receiving1_LegMotor3_Running',1,1,'Channel4.Receiving1.K0006.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(100,'Receiving1_Legmotor3Curr_Digi',8,4,'Channel4.Receiving1.R0036',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(101,'Receiving1_Legmotor3Speed_Speed',8,4,'Channel4.Receiving1.R0048',20001,'','',NULL,'鎻愬崌鏈烘祴閫',0.00,0.00,0,'\0\0\0\0\0'),(102,'Receiving1_LegMotor4_Overload',8,4,'Channel4.Receiving1.R0004',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(103,'Receiving1_LegMotor4_Running',1,1,'Channel4.Receiving1.K0001.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(104,'Receiving1_Legmotor4Curr_Digi',8,4,'Channel4.Receiving1.R0000',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(105,'Receiving1_LocalRemote',1,1,'Channel4.Receiving1.K0008.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(106,'Receiving1_MagicRoll1_Alarm',1,1,'Channel4.Receiving1.K0007.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(107,'Receiving1_MagicRoll1_Running',1,1,'Channel4.Receiving1.K0006.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(108,'Receiving1_MagicRoll2_Alarm',1,1,'Channel4.Receiving1.K0007.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(109,'Receiving1_MagicRoll2_Running',1,1,'Channel4.Receiving1.K0006.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪Z'),(110,'Receiving1_MagicRoll3_Alarm',1,1,'Channel4.Receiving1.K0007.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(111,'Receiving1_MagicRoll3_Running',1,1,'Channel4.Receiving1.K0006.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(112,'Receiving1_MagicRoll4_Alarm',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(113,'Receiving1_MagicRoll4_Running',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(114,'Receiving1_Sifter1_Running',1,1,'Channel4.Receiving1.K0006.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(115,'Receiving1_Sifter2_Running',1,1,'Channel4.Receiving1.K0006.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(116,'Receiving1_Sifter3_Alarm',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0!'),(117,'Receiving1_Sifter3_Running',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪"'),(118,'Receiving1_ThreeWays1_Left',1,1,'Channel4.Receiving1.K0001.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0#'),(119,'Receiving1_ThreeWays1_Right',1,1,'Channel4.Receiving1.K0001.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0$'),(120,'Receiving1_ThreeWays2_Left',1,1,'Channel4.Receiving1.K0006.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0%'),(121,'Receiving1_ThreeWays2_Right',1,1,'Channel4.Receiving1.K0006.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0&'),(122,'Receiving2_LegCUR102_Digi',8,4,'Channel4.Receiving1.R0020',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪''),(123,'Receiving2_LegCUR106_Digi',8,4,'Channel4.Receiving1.R0012',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0('),(124,'Receiving1_Conveyor1_Alarm',1,1,'Channel4.Receiving2.K0002.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0)'),(125,'Receiving1_Conveyor1_Running',1,1,'Channel4.Receiving2.K0002.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0*'),(126,'Receiving1_Conveyor2_Alarm',1,1,'Channel4.Receiving2.K0002.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0+'),(127,'Receiving1_Conveyor2_Running',1,1,'Channel4.Receiving2.K0002.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0,'),(128,'Receiving1_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0-'),(129,'Receiving1_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0.'),(130,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0/'),(131,'Receiving1_Gate2_Alarm',1,1,'Channel4.Receiving2.K0001.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\00'),(132,'Receiving1_Gate2_Cls',1,1,'Channel4.Receiving2.K0001.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\01'),(133,'Receiving1_Gate2_Ols',1,1,'Channel4.Receiving2.K0001.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\02'),(134,'Receiving2_Airport1_Alarm',1,1,'Channel4.Receiving2.K0002.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\03'),(135,'Receiving2_Airport1_Running',1,1,'Channel4.Receiving2.K0001.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\04'),(136,'Receiving2_Airport2_Alarm',1,1,'Channel4.Receiving2.K0001.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\05'),(137,'Receiving2_Airport2_Running',1,1,'Channel4.Receiving2.K0001.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\06'),(138,'Receiving2_AlmAck',1,1,'Channel4.Receiving2.K0002.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\07'),(139,'Receiving2_Converyor1_Running',1,1,'Channel4.Receiving2.K0001.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\08'),(140,'Receiving2_Converyor2_Alarm',1,1,'Channel4.Receiving2.K0002.12',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\09'),(141,'Receiving2_Converyor2_Running',1,1,'Channel4.Receiving2.K0002.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0:'),(142,'Receiving2_Fan1_Alarm',1,1,'Channel4.Receiving2.K0001.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0;'),(143,'Receiving2_Fan1_Running',1,1,'Channel4.Receiving2.K0001.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0<'),(144,'Receiving2_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0='),(145,'Receiving2_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.06',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0>'),(146,'Receiving2_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0?'),(147,'Receiving2_Gate2_Ols',1,1,'Channel4.Receiving2.K0002.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0粿'),(148,'Receiving2_LegMotor1_Overload',8,4,'Channel4.Receiving2.R0008',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糀'),(149,'Receiving2_Legmotor1Speed_Speed',8,4,'Channel4.Receiving2.R0012',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糂'),(150,'Receiving2_LegMotor2_Overload',8,4,'Channel4.Receiving2.R0000',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糃'),(151,'Receiving2_LegMotor2_Running',1,1,'Channel4.Receiving2.K0002.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糄'),(152,'Receiving2_Legmotor2Speed_Speed',8,4,'Channel4.Receiving2.R0004',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糆'),(153,'Receiving2_LocalRemote',1,1,'Channel4.Receiving2.K0002.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糉'),(154,'Receiving2_MagicRoll1_Alarm',1,1,'Channel4.Receiving2.K0002.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糋'),(155,'Receiving2_MagicRoll1_Running',1,1,'Channel4.Receiving2.K0002.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糎'),(156,'Receiving2_Sifter1_Alarm',1,1,'Channel4.Receiving2.K0002.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糏'),(157,'Receiving2_Sifter1_Running',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糐'),(158,'Receiving2_Sifter1_Running8',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糑');
+
+/*Table structure for table `registermodule` */
+
+DROP TABLE IF EXISTS `registermodule`;
+
+CREATE TABLE `registermodule` (
+ `DriverID` int(10) NOT NULL AUTO_INCREMENT,
+ `AssemblyName` varchar(255) DEFAULT NULL,
+ `ClassName` varchar(50) DEFAULT NULL,
+ `ClassFullName` varchar(128) DEFAULT NULL,
+ `Description` varchar(50) DEFAULT NULL,
+ UNIQUE KEY `DriverID` (`DriverID`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+
+/*Data for the table `registermodule` */
+
+insert into `registermodule`(`DriverID`,`AssemblyName`,`ClassName`,`ClassFullName`,`Description`) values (4,'E:\\SCADA\\dll\\OPCDriver.dll','OPCReader','OPCDriver.OPCReader','OPC鍗忚'),(5,'E:\\SCADA\\dll\\FileDriver.dll','DataBaseReader','FileDriver.DataBaseReader','SQL 鏁版嵁搴'),(6,'E:\\SCADA\\dll\\FileDriver.dll','TagDriver','FileDriver.TagDriver','鏍囩鐩存帴璇诲啓'),(8,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusRTUReader','ModbusDriver.ModbusRTUReader','Modbus RTU鍗忚'),(9,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusTCPReader','ModbusDriver.ModbusTCPReader','Modbus Tcp鍗忚'),(10,'E:\\SCADA\\dll\\SiemensPLCDriver.dll','SiemensTCPReader','SiemensPLCDriver.SiemensTCPReader','S7 浠ュお缃戝崗璁');
+
+/* Procedure structure for procedure `AddEventLog` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `AddEventLog` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `AddEventLog`(IN pStartTime DATETIME,
+ IN pSource NVARCHAR(50) ,
+ IN pComment NVARCHAR(50))
+BEGIN
+IF pComment<>IFNULL((SELECT Comment FROM LOG_EVENT WHERE EVENTTYPE=2 AND Source=Source ORDER BY SQLCOUNTER DESC LIMIT 1),'') THEN
+ INSERT INTO LOG_EVENT(EVENTTYPE,SEVERITY,ACTIVETIME,SOURCE,COMMENT) VALUES(2,0,pStartTime,pSource,pComment);
+END IF;
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `GetAlarm` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `GetAlarm` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAlarm`(IN pStartTime DATETIME,
+ IN pEndTime DATETIME )
+BEGIN
+SELECT StartTime,AlarmText,AlarmValue,SubAlarmType,Severity,ConditionID,Source,Duration FROM LOG_ALARM WHERE StartTime BETWEEN pStartTime AND pEndTime ORDER BY StartTime;
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `GetEventTime` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `GetEventTime` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEventTime`(IN pEVENTTYPE int,
+ IN pSOURCE nvarchar(50),
+ IN pCOMMENT nvarchar(50),
+ OUT pSTARTTIME DATETIME,
+ OUT pENDTIME DATETIME)
+BEGIN
+DECLARE _ID INT DEFAULT 0;
+
+SELECT SQLCOUNTER,ACTIVETIME INTO _ID,pSTARTTIME FROM LOG_EVENT WHERE EVENTTYPE=pEVENTTYPE AND SOURCE=pSOURCE AND COMMENT=pCOMMENT ORDER BY ACTIVETIME DESC LIMIT 1;
+
+SET @sql = CONCAT('SELECT ACTIVETIME INTO ', pENDTIME, ' FROM LOG_EVENT WHERE EVENTTYPE = "',
+ pEVENTTYPE, '" AND SOURCE = "', pSOURCE, '" AND SQLCOUNTER> ',_ID,' ORDER BY ACTIVETIME DESC LIMIT 1');
+ PREPARE stmt FROM @sql;
+ EXECUTE stmt;
+ DEALLOCATE PREPARE stmt;
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `InitServer` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `InitServer` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `InitServer`(IN pTYPE int)
+BEGIN
+
+ IF pTYPE<>1 THEN
+ SELECT M.DRIVERID,DRIVERNAME,SERVER,TIMEOUT,R.AssemblyName,R.ClassFullName,Spare1,Spare2 FROM META_DRIVER M INNER JOIN RegisterModule R ON M.DRIVERTYPE=R.DriverID;
+ END IF;
+
+ SELECT COUNT(*) FROM META_TAG;
+
+ SELECT TAGID,GROUPID,RTRIM(TAGNAME),ADDRESS,DATATYPE,DATASIZE,ARCHIVE,MAXIMUM,MINIMUM,CYCLE FROM META_TAG WHERE ISACTIVE=1;
+
+ IF pTYPE<>1 THEN
+ SELECT DRIVERID,GROUPNAME,GROUPID,UPDATERATE,DEADBAND,ISACTIVE FROM META_GROUP ;
+ END IF;
+
+ IF pTYPE=0 THEN
+ SELECT SOURCE FROM META_Condition WHERE EVENTTYPE=2;
+ END IF;
+
+ IF pTYPE<>2 THEN
+ SELECT TYPEID,SOURCE,ALARMTYPE,A.ISENABLED,CONDITIONTYPE,PARA,IFNULL(COMMENT,''),DEADBAND,DELAY,SUBALARMTYPE,Threshold,SEVERITY,
+ IFNULL(MESSAGE,''),B.ISENABLE FROM META_Condition a LEFT OUTER JOIN META_SUBCONDITION b ON a.TypeID=b.ConditionID WHERE EVENTTYPE<>2;
+ END IF;
+
+ -- LEFT OUTER JOIN META_TAG c ON a.SOURCEID=c.TAGID
+ SELECT SCALEID,SCALETYPE,EUHI,EULO,RAWHI,RAWLO FROM META_SCALE;
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `ReadALL` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `ReadALL` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadALL`(IN pGroupID SMALLINT)
+BEGIN
+
+SELECT COUNT(*) FROM META_TAG WHERE GROUPID=pGroupID AND IsActive=1;
+SELECT TAGID,DATATYPE,IFNULL(DEFAULTVALUE,0) FROM META_TAG WHERE IsActive=1 AND GROUPID=pGroupID ORDER BY TAGID;
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `ReadHData` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `ReadHData` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadHData`(IN pStartTime DATETIME,
+ IN pEndTime DATETIME,
+ IN pID INT)
+BEGIN
+
+ IF pID IS NULL THEN
+ SELECT ID,TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY ID,TIMESTAMP;
+ ELSE
+ SELECT TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE ID=pID AND TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY TIMESTAMP;
+ -- select ID,TIMESTAMP,VALUE from HDADATA WHERE TIMESTAMP BETWEEN @StartTime AND @EndTime order by TIMESTAMP
+ END IF;
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `ReadValueByID` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `ReadValueByID` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadValueByID`(IN pID SMALLINT,
+ IN pDATATYPE TinyInt)
+BEGIN
+
+ -- 寰呭畬鍠
+-- IF @DATATYPE=1
+-- SELECT CAST(DEFAULTVALUE AS BIT) FROM META_TAG WHERE TAGID=@ID
+-- ELSE IF @DATATYPE=3
+-- SELECT CAST(DEFAULTVALUE AS TINYINT) FROM META_TAG WHERE TAGID=@ID
+-- ELSE IF @DATATYPE=4
+-- SELECT CAST(DEFAULTVALUE AS SMALLINT) FROM META_TAG WHERE TAGID=@ID
+-- ELSE IF @DATATYPE=7
+-- SELECT CAST(DEFAULTVALUE AS INT) FROM META_TAG WHERE TAGID=@ID
+-- ELSE IF @DATATYPE=8
+-- SELECT CAST(DEFAULTVALUE AS REAL) FROM META_TAG WHERE TAGID=@ID
+-- ELSE IF @DATATYPE=11
+-- SELECT CAST(DEFAULTVALUE AS VARCHAR) FROM META_TAG WHERE TAGID=@ID
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `UpdateValueByID` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `UpdateValueByID` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateValueByID`(IN pID SMALLINT,
+ IN pValue varchar(50))
+BEGIN
+
+ UPDATE META_TAG SET DEFAULTVALUE=pValue WHERE TAGID=pID;
+
+END */$$
+DELIMITER ;
+
+/* Procedure structure for procedure `WriteHData` */
+
+/*!50003 DROP PROCEDURE IF EXISTS `WriteHData` */;
+
+DELIMITER $$
+
+/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `WriteHData`(IN pDATE DATETIME)
+BEGIN
+
+ -- DELETE FROM LOG_HDATA FROM LOG_HDATA L INNER JOIN META_TAG T ON T.TAGID=L.ID WHERE T.DATATYPE=11
+ -- SELECT COUNT(*),COUNT(DISTINCT ID) FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0;
+ -- SELECT H.ID,T.DATATYPE,C FROM( SELECT ID,COUNT(*)C FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 GROUP BY ID)H INNER JOIN META_TAG T ON H.ID=T.TAGID ORDER BY ID --WITH ROLLUP
+ -- SELECT TIMESTAMP,VALUE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 ORDER BY ID,TIMESTAMP
+
+ -- DELETE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0;
+END */$$
+DELIMITER ;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
diff --git a/SCADA/Program/CoreTest/Example.csproj b/SCADA/Program/CoreTest/Example.csproj
index acfe045..81ecc02 100644
--- a/SCADA/Program/CoreTest/Example.csproj
+++ b/SCADA/Program/CoreTest/Example.csproj
@@ -44,15 +44,15 @@
False
- bin\Microsoft.Expression.Controls.dll
+ ..\..\dll\Microsoft.Expression.Controls.dll
False
- bin\Microsoft.Expression.Drawing.dll
+ ..\..\dll\Microsoft.Expression.Drawing.dll
False
- bin\Microsoft.Expression.Interactions.dll
+ ..\..\dll\Microsoft.Expression.Interactions.dll
@@ -60,7 +60,7 @@
False
- bin\System.Windows.Interactivity.dll
+ ..\..\dll\System.Windows.Interactivity.dll
diff --git a/SCADA/Program/HMIControl/HMIControl.csproj b/SCADA/Program/HMIControl/HMIControl.csproj
index 4c107d1..63378e9 100644
--- a/SCADA/Program/HMIControl/HMIControl.csproj
+++ b/SCADA/Program/HMIControl/HMIControl.csproj
@@ -34,8 +34,14 @@
4
-
-
+
+ False
+ ..\..\dll\Microsoft.Expression.Controls.dll
+
+
+ False
+ ..\..\dll\Microsoft.Expression.Drawing.dll
+
diff --git a/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll b/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll
index a858de3..d3c90cc 100644
Binary files a/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll and b/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll differ
diff --git a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Controls.xml b/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Controls.xml
deleted file mode 100644
index aaaf85b..0000000
--- a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Controls.xml
+++ /dev/null
@@ -1,557 +0,0 @@
-
-
-
- Microsoft.Expression.Controls
-
-
-
-
- Called before the polylines are looped over.
-
-
-
-
- Computes the value used when LayoutPath.Capacity is set to Auto.
-
-
-
-
- Checks whether or not the polylines should continue being looped over.
-
-
-
-
- Called before a new polyline is marched.
-
-
-
-
- Called when a polyline is completed.
-
- The remaining arclength in the polyline.
-
-
-
- Called when a step is successfully completed.
-
- The actual step distance.
- This may be different than Step if another polyline has been wrapped to.
-
-
-
- Distributes the children of a path panel along a given layout path.
-
- The path panel.
- The index of the path in pathPanel.LayoutPaths.
- The index of the first child to be laid out on this path.
- The index of the next child to be distributed. If childIndex is returned, this function has done nothing.
-
-
-
- The index of the next child to be arranged.
-
-
-
-
- The distance in arc length that will be used for layout.
-
-
-
-
- The distance in arc length to walk along the current polyline.
-
-
-
-
- The total number of elements to be arranged on the LayoutPath.
-
-
-
-
- Distributes the children of a path panel along a layout path.
- Even distribution means that there is equal arclength between the centers of all
- the elements on the path.
-
-
-
-
- Specifies which path layout properties have changed.
-
-
-
-
- Provides data for the event.
-
-
-
-
- Initializes a new instance of the class.
-
- The data for the event.
-
-
-
- Gets the properties changed in a event.
-
-
-
-
- Encapsulates the data needed to update a .
-
-
-
-
- Gets or sets the index of the path on which an element is arranged.
-
-
-
-
- Gets or sets the index of an element in a collection of elements.
-
-
-
-
- Gets or sets the index of an element on a path.
-
-
-
-
- Gets or sets the offset of an element proportional to the total length of a collection of paths.
-
-
-
-
- Gets or sets the offset of an element proportional to the length of a path.
-
-
-
-
- Gets or sets the angle perpendicular to the path at an element's location.
-
-
-
-
- Gets or sets the angle perpendicular to the path at an element's location if the element is oriented to the path.
-
-
-
-
- Gets or sets whether or not an element is arranged on a path.
-
-
-
-
- Represents an element that is arranged by a .
-
-
- Implementing this interface enables to set these properties when the element is arranged.
- This interface is not intended for general implementation.
-
-
-
-
- Updates the properties based on the given and raises the event.
-
- The data needed to update the .
-
-
-
- Occurs when one or more of the properties change.
-
-
- This event is raised whenever the item鈥檚 position along the path is updated. This can occur due to changes in the properties on the or changes to .
-
-
-
-
- Gets the index of the path on which the item is arranged.
-
-
-
-
- Gets the index of the item in a collection of items.
-
-
-
-
- Gets the index of the item on the path on which it is arranged.
-
-
-
-
- Gets the offset of the item proportional to the total length of a collection of paths.
-
-
-
-
- Gets the offset of the item proportional to the length of the path on which it is arranged.
-
-
-
-
- Gets the angle perpendicular to the path at the item's location.
-
-
-
-
- Gets the angle perpendicular to the path at the items's location if the item is oriented to the path.
-
-
-
-
- Gets or sets whether or not the item is arranged on the path.
-
-
-
-
- Converts a representing whether or not an element is arranged to a value used to scale the element.
-
-
-
-
- Throws a exception in all cases.
-
- The target data being passed to the source.
- The of data expected by the source object.
- An optional parameter to be used in the converter logic.
- The culture of the conversion.
- The value to be passed to the source object.
-
-
-
- Converts the specified to a .
-
- The source data being passed to the target.
- The of data expected by the target dependency property.
- An optional parameter to be used in the converter logic.
- The culture of the conversion.
- If the is true, 1 is returned. Else, 0 is returned.
-
-
-
- Specifies the distribution of a .
-
-
-
-
- Specifies the orientation of elements on a .
-
-
-
-
- Specifies the method for altering the on an open path.
-
-
-
-
- Describes a path along which elements are arranged.
-
-
-
-
- Ideally, we want to cache the Bezier curves before flattening, because transform will affect flattening.
- That requires us to cache curves that we don't support very well yet. Instead, we cache the flatten points
- in distribution strategy and transform them on demand.
-
-
-
-
- Gets or sets the element that defines the path.
-
-
-
-
- Gets or sets whether items are laid out evenly or with a fixed padding.
-
-
-
-
- Gets or sets the maximum number of items displayed on the .
-
-
-
-
- Gets or sets the distance in pixels along the arc length of the between two items.
-
-
-
-
- Gets or sets the orientation of the items.
-
-
- This property is supported on , but not .
-
-
-
-
- Gets or sets the distance from the start of the to place the first item.
-
-
-
-
- Gets or sets the percentage of the that participates in layout.
-
-
-
-
- Gets or set the method to alter on an open path.
-
-
-
-
- Gets the computed Capacity.
-
-
-
-
- Gets whether or not the is valid in the context.
- A is not valid if it is a descendant of the in which it is used.
-
-
-
-
- Distributes the children of a layout path based on the size of the children and a given padding between the children.
- The distance in arclength between children is determined by the padding plus the sum of the radii of the children's bounding boxes.
-
-
-
-
- Contains a list of items that are laid out along one or more paths.
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Creates the element used to display a specified item.
-
- A corresponding to a specified item.
-
-
-
- Determines if the specified item is (or is eligible to be) its own item container.
-
- true if the item is its own item container; otherwise, false.
- The specified item.
-
-
-
- Positions child elements.
-
- The size that this object should use to arrange its child elements.
- The actual size used.
-
-
-
- Gets or sets a collection of objects that define the path(s) used for layout.
-
-
-
-
- Gets or sets the index to use within the list of items.
-
-
-
-
- Gets or sets whether the item index wraps to the beginning of the collection when StartItemIndex is greater than 0.
-
-
-
-
- Represents an item in a .
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- For a description of this member, see .
-
-
-
-
- Arranges child elements along one or more path.
-
-
- can be used as an alternative to when selection is not necessary.
- The property is not supported on .
-
-
-
-
- Initializes a new instance of the class.
-
-
-
-
- Measures the size required for child elements.
-
- The available size that this element can give to child elements.
- The size that this element determines it needs during layout, based on its calculations of child element sizes.
-
-
-
- Positions child elements.
-
- The size that this object should use to arrange its child elements.
- The actual size used.
-
-
-
- Arranges the child at the given index at a particular location on a LayoutPath.
-
- An index from the range 0 to PathPanel.Count.
- The index of the layout path on which to arrange the child.
- The polyline in the layout path.
- The location on the polyline.
- The index of the child on the LayoutPath.
-
-
-
- Calculates the radius of the bounding circle for the child at the given index.
-
- An index from the range 0 to PathPanel.Count.
-
-
-
- Gets or sets a collection of objects that define the path(s) used for layout.
-
-
-
-
- Gets or sets the index to use within the list of items.
-
-
-
-
- Gets or sets whether the item index wraps to the beginning of the collection when is greater than 0.
-
-
-
-
- The subset of LayoutPaths that are attached and not collapsed.
-
-
-
-
- Count is the number of Children that the PathPanel will lay out.
- If StartItemIndex > 0 and WrapItems is false, then this can be less than PathPanel.Children.Count
-
-
-
-
- Gets the panel that contains the containers of an ItemsControl.
-
- The ItemsControl.
-
- The panel that contains the containers of an ItemsControl, or null
- if the panel could not be found.
-
-
- is null.
-
-
-
-
- Traverses a tree by accepting an initial value and a function that
- retrieves the child nodes of a node.
-
- The type of the stream.
- The initial node.
- A function that retrieves the child
- nodes of a node.
- A predicate that evaluates a node
- and returns a value indicating whether that node and it's children
- should be traversed.
- A stream of nodes.
-
-
-
- Get the visual tree children of an element.
-
- The element.
- The visual tree children of an element.
-
- is null.
-
-
-
-
- Get the visual tree children of an element and the element itself.
-
- The element.
-
- The visual tree children of an element and the element itself.
-
-
-
-
- Retrieves all the logical children of a framework element using a
- breadth-first search. For performance reasons this method manually
- manages the stack instead of using recursion.
-
- The parent framework element.
- The logical children of the framework element.
-
-
-
- Retrieves all the logical descendents of a framework element using a
- breadth-first search. For performance reasons this method manually
- manages the stack instead of using recursion.
-
- The parent framework element.
- The logical children of the framework element.
-
-
-
diff --git a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Drawing.xml b/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Drawing.xml
deleted file mode 100644
index f396802..0000000
--- a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Drawing.xml
+++ /dev/null
@@ -1,1770 +0,0 @@
-
-
-
- Microsoft.Expression.Drawing
-
-
-
-
- Renders a callout shape supporting several shapes combined with a callout arrow.
-
-
-
-
- Provides a base class of a composite shape that derives from and implements .
-
-
- implements interface,
- and supports rendering a geometry similar to , but the geometry can be rendered outside the layout boundary.
-
- A typical implementation has a customized default template in generic.xaml which template-binds most shape properties to a .
- It should also extend the property to customize the appearance of the .
-
- This class also supports showing content together with the shape.
-
-
-
-
- Provides an interface to describe the parameters of a Shape.
-
-
- This interface is the data for communication between Shape and GeometrySource.
- Typically, a concrete implementation of IShape will implement this interface and pass it into
- GeometrySource.UpdateGeometry(), which will then consume the shape as a read-only data provider.
-
-
-
-
- Provides the necessary interface to define a Shape.
- Both primitive and composite shapes need to match this interface, although they might derive from different types of FrameworkElement.
-
-
-
-
- Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously.
-
-
-
- Gets or sets the that specifies how to paint the interior of the shape.
- A that describes how the shape's interior is painted. The default is null.
-
-
- Gets or sets the that specifies how the outline is painted.
- A that specifies how the outline is painted.
-
-
- Gets or sets the width of the stroke outline.
- The width of the outline, in pixels.
-
-
- Gets or sets a enumeration value that describes how the shape fills its allocated space.
- One of the enumeration values. The default value at runtime depends on the type of .
-
-
-
- Gets the rendered geometry presented by the rendering engine.
-
-
-
-
- Gets the margin between logical bounds and actual geometry bounds.
- This can be either positive (as in ) or negative (as in ).
-
-
-
-
- Occurs when RenderedGeometry is changed.
-
-
-
-
- Extends how the shape is drawn with creating geometry source.
-
-
-
-
- Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously.
-
-
-
- Provides the behavior for the Arrange portion of a Silverlight layout pass. Classes can override this method to define their own Arrange pass behavior.
- The actual size used once the element is arranged in layout.
- The final area within the parent that this object should use to arrange itself and its children.
- will recompute the Geometry when it's invalidated and update the RenderedGeometry and GeometryMargin.
-
-
-
- Transforms a string content into with center alignment and multiple line support.
-
-
- Use template-binding to instead of to enable this method.
-
-
-
-
- Gets or sets the that specifies how to paint the interior of the shape.
-
- A that describes how the shape's interior is painted.
-
-
- Gets or sets the that specifies how the outline is painted.
- A that specifies how the outline is painted.
-
-
- Gets or sets the width of the stroke outline.
- The width of the outline, in pixels.
-
-
- Gets or sets a enumeration value that describes how the shape fills its allocated space.
- One of the enumeration values.
-
-
- Gets or sets a enumeration value that describes the at the start of a .
- A value of the enumeration that specifies the shape at the start of a .
-
-
- Gets or sets a enumeration value that describes the at the end of a line.
- One of the enumeration values for .
-
-
- Gets or sets a enumeration value that specifies the type of join that is used at the vertices of a .
- A value of the enumeration that specifies the join appearance.
-
-
- Gets or sets a limit on the ratio of the miter length to half the of a element.
- The limit on the ratio of the miter length to the of a element. This value is always a positive number that is greater than or equal to 1.
-
-
- Gets or sets a collection of values that indicate the pattern of dashes and gaps that is used to outline shapes.
- A collection of values that specify the pattern of dashes and gaps.
-
-
- Gets or sets a enumeration value that specifies how the ends of a dash are drawn.
- One of the enumeration values for . The default is .
-
-
- Gets or sets a that specifies the distance within the dash pattern where a dash begins.
- A that represents the distance within the dash pattern where a dash begins. The default value is 0.
-
-
-
- Gets the rendered geometry presented by the rendering engine.
-
-
-
-
- Gets the margin between the logical bounds and the actual geometry bounds.
- This can be either positive (as in ) or negative (as in ).
-
-
-
-
- Gets or sets the internal content that converts a string into a center-aligned, multiple-line TextBlock.
-
-
-
-
- Occurs when RenderedGeometry is changed.
-
-
-
-
- Gets or sets the position of the callout relative to the top and left corner.
-
-
-
-
- Gets or sets the callout style.
-
-
-
-
- Provides a base class of a composite shape that derives from and implements .
-
-
- implements interface,
- and supports rendering a geometry similar to , but the geometry can be rendered outside the layout boundary.
-
- A typical implementation has a customized default template in generic.xaml which template-binds most shape properties to a .
- It should also extend the property to customize the appearance of the .
-
-
-
-
- Extends how the shape is drawn with creating geometry source.
-
-
-
-
- Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously.
-
-
-
- Provides the behavior for the Arrange portion of a Silverlight layout pass. Classes can override this method to define their own Arrange pass behavior.
- The actual size used once the element is arranged in layout.
- The final area within the parent that this object should use to arrange itself and its children.
- will recompute the Geometry when it's invalidated and update the RenderedGeometry and GeometryMargin.
-
-
-
- Gets or sets the that specifies how to paint the interior of the shape.
-
- A that describes how the shape's interior is painted.
-
-
- Gets or sets the that specifies how the outline is painted.
- A that specifies how the outline is painted.
-
-
- Gets or sets the width of the stroke outline.
- The width of the outline, in pixels.
-
-
- Gets or sets a enumeration value that describes how the shape fills its allocated space.
- One of the enumeration values.
-
-
- Gets or sets a enumeration value that describes the at the start of a .
- A value of the enumeration that specifies the shape at the start of a .
-
-
- Gets or sets a enumeration value that describes the at the end of a line.
- One of the enumeration values for .
-
-
- Gets or sets a enumeration value that specifies the type of join that is used at the vertices of a .
- A value of the enumeration that specifies the join appearance.
-
-
- Gets or sets a limit on the ratio of the miter length to half the of a element.
- The limit on the ratio of the miter length to the of a element. This value is always a positive number that is greater than or equal to 1.
-
-
- Gets or sets a collection of values that indicate the pattern of dashes and gaps that is used to outline shapes.
- A collection of values that specify the pattern of dashes and gaps.
-
-
- Gets or sets a enumeration value that specifies how the ends of a dash are drawn.
- One of the enumeration values for . The default is .
-
-
- Gets or sets a that specifies the distance within the dash pattern where a dash begins.
- A that represents the distance within the dash pattern where a dash begins. The default value is 0.
-
-
-
- Gets the rendered geometry presented by the rendering engine.
-
-
-
-
- Gets the margin between the logical bounds and the actual geometry bounds.
- This can be either positive (as in ) or negative (as in ).
-
-
-
-
- Occurs when RenderedGeometry is changed.
-
-
-
-
- Renders a bent line segment with optional arrow heads on both ends.
-
-
-
- Provides the behavior for the Measure pass of Silverlight layout. Classes can override this method to define their own Measure pass behavior.
- The size that this object determines it requires during layout, based on its calculations of child object allotted sizes, or possibly on other considerations such as fixed container size.
- The available size that this object can give to child objects. Infinity () can be specified as a value to indicate that the object will size to whatever content is available.
-
- A default can render at anysize.
- The will stretch to the layout boundary and render to the outside if necessary.
-
-
-
-
- Gets or sets the amount of bend for the arrow.
-
- The bend amount between 0 and 1.
-
-
-
- Gets or sets how the arrow head is rendered at the start of the line.
-
-
-
-
- Gets or sets how the arrow head is rendered at the end of the line.
-
-
-
-
- Gets or sets from which corner to start drawing the arrow.
-
-
-
-
- Gets or sets the length of the arrow in pixels.
-
-
-
-
- Provides an items control that displays one selected item, and allows panning between items using touch gestures.
-
-
-
-
- The constructor for PanningItems.
-
-
-
-
- Called when the PanningItems template is applied.
-
-
-
-
- Gets or sets the orientation of items in the control.
-
-
-
-
- Gets or sets the flick tolerance. This can be a value between 0 and 1.
- It represents the percentage of the size of the PanningItems needed to be covered by the flick gesture to trigger an items change.
-
-
-
-
- Gets or sets the item before the selected item.
-
-
-
-
- Gets or sets the item after the selected item.
-
-
-
-
- Gets or sets whether the contents of the items control will loop, so that the first item will follow the last item.
-
-
-
-
- Gets or sets the value of the slider controlling the panning motion.
-
-
-
-
- Helper class to work with PathGeometry.
-
-
-
-
- Converts a string in the path mini-language into a PathGeometry.
-
- A string in the path mini-language.
-
-
-
- Converts the given geometry into a single PathGeometry.
-
-
-
-
- Updates the given geometry as PathGeometry with a polyline matching a given point list.
-
-
-
-
- Parses abbreviated geometry sytax.
-
-
-
-
- Helper class to convert an ArcSegment to BezierSegment(s).
-
-
- Helper class to work with PathSegment and all variations.
-
-
- Strategy classes to handle different types of PathSegment.
-
-
-
-
- Converts an arc segment into Bezier format.
- Returns BezierSegment, PolyBezierSegment, LineSegment, or null.
- When returning null, the arc degenerates into the start point.
-
-
-
-
- Avoid calling the three-parameter constructor, since it always sets a local value for IsStroked.
-
-
-
-
-
-
- Updates the SegmentCollection with a given polyline matching a given point list.
- Tries to keep changes minimum and returns false if nothing has been changed.
-
-
-
-
- Updates the collection[index] segment with a poly-Bezier segment matching a given point list.
- A given point list must contain 3*N points for N Bezier segments.
-
-
-
-
- Tests if a given path segment is empty.
-
-
-
-
- Gets the point count in a given path segment.
-
-
-
-
- Gets the last point of a given path segment.
-
-
-
-
- Gets the point of a given index in a given segment.
- If input is (-1), returns the last point.
-
-
-
-
- Flattens a given segment and adds resulting points into a given point list.
-
- The segment to be flatten.
- The resulting points list.
- The start point of the segment.
- The error tolerance. Must be positive. Can be zero. Fallback to default tolerance.
-
-
-
- ArcToBezier, computes the Bezier approximation of an arc.
-
-
- This utility computes the Bezier approximation for an elliptical arc as
- it is defined in the SVG arc spec. The ellipse from which the arc is
- carved is axis-aligned in its own coordinates, and defined there by its
- x and y radii. The rotation angle defines how the ellipse's axes are
- rotated relative to the x axis. The start and end points define one of 4
- possible arcs; the sweep and large-arc flags determine which one of
- these arcs will be chosen.
-
- Returning cPieces = 0 indicates a line instead of an arc
- cPieces = -1 indicates that the arc degenerates to a point
-
-
-
-
- Gets the number of Bezier arcs, and sine/cosine of each.
-
-
- This is a private utility used by ArcToBezier. Breaks the arc into
- pieces so that no piece will span more than 90 degrees. The input
- points are on the unit circle.
-
-
-
-
- GetBezierDistance returns the distance as a fraction of the radius.
-
-
- Get the distance from a circular arc's end points to the control points
- of the Bezier arc that approximates it, as a fraction of the arc's
- radius.
-
- Since the result is relative to the arc's radius, it depends strictly on
- the arc's angle. The arc is assumed to be of 90 degrees or less, so the
- angle is determined by the cosine of that angle, which is derived from
- rDot = the dot product of two radius vectors. We need the Bezier curve
- that agrees with the arc's points and tangents at the ends and midpoint.
- Here we compute the distance from the curve's endpoints to its control
- points.
-
- Since we are looking for the relative distance, we can work on the unit
- circle. Place the center of the circle at the origin, and put the X axis
- as the bisector between the 2 vectors. Let a be the angle between the
- vectors. Then the X coordinates of the 1st and last points are cos(a/2).
- Let x be the X coordinate of the 2nd and 3rd points. At t=1/2 we have a
- point at (1,0). But the terms of the polynomial there are all equal:
-
- (1-t)^3 = t*(1-t)^2 = t^2*(1-t) = t^3 = 1/8,
-
- so from the Bezier formula there we have:
-
- 1 = (1/8) * (cos(a/2) + 3x + 3x + cos(a/2)),
-
- hence
-
- x = (4 - cos(a/2)) / 3
-
- The X difference between that and the 1st point is:
-
- DX = x - cos(a/2) = 4(1 - cos(a/2)) / 3.
-
- But DX = distance / sin(a/2), hence the distance is
-
- dist = (4/3)*(1 - cos(a/2)) / sin(a/2).
-
- Rather than the angle a, we are given rDot = R^2 * cos(a), so we
- multiply top and bottom by R:
-
- dist = (4/3)*(R - Rcos(a/2)) / Rsin(a/2)
-
- and use some trig:
- ________________
- cos(a/2) = \/(1 + cos(a)) / 2
- ______________________
- R*cos(a/2) = \/(R^2 + R^2 cos(a)) / 2
- ________________
- = \/(R^2 + rDot) / 2
-
- Let A = (R^2 + rDot)/2.
- ____________________
- R*sin(a/2) = \/R^2 - R^2 cos^2(a/2)
- _______
- = \/R^2 - A
-
- so:
- _
- 4 R - \/A
- dist = - * ------------
- 3 _______
- \/R^2 - A
-
- History:
- 5/29/2001 MichKa
- Created it.
-
-
-
-
- Returns false if the radius is too small compared to the chord length (returns true on NaNs)
- radius is modified to the value that is accepted.
-
-
-
-
- A utility class to flatten Bezier curves.
-
-
-
-
- Flattens a Bezier cubic curve and adds the resulting polyline to the third parameter.
-
- The four Bezier cubic control points.
- The maximum distance between two corresponding points on the true curve
- and on the flattened polyline. Must be strictly positive.
- Where to add the flattened polyline.
- True to skip the first control point when adding the flattened polyline.
- Where to add the value of the Bezier curve parameter associated with
- each of the polyline vertices.
- If is empty, the first control point
- and its associated parameter are always added.
-
-
-
- Flattens a Bezier quadratic curve and adds the resulting polyline to the third parameter.
- Uses degree elevation for Bezier curves to reuse the code for the cubic case.
-
- The three Bezier quadratic control points.
- The maximum distance between two corresponding points on the true curve
- and on the flattened polyline. Must be strictly positive.
- Where to add the flattened polyline.
- Whether to skip the first control point when adding the flattened polyline.
- Where to add the value of the Bezier curve parameter associated with
- each of the polyline vertices.
- If is empty, the first control point and
- its associated parameter are always added.
-
-
-
- Extension methods that support non-geometry types.
-
-
-
-
- Allows the application of an action delegate (often a very simple lambda) against an entire sequence.
-
-
-
-
- Allows the application of an action delegate (often a very simple lambda) against an entire sequence.
-
-
-
-
- Allows the application of an action delegate (often a very simple lambda) against an entire sequence with the index of each item.
-
-
-
-
- Ensures the count of a list to a given count. Creates with a given factory or removes items when necessary.
- If Input IList is a List, AddRange or RemoveRange is used when there's no factory.
-
-
-
-
- Ensures the count of a list is at least the given count. Creates with a given factory.
-
-
-
-
- Add a range of items to the end of a collection.
- If a collection is a list, List.AddRange is used.
-
-
-
-
- Gets the last item of a given list.
-
-
-
-
- Removes the last item from the given list.
-
-
-
-
- Makes a copy of obj and all it's public properties, including all collection properties.
-
-
-
-
- Sets the value if different. Avoids setting a local value if possible.
- Returns true when the value has been changed.
-
-
-
-
- Clears the dependency property when it is locally set on the given dependency object.
- Returns false if the dependeny property is not locally set.
-
-
-
-
- Finds all visual descendants of a given type and condition using breadth-first search.
-
-
-
-
- Gets all visual children in IEnumerable.
-
-
-
-
- Unifies the interface of PropertyMetadata in WPF and Silverlight.
- Provides the necessary notification about render, arrange, or measure.
-
-
-
-
- This private Ctor should only be used by AttachCallback.
-
-
-
-
- Chain InternalCallback() to attach the instance of DrawingPropertyMetadata on property callback.
- In Silverlight, the property metadata is thrown away after setting. Use callback to remember it.
-
-
-
-
- Before chaining the original callback, trigger DrawingPropertyChangedEvent.
-
-
-
-
- Extension methods for geometry-related data structures (Point/Vector/Size/Rect).
-
-
-
-
- Resizes the rectangle to a relative size while keeping the center invariant.
-
-
-
-
- Gets the difference vector between two points.
-
-
-
-
- Memberwise plus for Point.
-
-
-
-
- Memberwise minus for Point.
-
-
-
-
- Converts a string of mini-languages to a .
-
- See: Path Markup Syntax(http://msdn.microsoft.com/en-us/library/cc189041(VS.95).aspx)
- The string of path mini-languages for describing geometric paths.
- A converted from the the path mini-languages.
-
-
-
- Flattens a and adds result points to a given .
-
- The input .
- The point list to which result points will append.
- A positive number specifying the maximum allowed error from the result points to the input path figure. A Value of zero allows the algorithm to pick the tolerance automatically.
-
-
-
- Gets the normalized arc in a (0,0)(1,1) box.
- Zero degrees is mapped to [0.5, 0] (up), and clockwise.
-
-
-
-
- Gets the absolute arc point in a given bound with a given relative radius.
-
-
-
-
- Gets the angle on an arc relative to a (0,0)(1,1) box.
- Zero degrees is mapped to [0.5, 0] (up), and clockwise.
-
-
-
-
- Gets the angle on an arc from a given absolute point relative to a bound.
-
-
-
-
- Computes the transform that moves "Rect from" to "Rect to".
-
-
-
-
- Computes the transform from the coordinate space of one UIElement to another.
-
- The source element.
- The destination element.
- The transform between the UIElements, or null if it cannot be computed.
-
-
-
- Maps a relative point to an absolute point using the mapping from a given bound to a (0,0)(1,1) box.
-
-
-
-
- Maps an absolute point to a relative point using the mapping from a (0,0)(1,1) box to a given bound.
-
-
-
-
- Computes the bound after stretching within a given logical bound.
- If stretch to uniform, use given aspectRatio.
- If aspectRatio is empty, it's equivalent to Fill.
- If stretch is None, it's equivalent to Fill or Uniform.
-
-
-
-
- Returns the mid point of two points.
-
- The first point.
- The second point.
- The mid point between and .
-
-
-
- Returns the dot product of two vectors.
-
- The first vector.
- The second vector.
- The dot product of and .
-
-
-
- Returns the dot product of two points.
-
-
-
-
- Returns the distance between two points.
-
- The first point.
- The second point.
- The distance between and .
-
-
-
- Returns the square of the distance between two points.
-
- The first point.
- The second point.
- The square of the distance between and .
-
-
-
- Determinant of the cross product. Equivalent to directional area.
-
-
-
-
- Computes the normal direction vector of given line segments.
-
-
-
-
- Computes the perpendicular vector, 90-degrees, counter-clockwise.
- Vector to the right perpendicular results in a vector to up.
-
-
-
-
- Returns whether the two geometries are identical.
-
-
-
-
- Ensures the value is an instance of result type (T). If not, replace with a new instance of type (T).
-
-
-
-
- Ensures the list[index] is an instance of result type (T). If not, replace with a new instance of type (T).
-
-
-
-
- Helper class that provides static properties and methods related to floating point arithmetic.
-
-
-
-
- The minimum distance to consider that two values are same.
- Note: internal floating point in MIL/SL is float, not double.
-
-
-
-
- The value of the angle of a full circle.
-
-
-
-
- The inner radius for a pentagram polygon shape, at precision of three digits in percentage.
- (1 - Sin36 * Sin72 / Sin54) / (Cos36) ^ 2, which is 0.47210998990512996761913067272407
-
-
-
-
- Determines whether a System.Double value is small enough to be considered
- equivalent to zero.
-
-
- True if value is smaller than DoubleTolerance;
- otherwise, False.
-
-
-
- Returns the value that's within the given range.
- A given min/max that is null equals no limit.
-
-
-
-
- Computes the Euclidean norm of the vector (x, y).
-
- The first component.
- The second component.
- The Euclidean norm of the vector (x, y).
-
-
-
- Computes a real number from the mantissa and exponent.
-
-
-
- The value of x * 2^exp if successful.
-
-
-
- Tests a double.
-
- The double to test.
- True if x is not a NaN and is not equal to plus or minus infinity;
- otherwise, False.
-
-
-
- Helper class to work with PathFigure.
-
-
-
-
- Flattens the given figure and adds result points to the given point list.
-
- The error tolerance. Must be positive. Can be zero. Fallback to default tolerance.
-
-
-
- Iterates all segments inside a given figure, and returns the correct start point for each segment.
-
-
-
-
- Synchronizes the figure to the given list of points as a single polyline segment.
- Tries to keep the change to a minimum and returns false if nothing has been changed.
-
-
-
-
- Synchronizes the given figure to be a closed ellipse with two arc segments.
-
-
-
-
- A Tuple data structure for PathSegment and the corresponding StartPoint.
-
-
-
-
- Represents a polyline with a list of connecting points.
- A closed polygon is represented by repeating the first point at the end.
- The differences, normals, angles, and lengths are computed on demand.
-
-
-
-
- Constructs a polyline with two or more points.
-
-
-
-
- The forward difference vector of polyline.
- Points[i] + Differences[i] = Points[i+1]
-
-
-
- Compute the normal vector of given location (lerp(index, index+1, fraction).
- If the location is within range of cornerRadius, interpolate the normal direction.
-
- The range of normal smoothless. If zero, no smoothness and return the exact normal on index.
-
-
-
- The polyline is closed when the first and last points are repeated.
-
-
-
-
- The count of points in this polyline.
-
-
-
-
- The total arc length of this polyline.
-
-
-
-
- The point array of this polyline.
-
-
-
-
- The length between line segments, Points[i] to Points[i+1].
-
-
-
-
- The list of normal vectors for each segment.
- Normals[i] is the normal of segment p[i] to p[i + 1].
- Normals[N-1] == Normals[N-2].
-
-
-
-
- The list of Cos(angle) between two line segments on point p[i].
- Note: The value is cos(angle) = Dot(u, v). Not in degrees.
-
-
-
-
- The list of accumulated length from points[i] to points[0].
-
-
-
-
- The data structure to communicate with the PathMarch algorithm.
-
-
-
-
- Gets the interpolated position of this MarchLocation on a given point list.
-
-
-
-
- Get the interpolated normal direction of this MarchLocation on a given normal vector list.
-
-
-
-
- Gets the arc length of this MarchLocation to the start of the entire polyline.
-
-
-
-
- The reason why this location is sampled.
-
-
-
-
- The index of the point on a polyline point list.
-
-
-
-
- Ratio: [0, 1], which is always before / (before + after).
-
-
-
-
- Arc length before a stop point. Non-negative and less than Length[index].
-
-
-
-
- Arc length after the stop point. Non-negative and less than Length[index].
-
-
-
-
- Remaining length within a step to hit next stop. Positive to go forward. Negative to go backward.
-
-
-
-
- Helper class to work with list of points
-
-
-
-
- March the given polyline with a given interval and output each stop through callback.
-
- The polyline points to march on.
- The arc length to march before stopping at the first point.
- The max angle between edges to be considered a corner vertex.
- Callback when marching algorithm stop at a point. The callback returns the arc length for next stop.
- If the asked length is negative, march backwards. If callback returns NaN, finish marching.
-
-
-
- Reorders the given list of polylines so that the polyline with a given arc length in the list is the first.
- Polylines that preceded this line are concatenated to the end of the list, with the first polyline at the very end.
-
- A list of polylines.
- The arc length in the entire list of polylines at which to find the start line.
- The arc length into that line is returned in this variable.
- The reordered and wrapped list.
-
-
-
- A random generator that supports uniform and Gaussian distributions.
-
-
-
-
- Generates a pair of independent, standard, normally distributed random numbers,
- zero expectation, unit variance, using polar form of the Box-Muller transformation.
-
-
-
-
- Private constructor. Force to use factory methods.
-
-
-
-
- Creates a line segment
-
-
-
-
- Creates a cubic bezier segment from quatratic curve (3 control points)
-
-
-
-
- Creates a cubic bezier segment with 4 control points.
-
-
-
-
- Control points of path segment. Length is variant.
- Line segment has 2 points, Cubic bezier has 4 points.
-
-
-
-
- Compares two transforms for an exact match. Transforms with the same value but different structure (e.g. Translate(0,0) and Rotate(0) are not considered equivalent).
-
- The first transform.
- The second transform.
-
-
-
-
- Specifies the unit of thickness.
-
-
-
-
- Unit in pixels.
-
-
-
-
- Unit in percentage relative to the bounding box.
-
-
-
-
- Provides the base class of a source of geometry.
- Generates and caches the geometry based on the input parameters and the layout bounds.
-
-
- A typical implementation will extend the UpdateCachedGeometry() to update this.cachedGeometry.
- This base class will then handle the invalidation, pipeline to the geometry effects, and then cache relative to the layout bounds.
- An implementation should try to reuse the cached geometry as much as possible to avoid reconstruction in the rendering thread.
- An implementation can extend the ComputeLogicalBounds to handle Stretch differently.
-
- The type of geometry source parameter on which the base class is working on.
-
-
-
- Provides an interface to describe the source of a geometry.
-
-
- This interface is designed to expose the geometry source in a non-generic way.
- Typical implementation should subclass GeometrySource instead of implementing this interface directly.
-
-
-
-
- Notifies that the geometry has been invalidated because of external changes.
-
-
- Geometry is typically invalidated when parameters are changed.
- If any geometry has been invalidated externally, the geometry will be recomputed even if the layout bounds change.
-
-
-
-
- Update the geometry using the given parameters and the layout bounds.
- Returns false if nothing has been updated.
-
-
-
-
- Gets or sets the resulting geometry after the latest UpdateGeometry().
-
-
-
-
- Gets the bounding box where the geometry should stretch to.
- The actual geometry might be smaller or larger than this.
- should already take stroke thickness and stretch into consideration.
-
-
-
-
- Gets the actual bounds of FrameworkElement.
- includes logical bounds, stretch, and stroke thickness.
-
-
-
-
- Specifics the geometry from the previous geometry effect process.
-
-
-
-
- Notifies that the geometry has been invalidated because of external changes.
-
-
- The geometry is typically invalidated when parameters are changed.
- If any geometry has been invalidated externally, the geometry will be recomputed regardless if the layout bounds change.
-
-
-
-
- Update the geometry based on the given parameters and layoutBounds.
- Returns false if the geometry hasn't been changed.
-
-
-
-
- Extends the way to provide geometry by implementing this function.
- Returns true when any of the geometry is changed.
-
-
-
-
- Extends the way to handle stretch mode.
- The default is to always use Stretch.Fill and center stroke.
-
-
-
-
- Apply the geometry effect when dirty or forced and update this.Geometry.
- Otherwise, keep this.Geometry as this.cachedGeometry.
-
-
-
-
- Gets or sets the resulting geometry after the latest UpdateGeometry().
-
-
-
-
- Gets the bounding box that the geometry should stretch to.
- The actual geometry might be smaller or larger than this.
- should already take stroke thickness and stretch into consideration.
-
-
-
-
-
- Gets the actual bounds of FrameworkElement.
- includes logical bounds, stretch and stroke thickness.
-
-
-
-
-
- Arc recognizes Stretch.None as the same as Stretch.Fill, assuming aspect ratio = 1:1.
-
-
-
-
- Normalize thickness, both relative to the bounding box and the absolute pixel.
- Relative thickness = 0 -> full circle radius or clamped.
- Relative thickness = 1 -> shrank to a dot, or degenerated.
-
-
-
-
- The arc is degenerated to a line pointing to center / normal inward.
-
-
-
-
- Compute a list of angle pairs, defining the ranges in which arc sample should locate.
- The return value have 2, 4, or 6 double values, each pair defines a range and they are in the order
- to span the angles from given start to end angles. The ranges will break at the self-intersect angle.
- If input start/end are within the invalid range between self intersect angle, it will be moved to neighboring self intersect.
-
-
-
-
- Move angle to 0-90 range.
-
-
-
-
- Compute all pieces of inner curves with each pair of input angles, and connect them with poly Bezier segments.
- The new segments are output to given figure.Segments list from the given index. The start point is output seperately.
-
-
-
-
- Compute one piece of inner curve with given angle range, and output one piece of smooth curve in format of poly Beizer semgents.
-
-
-
-
- Compute the parameter (angle) of the self-intersect point for given ellipse with given thickness.
- The result is always in first quadrant, and might be 0 or 90 indicating no self-intersect.
- Basic algorithm is to binary search for the angle that sample point is not in first quadrant.
-
-
-
-
- Specifies the direction the arrow points.
-
-
-
-
- The arrow points to the left.
-
-
-
-
- The arrow points to the right.
-
-
-
-
- The arrow points up.
-
-
-
-
- The arrow points down.
-
-
-
-
- B
- /|
- / C--D
- A |
- \ C--D
- \|
- B
- Algorithm only uses Width/Height assuming top-left at 0,0.
-
-
-
-
- Specifies the rendering style of a callout shape.
-
-
-
-
- A rectangular callout.
-
-
-
-
- A rectangular callout with rounded corners.
-
-
-
-
- A oval-shaped callout.
-
-
-
-
- A cloud-shaped callout.
-
-
-
-
- Updates the edge line, and then connects to the anchor point if necessary.
-
-
-
-
- Updates the polyline segment, and then connects start, anchor, and end points with the callout style.
-
-
-
-
- Updates the line segment to a given point.
-
-
-
-
- Computes the corner points in a clockwise direction, with eight points for the four corners.
-
-
-
-
- The corner arc is always smaller than a 90-degree arc.
-
-
-
-
- Provides the base class for GeometryEffect that transforms a geometry into another geometry.
-
-
- This class provides the basic implementation of processing the rendered geometry of a IShape before it's passed to rendering.
- A typical implementation will extend the virtual function to transform the input geometry.
- is typically attached to as an attached property and activated when geometry is updated.
- The of a will replace the rendered geometry in .
-
-
-
-
- Gets the geometry effect as an attached property on a given dependency object.
-
-
-
-
- Sets the geometry effect as an attached property on a given dependency object.
-
-
-
-
- Makes a deep copy of the using its current values.
-
-
-
-
- Makes a deep copy of the geometry effect. Implements CloneCurrentValue in Silverlight.
-
- A clone of the current instance of the geometry effect.
-
-
-
- Tests if the given geometry effect is equivalent to the current instance.
-
- A geometry effect to compare with.
- Returns true when two effects render with the same appearance.
-
-
-
- Specifics the geometry from the previous geometry effect process.
-
-
-
-
- Invalidates the geometry effect without actually computing the geometry.
- Notifies all parent shapes or effects to invalidate accordingly.
-
-
-
-
- Processes the geometry effect on a given input geometry.
- Stores the result in GeometryEffect.OutputGeometry.
-
- Returns false if nothing has been changed.
-
-
-
- Extends the way of updating cachedGeometry based on a given input geometry.
-
-
-
-
- Notified when detached from a parent chain.
-
-
-
-
- Notified when attached to a parent chain.
-
-
-
-
- Invalidates the geometry on a given dependency object when
- the object is a valid parent type (IShape or GeometryEffect).
-
-
-
-
- Implement the Freezable in WPF.
-
-
-
-
- The default geometry effect that only passes through the input geometry.
-
-
-
-
- Gets the output geometry of this geometry effect.
-
-
-
-
- Parent can be either IShape or GeometryEffectGroup.
-
-
-
-
- Provides the conversion between string and geometry effects.
-
-
- This class enables the brief syntax in XAML like GeometryEffect="Sketch".
- Creates a clone of the instance of the geometry effect so it can be used as a resource.
-
-
-
-
- Builds a preset list of supported geometry effects.
-
-
-
-
- A GeometryEffect that can be converted from a string type.
-
-
-
-
- A GeometryEffect that can be converted to a string type.
-
-
-
-
- Converts a string to a geometry effect. The fallback value is null.
-
-
-
-
- Converts a geometry effect into a string. The fallback value is null.
-
-
-
-
- Specifies the reason of being called.
-
-
-
-
- Geometry has been invalidated because a property has been changed.
-
-
-
-
- Geometry has been invalidated because a property is being animated.
-
-
-
-
- Geometry has been invalidated because a child has been invalidated.
-
-
-
-
- Geometry has been invalidated because a parent has been invalidated.
-
-
-
-
- Geometry has been invalidated because a new template has been applied.
-
-
-
-
- Provides helper extension methods to work with IGeometrySource and parameters.
-
-
-
-
- Specifies the arrow head type.
-
-
-
-
- No arrow head.
-
-
-
-
- A triangle arrow head.
-
-
-
-
- A stealth triangle arrow head.
-
-
-
-
- An open triangle arrow head.
-
-
-
-
- An oval arrow head.
-
-
-
-
- Specifies the corner location.
-
-
-
-
- On the top left of the bounding box.
-
-
-
-
- On the top right of the bounding box.
-
-
-
-
- On the bottom right of the bounding box.
-
-
-
-
- On the bottom left of the bounding box.
-
-
-
-
- Polygon recognizes Stretch.None as the same as Stretch.Fill.
-
-
-
-
- A geometry effect that transforms any geometry into a Sketch style as in SketchFlow.
-
-
-
-
- Makes a deep copy of the geometry effect.
-
- A clone of the current instance of the geometry effect.
-
-
-
- Tests if the given geometry effect is equivalent to the current instance.
-
- A geometry effect to compare with.
- Returns true when two effects render with the same appearance.
-
-
-
- Updating cachedGeometry based on the given input geometry.
-
- An input geometry.
- Returns true when anything on cachedGeometry has been updated.
-
-
-
- Use the same random seed on creation to keep visual flickering to a minimum.
-
-
-
-
- Iterates all simple segments in given path figure including the closing chord.
-
-
-
-
- Renders an arc shape supporting Arc, Ring, and Pie mode controlled by ArcThickness.
-
-
-
-
- Platform-neutral implementation of Shape deriving from WPF:Shape or SL:Path.
-
-
- Provides the WPF implementation of Shape that derives from the platform Shape.
-
-
-
-
- Extends how the shape is drawn with creating geometry source.
-
-
-
-
- Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously.
-
-
-
- Provides the behavior for the Measure portion of Silverlight layout pass. Classes can override this method to define their own Measure pass behavior.
- The size that this object determines it requires during layout, based on its calculations of child object allotted sizes, or possibly on other considerations such as fixed container size.
- The available size that this object can provide to child objects. Infinity () can be specified as a value to indicate that the object will size to whatever content is available.
-
- In WPF, measure override works from Shape.DefiningGeometry which is not always as expected
- see bug 99497 for details where WPF is not having correct measure by default.
-
- In Silverlight, measure override on Path does not work the same as primitive shape works.
-
- We should return the smallest size this shape can correctly render without clipping.
- By default a shape can render as small as a dot, therefore returning the strokethickness.
-
-
-
- Provides the behavior for the Arrange portion of Silverlight layout pass. Classes can override this method to define their own Arrange pass behavior.
- The actual size used once the element is arranged in layout.
- The final area within the parent that this object should use to arrange itself and its children.
- will recompute the Geometry when it's invalidated and update the RenderedGeometry and GeometryMargin.
-
-
-
- Occurs when RenderedGeometry is changed.
-
-
-
-
- Gets the margin between logical bounds and actual geometry bounds.
- This can be either positive (as in ) or negative (as in ).
-
-
-
-
- Gets or sets the start angle.
-
- The start angle in degrees. Zero degrees is pointing up.
-
-
-
- Gets or sets the end angle.
-
- The end angle in degrees. Zero degrees is pointing up.
-
-
-
- Gets or sets the arc thickness.
-
- The arc thickness in pixels or percentage depending on "ArcThicknessUnit".
-
-
-
- Gets or sets the arc thickness unit.
-
- The arc thickness unit in pixels or percentage.
-
-
-
- Renders a block arrow shape that supports resizable arrow head and body.
-
-
-
-
- Gets or sets the orientation.
-
- The orientation where the arrow is pointing to.
-
-
-
- Gets or sets the arrow head angle.
-
- The arrow head angle in degrees.
-
-
-
- Gets or sets the size of the arrow body.
-
- The size of the arrow body in pixels.
-
-
-
- Renders a regular polygon shape or corresponding star shape with variable number of points.
-
-
-
-
- Gets or sets the number of points of the .
-
-
-
-
- Gets or sets the the distance between the center and the innermost point.
-
- The distance between the center and the innermost point.
-
-
-
diff --git a/SCADA/dll/Microsoft.Expression.Controls.dll b/SCADA/dll/Microsoft.Expression.Controls.dll
new file mode 100644
index 0000000..48e2331
Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Controls.dll differ
diff --git a/SCADA/dll/Microsoft.Expression.Drawing.dll b/SCADA/dll/Microsoft.Expression.Drawing.dll
new file mode 100644
index 0000000..d2a5f7b
Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Drawing.dll differ
diff --git a/SCADA/dll/Microsoft.Expression.Effects.dll b/SCADA/dll/Microsoft.Expression.Effects.dll
new file mode 100644
index 0000000..c2b722f
Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Effects.dll differ
diff --git a/SCADA/dll/Microsoft.Expression.Interactions.dll b/SCADA/dll/Microsoft.Expression.Interactions.dll
new file mode 100644
index 0000000..979c965
Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Interactions.dll differ
diff --git a/SCADA/dll/System.Windows.Interactivity.dll b/SCADA/dll/System.Windows.Interactivity.dll
new file mode 100644
index 0000000..0419e95
Binary files /dev/null and b/SCADA/dll/System.Windows.Interactivity.dll differ