Przeglądaj źródła

数据库结构微调

yc_t 7 lat temu
rodzic
commit
4afe49f139

+ 19 - 1
.gitignore

@@ -5,7 +5,6 @@
 *.suo
 *.user
 *.sln.docstates
-*.mbs
 
 # Build results
 
@@ -167,3 +166,22 @@ $RECYCLE.BIN/
 
 .vs
 /modbus_PLC_laser_test/新plc模拟.mbs
+#Ignore thumbnails created by Windows
+#Ignore files built by Visual Studio
+*.mbs
+*.config
+
+*.exe
+*.bak
+*.cache
+[Bb]in
+[Dd]ebug*/
+*.lib
+obj/
+[Rr]elease*/
+[Tt]est[Rr]esult*
+.vs/
+#Nuget packages folder
+packages/
+/parkMonitor/App.config
+/modbus_PLC_laser_test/新plc模拟.mbs

BIN
modbus_PLC_laser_test/新plc模拟.mbs


+ 0 - 110
parkMonitor/App.config

@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <configSections>
-    <section name="Equipments" type="parkMonitor.model.EquipmentsSection,parkMonitor" allowDefinition="Everywhere" />
-  </configSections>
-  <startup>
-    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-  </startup>
-  <Equipments>
-    <Equipment key="Core" value="parkMonitor.server.CoreThread.CoreThreadTest2" />
-    <Equipment key="Monitor" value="parkMonitor.server.MonitorServer" />
-    <Equipment key="PLC" value="parkMonitor.server.PLCLinker" />
-    <Equipment key="Num" value="parkMonitor.server.NumMachineSimul" />
-    <Equipment key="Web" value="parkMonitor.server.WebThread.CentralForWeb" />
-    <Equipment key="Queue" value="parkMonitor.server.CoreThread.QueuingThread" />
-  </Equipments>
-  <appSettings>
-    <!--数据库连接配置文件-->
-    <add key="SqlConnectionLocation" value="Data Source=127.0.0.1;port=20000;uid=root;pooling=true;pwd=yct;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
-    <!--<add key="SqlConnectionStr" value="Data Source=52.77.33.102;port=3306;uid=Ubuntu1;pooling=true;pwd=12345678;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />-->
-    <!---<add key="SqlConnectionStr" value="Data Source=59.175.148.85;port=3306;uid=root;pooling=true;pwd=x5;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />-->
-    <add key="SqlConnectionStr" value="Data Source=192.168.0.62;port=3306;uid=root;pooling=true;pwd=x5;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
-    <add key="localGarageId" value="1"/>
-    <!--日志写入地址配置文件-->
-    <add key="LogPath" value="c:\\c#workspace\\LogDemo\\LoggerTest" />
-    <!--测量数据误差-->
-    <add key="length" value="50" />
-    <add key="width" value="50" />
-    <add key="height" value="50" />
-    <add key="wheelbase" value="50" />
-    <add key="ClientSettingsProvider.ServiceUri" value="" />
-    <!--PLC基本配置-->
-    <!--<add key="PLC_ip_address" value="192.168.0.10" />-->
-    <add key="PLC_ip_address" value="127.0.0.1" />
-    <add key="PLC_port" value="30000" />
-    <add key="PLC_station" value="1" />
-    <add key="PLC_start_address" value="0" />
-    <add key="PLC_address_length" value="104" />
-    <add key="PLC_refresh_interval" value="200"/>
-    <add key="equipmentStatus_address" value="20" />
-    <!--PLC停取完成-->
-    <add key="park_start_address" value="1" />
-    <add key="park_completed_address" value="21" />
-    <add key="park_completed_acknowledge_address" value="5" />
-    <add key="fetch_completed_address" value="22" />
-    <add key="fetch_completed_acknowledge_address" value="6" />
-    <!--启动机械手-->
-    <add key="parking_startRobot_address" value="3" />
-    <add key="fetching_startRobot_address" value="4" />
-    <add key="fetch_to_address" value="2" />
-    <!--机械手停车所需数据-->
-    <add key="parkingSpaceID_address" value="16" />
-    <add key="parkingSpaceX_address" value="17" />
-    <add key="parkingSpaceY_address" value="18" />
-    <add key="parkingSpaceZ_address" value="19" />
-    <add key="parkingLaserCenterX_address" value="13" />
-    <add key="frontWheelbase_address" value="79" />
-    <add key="rearWheelbase_address" value="80" />
-    <add key="wheelbase_status_address" value="81" />
-    <!--激光设备配置-->
-    <add key="laser_start_address" value="10" />
-    <add key="laser1_status_address" value="83" /><!--决定激光编号-->
-    <add key="laser_rescan_count" value="3" />
-    <add key="laser_countdown" value="100" />
-    <!--队列线程参数-->
-    <add key="fetch_store_ratio" value="3" />
-    <add key="licenseTime" value="10" />
-    <add key="userTime" value="30" />
-    <!--上位机(Web线程)IP地址及配置serverScoket的端口-->
-    <add key="WebConfig" value="192.168.111.84:9000" />
-    <!--<add key ="WebConfig" value="127.0.0.1:9000"/>-->
-
-    <!--车库入口-->
-    <add key="parkingEntX" value="0" />
-    <add key="parkingEntY" value="0" />
-    <add key="parkingEntZ" value="0" />
-    <!--监控线程-->
-    <!--数据更新间隔(毫秒数)-->
-    <add key="monitor_timGap" value="200"/>
-
-    <!--ip位置映射表-->
-    <!--位置编号;基点横坐标;车位宽度;宽度补偿-->
-    <add key="192.168.0.20" value="1" />
-    <add key="192.168.0.21" value="2" />
-    <!--车库权重-->
-    <add key="xWeight" value="1"/>
-    <add key="yWeight" value="1"/>
-    <add key="zWeight" value="1"/>
-    
-  </appSettings>
-  
-  <system.web>
-    <membership defaultProvider="ClientAuthenticationMembershipProvider">
-      <providers>
-        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
-      </providers>
-    </membership>
-    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
-      <providers>
-        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
-      </providers>
-    </roleManager>
-  </system.web>
-  <system.data>
-    <DbProviderFactories>
-      <remove invariant="MySql.Data.MySqlClient" />
-      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
-    </DbProviderFactories>
-  </system.data>
-</configuration>

