浏览代码

并行debug

yc_t 7 年之前
父节点
当前提交
56e1c15b0a

二进制
modbus_PLC_laser_test/新plc模拟.mbs


+ 5 - 5
parkMonitor/App.config

@@ -16,7 +16,7 @@
   </Equipments>
   <appSettings>
     <!--数据库连接配置文件-->
-    <add key="SqlConnectionLocation" value="Data Source=127.0.0.1;port=20000;uid=root;pooling=true;pwd=;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
+    <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="localGarageId" value="1"/>
@@ -30,7 +30,7 @@
     <add key="ClientSettingsProvider.ServiceUri" value="" />
     <!--PLC基本配置-->
     <!--<add key="PLC_ip_address" value="192.168.0.10" />-->
-    <add key="PLC_ip_address" value="192.168.0.1" />
+    <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" />
@@ -66,7 +66,7 @@
     <add key="licenseTime" value="10" />
     <add key="userTime" value="30" />
     <!--上位机(Web线程)IP地址及配置serverScoket的端口-->
-    <add key="WebConfig" value="192.168.0.164:9000" />
+    <add key="WebConfig" value="192.168.111.254:9000" />
     <!--<add key ="WebConfig" value="127.0.0.1:9000"/>-->
 
     <!--车库入口-->
@@ -79,8 +79,8 @@
 
     <!--ip位置映射表-->
     <!--位置编号;基点横坐标;车位宽度;宽度补偿-->
-    <add key="192.168.0.50" value="1" />
-    <add key="192.168.0.51" value="2" />
+    <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"/>

+ 1 - 0
parkMonitor/DataBase/Parking_Space.cs

@@ -9,6 +9,7 @@ namespace parkMonitor.DataBase
     public class Parking_Space
     {
         public static Object spaceLock = new Object();
+        public static Object RecordLock = new Object();
         public int parkingSpaceID { get; set; }
         //public float parkingSpaceWeight { get; set; }
         public int garageID { get; set; }

+ 2 - 2
parkMonitor/manualParking/ManualParkingSimul.cs

@@ -60,7 +60,7 @@ namespace parkMonitor
             bool isTelRegister = oper.IsTelRegister(connectionStr, userId);
             if (isTelRegister == false)
             {
-                UILogServer.ins.error("该号码未被注册,请先注册");
+                UILogServer.ins.error(lic+"停车,该号码未被注册,请先注册");
             }
             else if (executableCmd.garageID != 0)
             {
@@ -97,7 +97,7 @@ namespace parkMonitor
             bool isNumberPlate = oper.IsNumberPlate(connectionStr, executableCmd.LicenseNum, executableCmd.garageID);
             if (isTelRegister == false)
             {
-                UILogServer.ins.error("该号码未被注册,请先注册");
+                UILogServer.ins.error(lic+"取车该号码未被注册,请先注册");
             }
             else if (isNumberPlate == false)
             {

+ 54 - 45
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -687,7 +687,7 @@ namespace parkMonitor.server.CoreThread
             }
             Robot.robot1.occupied = false;
             //自动化测试用
-            //ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
+            ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
             //根据号牌查找车型
             //int vehicleTypeID = oper.getVehicleTypeID(numberPlate);
             //判断测量数据是否准确
@@ -696,22 +696,25 @@ namespace parkMonitor.server.CoreThread
             //正常写入数据库
             if (userID != 0)
             {
-                if (!queueCmd.manual)
+                lock (Parking_Space.RecordLock)
                 {
-                    connectionStr = "SqlConnectionStr";
-                    //更新云端数据库
-                    //插入停车记录表
-                    int parkingRecordsID = oper.InsertToParkingRecords(connectionStr, userID, numberPlate, ppp.parkingSpaceID, ppp.garageID, 3, realParkTime);
-                    //车辆表更新车辆信息
-                    oper.UpdateVehicle(connectionStr, numberPlate, 1, realParkTime, parkingRecordsID, ppp.parkingSpaceID, 1, frontWheelbase, rearWheelbase);
-                    //插入消息队列表
-                    oper.InsertToMessageQueue(connectionStr, userID, "停车成功", 1);
-                }
-                else
-                {
-                    connectionStr = "SqlConnectionLocation";
-                    //插入停车记录表
-                    int parkingRecordsID = oper.InsertToLocalParkingRecords(connectionStr, 1, userID, numberPlate, ppp.parkingSpaceID, garageID, 3, realParkTime, frontWheelbase, rearWheelbase);
+                    if (!queueCmd.manual)
+                    {
+                        connectionStr = "SqlConnectionStr";
+                        //更新云端数据库
+                        //插入停车记录表
+                        int parkingRecordsID = oper.InsertToParkingRecords(connectionStr, userID, numberPlate, ppp.parkingSpaceID, ppp.garageID, 3, realParkTime);
+                        //车辆表更新车辆信息
+                        oper.UpdateVehicle(connectionStr, numberPlate, 1, realParkTime, parkingRecordsID, ppp.parkingSpaceID, 1, frontWheelbase, rearWheelbase);
+                        //插入消息队列表
+                        oper.InsertToMessageQueue(connectionStr, userID, "停车成功", 1);
+                    }
+                    else
+                    {
+                        connectionStr = "SqlConnectionLocation";
+                        //插入停车记录表
+                        int parkingRecordsID = oper.InsertToLocalParkingRecords(connectionStr, 1, userID, numberPlate, ppp.parkingSpaceID, garageID, 3, realParkTime, frontWheelbase, rearWheelbase);
+                    }
                 }
             }
             //异常写入日志文件
@@ -811,7 +814,7 @@ namespace parkMonitor.server.CoreThread
             }
             if (vehiclelist == null)
             {
-                Rollback(queueCmd, ps.parkingSpaceID, false, false);
+                Rollback(queueCmd, ps.parkingSpaceID, false, false, null);
                 return;
             }
             int parkingSpaceID = vehiclelist.parkingSpaceID;
@@ -830,7 +833,7 @@ namespace parkMonitor.server.CoreThread
             }
             if (ps == null)
             {
-                Rollback(queueCmd, parkingSpaceID, false, false);
+                Rollback(queueCmd, parkingSpaceID, false, false, null);
                 return;
             }
             cm = new ControlMessage();
