Pārlūkot izejas kodu

完善当前流程

yc_t 7 gadi atpakaļ
vecāks
revīzija
c0c49d15ea

+ 111 - 0
App.txt

@@ -0,0 +1,111 @@
+<?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;max pool size=1024;pwd=yct;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
+    <!--<add key="SqlConnectionStr" value="Data Source=59.175.148.85;port=3306;uid=root;pooling=true;max pool size=1024;pwd=x5;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />-->
+    <add key="SqlConnectionStr" value="Data Source=59.175.148.85;port=3306;uid=root;pooling=true;max pool size=1024;pwd=x5;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
+    <!--日志写入地址配置文件-->
+    <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="10" />
+    <!--上位机(Web线程)IP地址及配置serverScoket的端口-->
+    <add key="WebConfig" value="192.168.111.254: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 ="garageID" value ="1"/>
+    <add key ="bufferCount" 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>

+ 2 - 2
parkMonitor/controlPanel/ControlPanel.Designer.cs

@@ -69,14 +69,14 @@
             // 
             this.flp_buffer.Location = new System.Drawing.Point(17, 34);
             this.flp_buffer.Name = "flp_buffer";
-            this.flp_buffer.Size = new System.Drawing.Size(114, 299);
+            this.flp_buffer.Size = new System.Drawing.Size(114, 280);
             this.flp_buffer.TabIndex = 5;
             // 
             // ControlPanel
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(878, 386);
+            this.ClientSize = new System.Drawing.Size(182, 386);
             this.Controls.Add(this.flp_buffer);
             this.Controls.Add(this.lb_confirmed);
             this.Controls.Add(this.btn_refresh);

+ 7 - 6
parkMonitor/entity/EntityForCore.cs

@@ -51,7 +51,7 @@ namespace parkMonitor.entity
             catch
             {
                 UILogServer.ins.log("停取车基本配置异常");
-                Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "停取车基本配置异常");
+                Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "停取车基本配置异常");
             }
         }
         /// <summary>
@@ -60,30 +60,31 @@ namespace parkMonitor.entity
         /// <returns></returns>
         public bool Init()
         {
+            Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "******************************** 新的开始 ********************************");
             bool initState = true;
             //数据库连接参数初始化及连接测试
-            Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "数据库初始配置");
+            Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "数据库初始配置");
             DBConnection.Init();
             //远端连接测试
             using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
             {
-                Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "远端数据库连接测试");
+                Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "远端数据库连接测试");
                 Operation.TryOpen(conn);
                 initState = conn.Ping();
             }
             //本地连接测试
             using (MySqlConnection conn = new MySqlConnection(DBConnection.localConf))
             {
-                Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "本地数据库连接测试");
+                Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "本地数据库连接测试");
                 Operation.TryOpen(conn);
                 initState = initState && conn.Ping();
             }
             //车位管理初始化
-            Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "初始化车位");
+            Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "初始化车位");
             ParkingSpaceManager.ins = new ParkingSpaceManager();
             initState = initState && ParkingSpaceManager.ins.InitParkingSpace();
             //缓冲位初始化
-            Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "初始化缓冲位");
+            Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "初始化缓冲位");
             ParkingBufferManager.ins = new ParkingBufferManager();
             initState = initState && ParkingBufferManager.ins.InitParkingBuffers();
             return initState;

+ 12 - 7
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -748,7 +748,7 @@ namespace parkMonitor.server.CoreThread
             status = 2;
             cm.status = status;
             cm.RobotID = robotID;//启动对应机械手
-            ParkingBuffer pb = ParkingBufferManager.ins.MallocPakringBuffer(queueCmd.id);
+            ParkingBuffer pb = ParkingBufferManager.ins.MallocParkingBuffer(queueCmd.id);
             if (pb == null)
             {
                 Rollback(queueCmd, ppp.parkingSpaceID, true, true, lmToBeReleased);
@@ -841,6 +841,10 @@ namespace parkMonitor.server.CoreThread
                                     //数据库操作失败写日志
                                     Log.WriteLog(LogType.DATABASE, insertRecordSql);
                                 }