+ 19 - 4
parkMonitor/DataBase/DBConnection.cs

@@ -10,17 +10,32 @@ namespace parkMonitor.DataBase
 {
     public class DBConnection
     {
-        public MySqlConnection getConn(string connectionStr)
+        private const string localStr = "SqlConnectionLocation";
+        private const string remoteStr = "SqlConnectionStr";
+        private static string localConf, remoteConf;
+        public static void Init()
         {
-            MySqlConnection con = null;
             try
             {
-                con = new MySqlConnection(ConfigurationManager.AppSettings[connectionStr]);
+                localConf = ConfigurationManager.AppSettings[localStr];
+                remoteConf = ConfigurationManager.AppSettings[remoteStr];
             }
             catch
             {
                 Console.WriteLine("配置文件有误");
             }
+        }
+        public MySqlConnection getConn(string connectionStr)
+        {
+            MySqlConnection con = null;
+            if (connectionStr == localStr)
+            {
+                con = new MySqlConnection(localConf);
+            }
+            else if (connectionStr == remoteStr)
+            {
+                con = new MySqlConnection(remoteConf);
+            }
             return con;
         }
         public MySqlCommand getComm(string sql, MySqlConnection con)
@@ -30,7 +45,7 @@ namespace parkMonitor.DataBase
             {
                 cmd = new MySqlCommand(sql, con);
             }
-            catch(MySqlException)
+            catch (MySqlException)
             {
                 Console.WriteLine("数据库连接异常");
             }

+ 23 - 23
parkMonitor/DataBase/DBOperation.cs

@@ -27,7 +27,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("车位剩余数查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return 0;
         }
 
@@ -58,7 +58,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("空闲车位查无结果"); 
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return null;
         }
 
@@ -90,7 +90,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("所有车位查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return null;
         }
 
@@ -102,7 +102,7 @@ namespace parkMonitor.DataBase
             Operation oper = new Operation(connectionStr, sql);
             oper.getInsert();
             parkingRecordsID = oper.getInsertId();
-            oper.DBClose();
+
             return parkingRecordsID;
         }
 