@@ -884,34 +887,40 @@ namespace parkMonitor.server.CoreThread
             ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
 
             //数据库更新
-            if (!queueCmd.manual)
+            lock (Parking_Space.RecordLock)
             {
-                connectionStr = "SqlConnectionStr";
-                //云端数据库更新
-                //更新车库表车位数
-                int freeSpaceCount = oper.getGarageFreeSpace(connectionStr, garageID);
-                freeSpaceCount = freeSpaceCount + 1;
-                oper.UpdateGarageFreeSpace(connectionStr, freeSpaceCount, garageID);
-                //更新车位表车位状态
-                oper.UpdateParkingSpaceState(connectionStr, ps.parkingSpaceID, 0);
-                //更新车辆表车辆停车状态
-                oper.UpdateVehicleParkState(connectionStr, queueCmd.LicenseNum, 0);
-                //更新停车记录表
-                oper.UpdateParkingRecords(connectionStr, 6, queueCmd.TimeRecord, queueCmd.parkingRecordsID);
-            }
-            else
-            {
-                connectionStr = "SqlConnectionLocation";
-                //更新车库表车位数
-                int freeSpaceCount = oper.getGarageFreeSpace(connectionStr, garageID);
-                freeSpaceCount = freeSpaceCount + 1;
-                oper.UpdateGarageFreeSpace(connectionStr, freeSpaceCount, garageID);
-                //更新车位表车位状态
-                oper.UpdateParkingSpaceState(connectionStr, ps.parkingSpaceID, 0);
-                ////更新车辆表车辆停车状态
-                //locationOper.UpdateVehicleParkState(queueCmd.LicenseNum, 0);
-                //更新停车记录表
-                oper.UpdateParkingRecords(connectionStr, 0, 6, queueCmd.TimeRecord, queueCmd.parkingRecordsID);
+                lock (Parking_Space.spaceLock)
+                {
+                    if (!queueCmd.manual)
+                    {
+                        connectionStr = "SqlConnectionStr";
+                        //云端数据库更新
+                        //更新车库表车位数
+                        int freeSpaceCount = oper.getGarageFreeSpace(connectionStr, garageID);
+                        freeSpaceCount = freeSpaceCount + 1;
+                        oper.UpdateGarageFreeSpace(connectionStr, freeSpaceCount, garageID);
+                        //更新车位表车位状态
+                        oper.UpdateParkingSpaceState(connectionStr, ps.parkingSpaceID, 0);
+                        //更新车辆表车辆停车状态
+                        oper.UpdateVehicleParkState(connectionStr, queueCmd.LicenseNum, 0);
+                        //更新停车记录表
+                        oper.UpdateParkingRecords(connectionStr, 6, queueCmd.TimeRecord, queueCmd.parkingRecordsID);
+                    }
+                    else
+                    {
+                        connectionStr = "SqlConnectionLocation";
+                        //更新车库表车位数
+                        int freeSpaceCount = oper.getGarageFreeSpace(connectionStr, garageID);
+                        freeSpaceCount = freeSpaceCount + 1;
+                        oper.UpdateGarageFreeSpace(connectionStr, freeSpaceCount, garageID);
+                        //更新车位表车位状态
+                        oper.UpdateParkingSpaceState(connectionStr, ps.parkingSpaceID, 0);
+                        ////更新车辆表车辆停车状态
+                        //locationOper.UpdateVehicleParkState(queueCmd.LicenseNum, 0);
+                        //更新停车记录表
+                        oper.UpdateParkingRecords(connectionStr, 0, 6, queueCmd.TimeRecord, queueCmd.parkingRecordsID);
+                    }
+                }
             }
         }
     }

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