+                            }
+                            using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
+                            {
+                                Operation.TryOpen(conn);
                                 string updateVehicleSql = "update vehicle set vehiclepParkState = 1,scanEntryTime = '" + queueCmd.TimeRecord + "',parkingRecordsID = '" + parkingRecordsID + "',parkingSpaceID = '" + ppp.parkingSpaceID + "',vehicleTypeConfirm = 1,frontwheelbase = '" + frontWheelbase + "',rearwheelbase = '" + rearWheelbase + "' where numberPlate = '" + queueCmd.LicenseNum + "'";
                                 int temp;
                                 if (!Operation.MyTransaction(conn, updateVehicleSql, out temp))
@@ -992,7 +996,7 @@ namespace parkMonitor.server.CoreThread
             //    connectionStr = DBConnection.remoteStr;
             //    ps = oper.GetFetchingSpace(connectionStr, parkingSpaceID);
             //}
-            if(ParkingSpaceManager.ins.parkingSpaceStatusMap.TryGetValue(parkingSpaceID, out ps) || ps == null)
+            if (!ParkingSpaceManager.ins.parkingSpaceStatusMap.TryGetValue(parkingSpaceID, out ps) || ps == null)
             {
                 Rollback(queueCmd, parkingSpaceID, false, false, null);
                 return;
@@ -1044,18 +1048,19 @@ namespace parkMonitor.server.CoreThread
             //释放机械手
             Robot.robot1.occupied = false;
             Robot.robot1.waitCount -= 1;
+            
             //释放缓冲位与车位,缓冲位ID暂用车位X代替
             if (ParkingSpaceManager.ins == null || !ParkingSpaceManager.ins.ReleaseParkingSpace(ps.parkingSpaceID) || ParkingBufferManager.ins == null || !ParkingBufferManager.ins.ReleaseParkingBuffer(ps.parkingSpaceX))
             {
                 Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "车位异常,请检查"); UILogServer.ins.error("车位异常,请检查");
             }
-
             Log.WriteLog(LogType.NOT_DATABASE,"取车流程:号牌:" + queueCmd.LicenseNum + "取车完成");
             UILogServer.ins.info("取车流程:号牌:" + queueCmd.LicenseNum + "取车完成");
 
             //自动化测试用
             //ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
 
+            int freeSpaceCount = ParkingSpaceManager.ins.GetFreeSpaceCount();
             //数据库更新
             lock (Parking_Space.RecordLock)
             {
@@ -1065,8 +1070,8 @@ namespace parkMonitor.server.CoreThread
                     {
                         //云端数据库更新
                         //更新车库表车位数
-                        int freeSpaceCount = oper.getGarageFreeSpace(DBConnection.remoteStr, garageID);
-                        freeSpaceCount = freeSpaceCount + 1;
+                        //int freeSpaceCount = oper.getGarageFreeSpace(DBConnection.remoteStr, garageID);
+                        //freeSpaceCount = freeSpaceCount + 1;
                         //oper.UpdateGarageFreeSpace(connectionStr, freeSpaceCount, garageID);
                         //更新车位表车位状态
                         //oper.UpdateParkingSpaceState(connectionStr, ps.parkingSpaceID, 0);
@@ -1111,8 +1116,8 @@ namespace parkMonitor.server.CoreThread
                     {
                         connectionStr = DBConnection.localStr;
                         //更新车库表车位数
-                        int freeSpaceCount = oper.getGarageFreeSpace(connectionStr, garageID);
-                        freeSpaceCount = freeSpaceCount + 1;
+                        //int freeSpaceCount = oper.getGarageFreeSpace(connectionStr, garageID);
+                        //freeSpaceCount = freeSpaceCount + 1;
                         oper.UpdateGarageFreeSpace(connectionStr, freeSpaceCount, garageID);
                         //更新车位表车位状态
                         oper.UpdateParkingSpaceState(connectionStr, ps.parkingSpaceID, 0);

+ 20 - 3
parkMonitor/server/CoreThread/SpaceManager.cs

@@ -161,6 +161,23 @@ namespace parkMonitor.server.CoreThread
                 return false;
             }
         }
+        /// <summary>
+        /// 获取空闲车位数
+        /// </summary>
+        /// <returns></returns>
+        public int GetFreeSpaceCount()
+        {
+            int count = 0;
+            if (parkingSpaceStatusMap != null)
+            {
+                Dictionary<int, Parking_Space>.Enumerator enumer = parkingSpaceStatusMap.GetEnumerator();
+                while (enumer.MoveNext())
+                {
+                    if (enumer.Current.Value.parkingSpaceState == 0) { count += 1; }
+                }
+            }
+            return count;
+        }
     }
 
     public class CEntrance
@@ -219,12 +236,12 @@ namespace parkMonitor.server.CoreThread
                     bufferList.Add(new ParkingBuffer(i));
                 }
                 UILogServer.ins.warn("请手动确认缓冲位状态");
-                Log.WriteLog(LogType.NOTDATABASE, LogFile.LOG, "初始化缓冲位成功");
+                Log.WriteLog(LogType.NOT_DATABASE, LogFile.LOG, "初始化缓冲位成功");
                 return true;
             }
             catch { return false; }
         }
-        public ParkingBuffer MallocPakringBuffer(int numMachineID)
+        public ParkingBuffer MallocParkingBuffer(int numMachineID)
         {
             if (!checkedManually)
                 return null;
@@ -244,7 +261,7 @@ namespace parkMonitor.server.CoreThread
             }
             if (allocatedPB != null)
             {
-                bufferList[allocatedPB.bufferID].idle = false;
+                bufferList[allocatedPB.bufferID - 1].idle = false;
                 return allocatedPB;
             }
             else