@@ -112,7 +112,7 @@ namespace parkMonitor.DataBase
             string sql = "update vehicle set vehiclepParkState = '" + vehiclepParkState + "',scanEntryTime = '" + scanEntryTime + "',parkingRecordsID = '" + parkingRecordsID + "',parkingSpaceID = '" + parkingSpaceID + "',vehicleTypeConfirm = '" + vehicleTypeConfirm + "',frontwheelbase = '" + frontWheelbase + "',rearwheelbase = '" + rearWheelbase + "' where numberPlate = '" + numberPlate + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //更新车库表剩余车位数
@@ -121,7 +121,7 @@ namespace parkMonitor.DataBase
             string sql = "update garage set garageFreeSpace = '" + garageFreeSpace + "' where garageID = '" + garageID + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //根据车牌号更新车辆状态
@@ -130,7 +130,7 @@ namespace parkMonitor.DataBase
             string sql = "update vehicle set vehiclepParkState = '" + vehiclepParkState + "'where numberPlate = '" + numberPlate + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //更新车位状态
@@ -139,7 +139,7 @@ namespace parkMonitor.DataBase
             string sql = "update parkingspace set parkingSpaceState = '" + parkingSpaceState + "'where parkingSpaceID = '" + parkingSpaceID + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //更新停车记录表
@@ -148,7 +148,7 @@ namespace parkMonitor.DataBase
             string sql = "update parkingrecords set parkingRecordsState = '" + parkingRecordsState + "',realGetTime = '" + realGetTime + "'where parkingRecordsID = '" + parkingRecordsID + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //插入消息推送表
@@ -157,7 +157,7 @@ namespace parkMonitor.DataBase
             string sql = "insert into messagequeue(userID,context,messageType) values('" + userID + "','" + context + "','" + messageType + "')";
             Operation oper = new Operation(connectionStr, sql);
             oper.getInsert();
-            oper.DBClose();
+
         }
 
         //根据车牌查询得到车库id和车位id以及轮距
@@ -185,7 +185,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("云端轮距查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return null;
         }
 
@@ -210,7 +210,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("车位xyz查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return null;
         }
 
@@ -231,7 +231,7 @@ namespace parkMonitor.DataBase
             {
                 isTelRegister = false;
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return isTelRegister;
         }
 
@@ -243,7 +243,7 @@ namespace parkMonitor.DataBase
             Operation oper = new Operation(connectionStr, sql);
             oper.getInsert();
             userID = oper.getInsertId();
-            oper.DBClose();
+
             return userID;
         }
 
@@ -265,7 +265,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("userID查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return 0;
         }
 
@@ -287,7 +287,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("停车记录id查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return 0;
         }
 
@@ -308,7 +308,7 @@ namespace parkMonitor.DataBase
             {
                 isNumberPlate = false;
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return isNumberPlate;
         }
 
@@ -320,7 +320,7 @@ namespace parkMonitor.DataBase
             Operation oper = new Operation(connectionStr, sql);
             oper.getInsert();
             parkingRecordsID = oper.getInsertId();
-            oper.DBClose();
+
             return parkingRecordsID;
         }
 
@@ -330,7 +330,7 @@ namespace parkMonitor.DataBase
             string sql = "update parkingrecords set parkingStatus = '" + parkingStatus + "', parkingRecordsState = '" + parkingRecordsState + "',realGetTime = '" + realGetTime + "'where parkingRecordsID = '" + parkingRecordsID + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //插入车辆表