@@ -694,18 +694,18 @@ namespace parkMonitor.server
             });
 
             //模拟plc与激光自动操作
-            //Task.Factory.StartNew(() =>
-            //{
-            //    laserAnim();
-            //});
-            //Task.Factory.StartNew(() =>
-            //{
-            //    wheelbaseAnim();
-            //});
-            //Task.Factory.StartNew(() =>
-            //{
-            //    autoCycling();
-            //});
+            Task.Factory.StartNew(() =>
+            {
+                laserAnim();
+            });
+            Task.Factory.StartNew(() =>
+            {
+                wheelbaseAnim();
+            });
+            Task.Factory.StartNew(() =>
+            {
+                autoCycling();
+            });
         }
 
         /// <summary>
@@ -740,9 +740,9 @@ namespace parkMonitor.server
                                 {
                                     laserWorking = false;
                                     SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "254");
-                                    Thread.Sleep(1000);
+                                    Thread.Sleep(500);
                                     SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "255");
-                                    Thread.Sleep(1000);
+                                    Thread.Sleep(500);
                                 }
                                 //模拟测量
                                 else
@@ -752,7 +752,7 @@ namespace parkMonitor.server
                                         SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "1");
                                         Thread.Sleep(500);
                                         SendtoPLC(laserMgmtList[0].laser_status_address.ToString(), "2");
-                                        Thread.Sleep(5000);
+                                        Thread.Sleep(1000);
                                         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(2000);
+                                        Thread.Sleep(1000);
                                     }
                                     laserWorking = true;
                                 }
@@ -791,21 +791,21 @@ namespace parkMonitor.server
                                 if (!working)
                                 {
                                     working = true;
-                                    Thread.Sleep(3000);
+                                    Thread.Sleep(1000);
                                     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(5000);
+                                    Thread.Sleep(1000);
                                 }
                             }
                             else
                             {
                                 working = false;
                                 SendtoPLC("81", "254");
-                                Thread.Sleep(1000);
+                                Thread.Sleep(500);
                                 SendtoPLC("81", "255");
-                                Thread.Sleep(1000);
+                                Thread.Sleep(500);
                             }
                         }
                     }
@@ -827,27 +827,27 @@ namespace parkMonitor.server
                         //停取车复位
                         if (addr == park_completed_acknowledge_address && value == 0)
                         {
-                            Thread.Sleep(2000);
+                            Thread.Sleep(1000);
                             SendtoPLC(park_completed_address.ToString(), "0");
                             SendtoPLC(park_completed_acknowledge_address.ToString(), "1");
                         }
                         if (addr == fetch_completed_acknowledge_address && value == 0)
                         {
-                            Thread.Sleep(2000);
+                            Thread.Sleep(1000);
                             SendtoPLC(fetch_completed_address.ToString(), "0");
                             SendtoPLC(fetch_completed_acknowledge_address.ToString(), "1");
                         }
                         //停车完成
                         if (addr == parking_startRobot_address && value == 1)
                         {
-                            Thread.Sleep(10000);
+                            Thread.Sleep(4000);
                             SendtoPLC(park_completed_address.ToString(), "1");
                             SendtoPLC(addr.ToString(), "0");
                         }
                         //取车完成
                         if (addr == fetching_startRobot_address && value == 1)
                         {
-                            Thread.Sleep(10000);
+                            Thread.Sleep(4000);
                             SendtoPLC(fetch_completed_address.ToString(), "1");
                             SendtoPLC(addr.ToString(), "0");
                         }