@@ -339,7 +339,7 @@ namespace parkMonitor.DataBase
             string sql = "insert into vehicle(numberPlate,vehiclepParkState,parkingRecordsID,parkingSpaceID,vehicleTypeConfirm) values('" + numberPlate + "','" + vehiclepParkState + "','" + parkingRecordsID + "','" + parkingSpaceID + "','" + vehicleTypeConfirm + "')";
             Operation oper = new Operation(connectionStr, sql);
             oper.getInsert();
-            oper.DBClose();
+
         }
 
         //判断车辆表中是否存在该车辆号牌
@@ -359,7 +359,7 @@ namespace parkMonitor.DataBase
             {
                 isNumberPlateFromVehicle = false;
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return isNumberPlateFromVehicle;
         }
 
@@ -369,7 +369,7 @@ namespace parkMonitor.DataBase
             string sql = "update vehicle set vehiclepParkState = '" + vehiclepParkState + "',parkingRecordsID = '" + parkingRecordsID + "',parkingSpaceID = '" + parkingSpaceID + "',vehicleTypeConfirm = '" + vehicleTypeConfirm + "' where numberPlate = '" + numberPlate + "'";
             Operation oper = new Operation(connectionStr, sql);
             oper.getUpdate();
-            oper.DBClose();
+
         }
 
         //根据车牌查询得到车库id和车位id以及轮距
@@ -396,7 +396,7 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("本地轮距查无结果");
             }
-            oper.DBClose();
+            oper.DBClose(reader);
             return null;
         }
 

+ 34 - 2
parkMonitor/DataBase/IDBOperation.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Data;
 using MySql.Data.MySqlClient;
 
 namespace parkMonitor.DataBase
@@ -37,23 +38,27 @@ namespace parkMonitor.DataBase
             {
                 con.Open();
                 reader = cmd.ExecuteReader();
+                //reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                 while (reader.Read())
                 {
                     if (reader.HasRows)
                     {
                         count++;
-                    }                 
+                    }
                 }
                 reader.Close();
+                reader.Dispose();
                 if (count > 0)
                 {
                     reader = cmd.ExecuteReader();
                 }
             }
-            catch(Exception ex)
+            catch (Exception ex)
             {
                 Console.WriteLine("查询数据库异常");
                 Console.WriteLine(ex.Message);
+                Console.WriteLine(ex.StackTrace);
+                DBClose();
             }
             return reader;
         }
@@ -69,6 +74,11 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("插入异常");
                 Console.WriteLine(ex.Message);
+                Console.WriteLine(ex.StackTrace);
+            }
+            finally
+            {
+                DBClose();
             }
         }
 
@@ -84,6 +94,10 @@ namespace parkMonitor.DataBase
                 Console.WriteLine("更新异常");
                 Console.WriteLine(ex.Message);
             }
+            finally
+            {
+                DBClose();
+            }
         }
 
         public void getDelete()
@@ -97,6 +111,10 @@ namespace parkMonitor.DataBase
             {
                 Console.WriteLine("删除异常");
             }
+            finally
+            {
+                DBClose();
+            }
         }
         public int getInsertId()
         {
@@ -110,6 +128,10 @@ namespace parkMonitor.DataBase
                 Console.WriteLine("插入数据库失败");
                 Console.WriteLine(ex.Message);
             }
+            finally
+            {
+                DBClose();
+            }
             return insertID;
         }
 
@@ -130,5 +152,15 @@ namespace parkMonitor.DataBase
                 con.Dispose();
             }
         }
+
+        public void DBClose(MySqlDataReader reader)
+        {
+            if (reader != null)
+            {
+                reader.Close();
+                reader.Dispose();
+            }
+            DBClose();
+        }
     }
 }

+ 1 - 3
parkMonitor/server/CoreThread/CoreThreadTest2.cs

@@ -24,8 +24,6 @@ namespace parkMonitor.server.CoreThread
         IEquipments queuingThread;
         //获取号牌句柄
         IEquipments NumMachine;
-        //
-        DBOperation oper;
         int localGarageId = 0;
         bool isClosing;
 
@@ -37,7 +35,7 @@ namespace parkMonitor.server.CoreThread
             {
                 equipmentStatus_address = Convert.ToInt32(ConfigurationManager.AppSettings["equipmentStatus_address"]);
                 localGarageId = Convert.ToInt32(ConfigurationManager.AppSettings["localGarageId"]);
-                oper = new DBOperation();
+                DBConnection.Init();
             }
             catch (Exception) { }
         }

+ 10 - 10
parkMonitor/server/PLCLinker/PLCLinker.cs

@@ -740,9 +740,9 @@ namespace parkMonitor.server
                                 {
                                     laserWorking = false;
                                     SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "254");
-                                    Thread.Sleep(500);
+                                    Thread.Sleep(200);
                                     SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "255");
-                                    Thread.Sleep(500);
+                                    Thread.Sleep(200);
                                 }
                                 //模拟测量
                                 else
@@ -750,9 +750,9 @@ namespace parkMonitor.server
                                     if (!laserWorking)
                                     {
                                         SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "1");
-                                        Thread.Sleep(500);
+                                        Thread.Sleep(300);
                                         SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "2");
-                                        Thread.Sleep(1000);
+                                        Thread.Sleep(500);
                                         SendtoPLC((laserMgmtList[0].laser_status_address + 1).ToString(), (new Random(DateTime.Now.Millisecond).Next(4000, 7000)).ToString());
                                         Thread.Sleep(1);
                                         SendtoPLC((laserMgmtList[0].laser_status_address + 2).ToString(), (new Random(DateTime.Now.Millisecond).Next(4000, 7000)).ToString());
@@ -760,7 +760,7 @@ namespace parkMonitor.server
                                         SendtoPLC((laserMgmtList[0].laser_status_address + 3).ToString(), (new Random(DateTime.Now.Millisecond).Next(90, 150)).ToString());
                                         Thread.Sleep(1);
                                         SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "3");
-                                        Thread.Sleep(1000);
+                                        Thread.Sleep(500);
                                     }
                                     laserWorking = true;
                                 }
@@ -768,7 +768,7 @@ namespace parkMonitor.server
                         }
                     }
                 }
-                Thread.Sleep(200);
+                Thread.Sleep(100);
             }
         }
         private void wheelbaseAnim()
@@ -791,12 +791,12 @@ namespace parkMonitor.server
                                 if (!working)
                                 {
                                     working = true;
-                                    Thread.Sleep(1000);
+                                    Thread.Sleep(500);
                                     SendtoPLC(frontWheelbase_address.ToString(), (new Random(DateTime.Now.Millisecond).Next(100, 300)).ToString());
                                     Thread.Sleep(1);
                                     SendtoPLC(rearWheelbase_address.ToString(), (new Random(DateTime.Now.Millisecond).Next(100, 300)).ToString());
                                     SendtoPLC("81", "3");
-                                    Thread.Sleep(1000);
+                                    Thread.Sleep(500);
                                 }
                             }
                             else
@@ -840,14 +840,14 @@ namespace parkMonitor.server
                         //停车完成
                         if (addr == parking_startRobot_address && value == 1)
                         {
-                            Thread.Sleep(4000);
+                            Thread.Sleep(2000);
                             SendtoPLC(park_completed_address.ToString(), "1");
                             SendtoPLC(addr.ToString(), "0");
                         }
                         //取车完成
                         if (addr == fetching_startRobot_address && value == 1)
                         {
-                            Thread.Sleep(4000);
+                            Thread.Sleep(2000);
                             SendtoPLC(fetch_completed_address.ToString(), "1");
                             SendtoPLC(addr.ToString(), "0");
                         }