Browse Source

Merge commit '4fd888ef5870e3bcd6a0bd0cfb0ade3f7d2d8a98'

yct 2 years ago
parent
commit
cc57e965d9

+ 1 - 4
.gitignore

@@ -36,7 +36,4 @@ packages/
 .idea*
 *.dll
 终端/ct_terminal/ct_terminal/Resource*
-cmake-build-debug/**
-plc调度节点/build/**
-测量节点/build/**
-.vscode
+管理节点/*

+ 4 - 4
入口引导提示节点/ui_config.json

@@ -1,8 +1,8 @@
 {
   "db": {"ip": "192.168.1.233","port": 3306,"database": "ct_project","user": "zx","password": "zx123456"},
   "rabbitmq": {"ip":"192.168.1.233","port":5672,"user":"zx","password":"zx123456"},
-  "led": {"ip": "192.168.1.164","port": 5005},
-  "entrance_id": 5,
-  "unit":3,
-  "prj": {"ip": "192.168.1.194","port": 4352,"type": 2}
+  "led": {"ip": "192.168.1.163","port": 5005},
+  "entrance_id": 2,
+  "unit":1,
+  "prj": {"ip": "192.168.1.193","port": 4352,"type": 2}
 }

+ 23 - 18
入口引导提示节点/window_screen_pyqt.py

@@ -126,6 +126,15 @@ class Frame(QMainWindow):
         self.panel_arrow.setGeometry(0, top_h +car_number_h+ txt_h, arrow_w, arrow_h)
 
     def Switch(self):
+        if self.terminal_statu.timeout() is False:
+            terminal_statu = message.terminal_node_statu()
+            tf.Parse(self.terminal_statu.statu, terminal_statu)
+            print(terminal_statu.car_number)
+            self.car_number_txt.setText(terminal_statu.car_number)
+            self.car_number_txt.setStyleSheet("border-width:1px;border-style:solid;border-color:rgb(150,150,150);color:green")
+        else:
+            self.car_number_txt.setText("车牌号为空!")
+            self.car_number_txt.setStyleSheet("border-width:1px;border-style:solid;border-color:rgb(150,150,150);color:red")
         #先判断连接状态
         if self.icpu_statu.timeout():
             self.panel_txt.ShowImg(self.images['传感器超时'])
@@ -143,14 +152,7 @@ class Frame(QMainWindow):
         measure_info=message.measure_info()
         tf.Parse(self.measure_statu.statu,measure_info)
 
-        if self.terminal_statu.timeout() is False and measure_info.ground_status != MeasureStatu["无数据"]:
-            terminal_statu = message.terminal_node_statu()
-            tf.Parse(self.terminal_statu.statu, terminal_statu)
-            self.car_number_txt.setText(terminal_statu.car_number)
-            self.car_number_txt.setStyleSheet("border-width:1px;border-style:solid;border-color:rgb(150,150,150);color:green")
-        else:
-            self.car_number_txt.setText("未拍摄到号码牌!")
-            self.car_number_txt.setStyleSheet("border-width:1px;border-style:solid;border-color:rgb(150,150,150);color:red")
+
         #外门状态控制投影仪
         if self.pjc_ is not None:
             if icpu_statu.door_statu==3: #关门状态
@@ -220,7 +222,7 @@ class Frame(QMainWindow):
                 return
 
         #光电正常
-        if lidar_statu==MeasureStatu["无数据"]:
+        if lidar_statu==MeasureStatu["无数据"] and icpu_statu.is_occupy != 2:
             self.panel_txt.ShowImg(self.images["空闲"])
             self.panel_arrow.ShowImg(self.images["空闲"])
             self.last_show="空闲"
@@ -262,16 +264,19 @@ class Frame(QMainWindow):
                 self.last_show="超宽"
                 return
             border=border_statu&0x0f
-
-
-            if ArrowType[border] == "正确图片":
-                self.panel_arrow.ShowImg(self.images[ArrowType[border]])
-                self.panel_txt.ShowImg(self.images['正确文字'])
-                self.last_show="正确"
+            if (border in ArrowType.keys()) is False:
+                self.panel_txt.ShowImg(self.images['测绘超时'])
+                self.panel_arrow.FlashImg(self.images['测绘超时'])
+                self.last_show = "超时"
             else:
-                self.panel_arrow.FlashImg(self.images[ArrowType[border]])
-                self.panel_txt.ShowImg(self.images['请调整'])
-                self.last_show="请调整"
+                if ArrowType[border] == "正确图片":
+                    self.panel_arrow.ShowImg(self.images[ArrowType[border]])
+                    self.panel_txt.ShowImg(self.images['正确文字'])
+                    self.last_show="正确"
+                else:
+                    self.panel_arrow.FlashImg(self.images[ArrowType[border]])
+                    self.panel_txt.ShowImg(self.images['请调整'])
+                    self.last_show="请调整"
 
 
 

+ 18 - 18
指令检查节点/CheckEntrance.py

@@ -62,10 +62,7 @@ class EntranceChecker(threading.Thread):
             return tf.MessageToString(park, as_utf8=True)
         else:
             park.statu.execute_statu = message.eError
-            if self.error_str == 'OK':
-            	park.statu.statu_description = "测量异常,请重新点击存车按钮!"
-            else:
-            	park.statu.statu_description = self.error_str
+            park.statu.statu_description = self.error_str
             return tf.MessageToString(park, as_utf8=True)
 
     def run(self):
@@ -132,18 +129,18 @@ class EntranceChecker(threading.Thread):
             #先判断光电
             if is_moving:
                 if icpu_statu.back_io==1:
-                    self.error_str='请按提示调整(后超界)'
+                    self.error_str='请按提示调整'
                     self.last_show="调整"
                     continue
 
             #光电正常
-            if lidar_statu==MeasureStatu["无数据"]:
-                self.error_str='请按提示调整(雷达无数据)'
+            if lidar_statu==MeasureStatu["无数据"]and icpu_statu.is_occupy != 2:
+                self.error_str='无车!'
                 self.last_show="空闲"
                 continue
             elif lidar_statu==MeasureStatu["噪声"]:
                 if self.last_show=="超时":
-                    self.error_str='请按提示调整(雷达噪声)'
+                    self.error_str='雷达噪声'
                     self.last_show="空闲"
                 continue
             elif lidar_statu==MeasureStatu["ok"]:
@@ -155,30 +152,33 @@ class EntranceChecker(threading.Thread):
                     self.last_show="轴距超差"
                     continue
                 if (border_statu>>9)&0x01==1:
-                    self.error_str='请按提示调整(向左)'
+                    self.error_str='请按提示调整(向左旋转)'
                     self.last_show="请调整"
                     continue
                 if (border_statu>>8)&0x01==1:
-                    self.error_str='请按提示调整(向右)'
+                    self.error_str='请按提示调整(向右旋转)'
                     self.last_show="请调整"
                     continue
                 if (border_statu>>10)&0x01==1:
-                    self.error_str='请按提示调整(方向盘)'
+                    self.error_str='请按提示调整(回正方向盘)'
                     self.last_show="请调整"
                     continue
                 if (border_statu>>6)&0x01==1:
-                    self.error_str='超宽车辆'
+                    self.error_str='超宽'
                     self.last_show="超宽"
                     continue
                 border=border_statu&0x0f
 
-
-                if ArrowType[border] == "正确图片":
-                    self.error_str="OK"
-                    self.last_show="正确"
+                if (border in ArrowType.keys()) is False:
+                    self.error_str='测量有误'
+                    self.last_show = "超时"
                 else:
-                    self.error_str="请按提示调整"
-                    self.last_show="请调整"
+                    if ArrowType[border] == "正确图片":
+                        self.error_str="OK"
+                        self.last_show="正确"
+                    else:
+                        self.error_str="请按提示调整"
+                        self.last_show="请调整"
 
 
 

+ 4 - 2
指令检查节点/node.py

@@ -19,7 +19,10 @@ statu_ex_keys = [
     ["statu_ex","measure_3_statu_port"],
     ["statu_ex","measure_4_statu_port"],
     ["statu_ex","measure_5_statu_port"],
-    ["statu_ex","measure_6_statu_port"]
+    ["statu_ex","measure_6_statu_port"],
+    ["statu_ex","dispatch_1_statu_port"],
+    ["statu_ex","dispatch_2_statu_port"],
+    ["statu_ex","dispatch_3_statu_port"]
 ]
 # mq参数
 mq_ip = "192.168.1.233"
@@ -76,7 +79,6 @@ def check_pick_command(body):
         print("取车指令 %s ERROR : 唯一码:%s    检查失败!" % (
             datetime.datetime.now(), cmd.primary_key))
         response_port = "pick_response_%d_port" % cmd.terminal_id
-
     g_rabbitmq.publish( ex_name, response_port,table)
     print("发送反馈端口:%s    反馈表单:%s"%(response_port,table))
 

+ 21 - 1
管理节点/node.py

@@ -132,6 +132,24 @@ class MainWindow(QMainWindow, threading.Thread):
             return "background-color:rgb(0,180,0)"
         elif color == "yellow":
             return "background-color:rgb(248,239,71)"
+        elif color == "pastel":
+            return "background-color:rgb(241,158,194)"
+
+    def drawMcpuBtn(self, key):
+        mouth = key.split(':')[0]
+        id = key.split(':')[1]
+        btn_name = mouth + '_' + id + '_statu_btn'
+        btn = self.findChild(QPushButton, btn_name)
+        iomsg = g_mcpu.GetMcpuIoMsg(key)
+        if g_mcpu.GetMcpuConnectStatus(key) is True or iomsg.timeout() is False:
+            btn.setText(btn.text()[:10] + "正常")
+            btn.setStyleSheet(self.getBackGroundColor("green"))
+
+            btn.setToolTip(str(iomsg.statu))
+        else:
+            btn.setText(btn.text()[:10] + "断连")
+            btn.setToolTip("None")
+            btn.setStyleSheet(self.getBackGroundColor("gray"))
 
     def drawMcpuBtn(self, key):
         mouth = key.split(':')[0]
@@ -181,9 +199,11 @@ class MainWindow(QMainWindow, threading.Thread):
                     "存车" if dict["type"] == 1 else "取车", dict["car_number"], a)
                 color = ""
                 if dict["statu"] == 1:
+                    color = self.getBackGroundColor("yellow")
+                elif dict["statu"] == 2:
                     color = self.getBackGroundColor("green")
                 elif dict["statu"] == 0:
-                    color = self.getBackGroundColor("yellow")
+                    color = self.getBackGroundColor("pastel")
                 elif dict["statu"] == 3:
                     color = self.getBackGroundColor("red")
                 btn.setStyleSheet('border:3px groove orange;border-radius:10px;padding:2px 4px;' + color)

+ 52 - 38
管理节点/ui/spaceUi.py

@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
 class Ui_MainWindow(object):
     def setupUi(self, MainWindow):
         MainWindow.setObjectName("MainWindow")
-        MainWindow.resize(1135, 872)
+        MainWindow.resize(1279, 864)
         MainWindow.setStyleSheet("")
         self.centralwidget = QtWidgets.QWidget(MainWindow)
         self.centralwidget.setObjectName("centralwidget")
@@ -241,6 +241,18 @@ class Ui_MainWindow(object):
         self.horizontalLayout_6.addWidget(self.pushButton_2)
         spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
         self.horizontalLayout_6.addItem(spacerItem16)
+        self.pushButton_6 = QtWidgets.QPushButton(self.out_wiget)
+        self.pushButton_6.setMinimumSize(QtCore.QSize(0, 35))
+        font = QtGui.QFont()
+        font.setPointSize(11)
+        font.setBold(True)
+        font.setWeight(75)
+        self.pushButton_6.setFont(font)
+        self.pushButton_6.setStyleSheet("border:3px groove green;border-radius:10px;padding:2px 4px;background-color:rgb(241,158,194)")
+        self.pushButton_6.setObjectName("pushButton_6")
+        self.horizontalLayout_6.addWidget(self.pushButton_6)
+        spacerItem17 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_6.addItem(spacerItem17)
         self.pushButton_4 = QtWidgets.QPushButton(self.out_wiget)
         self.pushButton_4.setMinimumSize(QtCore.QSize(0, 35))
         font = QtGui.QFont()
@@ -251,8 +263,8 @@ class Ui_MainWindow(object):
         self.pushButton_4.setStyleSheet("border:3px groove green;border-radius:10px;padding:2px 4px;background-color:rgb(0,180,0)")
         self.pushButton_4.setObjectName("pushButton_4")
         self.horizontalLayout_6.addWidget(self.pushButton_4)
-        spacerItem17 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_6.addItem(spacerItem17)
+        spacerItem18 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_6.addItem(spacerItem18)
         self.pushButton_5 = QtWidgets.QPushButton(self.out_wiget)
         self.pushButton_5.setMinimumSize(QtCore.QSize(0, 35))
         font = QtGui.QFont()
@@ -263,8 +275,8 @@ class Ui_MainWindow(object):
         self.pushButton_5.setStyleSheet("border:3px groove yellow;border-radius:10px;padding:2px 4px;background-color:rgb(248,239,71)")
         self.pushButton_5.setObjectName("pushButton_5")
         self.horizontalLayout_6.addWidget(self.pushButton_5)
-        spacerItem18 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_6.addItem(spacerItem18)
+        spacerItem19 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_6.addItem(spacerItem19)
         self.pushButton_3 = QtWidgets.QPushButton(self.out_wiget)
         self.pushButton_3.setMinimumSize(QtCore.QSize(0, 35))
         font = QtGui.QFont()
@@ -275,50 +287,51 @@ class Ui_MainWindow(object):
         self.pushButton_3.setStyleSheet("border:3px groove red;border-radius:10px;padding:2px 4px;background-color:rgb(255,70,70)")
         self.pushButton_3.setObjectName("pushButton_3")
         self.horizontalLayout_6.addWidget(self.pushButton_3)
-        spacerItem19 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_6.addItem(spacerItem19)
+        spacerItem20 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_6.addItem(spacerItem20)
         self.horizontalLayout_6.setStretch(1, 1)
         self.horizontalLayout_6.setStretch(3, 1)
         self.horizontalLayout_6.setStretch(5, 1)
         self.horizontalLayout_6.setStretch(7, 1)
         self.horizontalLayout_6.setStretch(9, 1)
+        self.horizontalLayout_6.setStretch(11, 1)
         self.verticalLayout_6.addLayout(self.horizontalLayout_6)
         self.outmcpu_widget = QtWidgets.QWidget(self.out_wiget)
         self.outmcpu_widget.setObjectName("outmcpu_widget")
         self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.outmcpu_widget)
         self.horizontalLayout_5.setObjectName("horizontalLayout_5")
-        spacerItem20 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem20)
+        spacerItem21 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem21)
         self.out_mcpu_1_statu_btn = QtWidgets.QPushButton(self.outmcpu_widget)
         self.out_mcpu_1_statu_btn.setObjectName("out_mcpu_1_statu_btn")
         self.horizontalLayout_5.addWidget(self.out_mcpu_1_statu_btn)
-        spacerItem21 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem21)
+        spacerItem22 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem22)
         self.out_mcpu_2_statu_btn = QtWidgets.QPushButton(self.outmcpu_widget)
         self.out_mcpu_2_statu_btn.setObjectName("out_mcpu_2_statu_btn")
         self.horizontalLayout_5.addWidget(self.out_mcpu_2_statu_btn)
-        spacerItem22 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem22)
+        spacerItem23 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem23)
         self.out_mcpu_3_statu_btn = QtWidgets.QPushButton(self.outmcpu_widget)
         self.out_mcpu_3_statu_btn.setObjectName("out_mcpu_3_statu_btn")
         self.horizontalLayout_5.addWidget(self.out_mcpu_3_statu_btn)
-        spacerItem23 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem23)
+        spacerItem24 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem24)
         self.out_mcpu_4_statu_btn = QtWidgets.QPushButton(self.outmcpu_widget)
         self.out_mcpu_4_statu_btn.setObjectName("out_mcpu_4_statu_btn")
         self.horizontalLayout_5.addWidget(self.out_mcpu_4_statu_btn)
-        spacerItem24 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem24)
+        spacerItem25 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem25)
         self.out_mcpu_5_statu_btn = QtWidgets.QPushButton(self.outmcpu_widget)
         self.out_mcpu_5_statu_btn.setObjectName("out_mcpu_5_statu_btn")
         self.horizontalLayout_5.addWidget(self.out_mcpu_5_statu_btn)
-        spacerItem25 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem25)
+        spacerItem26 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem26)
         self.out_mcpu_6_statu_btn = QtWidgets.QPushButton(self.outmcpu_widget)
         self.out_mcpu_6_statu_btn.setObjectName("out_mcpu_6_statu_btn")
         self.horizontalLayout_5.addWidget(self.out_mcpu_6_statu_btn)
-        spacerItem26 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_5.addItem(spacerItem26)
+        spacerItem27 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_5.addItem(spacerItem27)
         self.horizontalLayout_5.setStretch(1, 4)
         self.horizontalLayout_5.setStretch(3, 4)
         self.horizontalLayout_5.setStretch(5, 4)
@@ -373,38 +386,38 @@ class Ui_MainWindow(object):
         self.inmcpu_widget.setObjectName("inmcpu_widget")
         self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.inmcpu_widget)
         self.horizontalLayout_11.setObjectName("horizontalLayout_11")
-        spacerItem27 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem27)
+        spacerItem28 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem28)
         self.in_mcpu_1_statu_btn = QtWidgets.QPushButton(self.inmcpu_widget)
         self.in_mcpu_1_statu_btn.setObjectName("in_mcpu_1_statu_btn")
         self.horizontalLayout_11.addWidget(self.in_mcpu_1_statu_btn)
-        spacerItem28 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem28)
+        spacerItem29 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem29)
         self.in_mcpu_2_statu_btn = QtWidgets.QPushButton(self.inmcpu_widget)
         self.in_mcpu_2_statu_btn.setObjectName("in_mcpu_2_statu_btn")
         self.horizontalLayout_11.addWidget(self.in_mcpu_2_statu_btn)
-        spacerItem29 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem29)
+        spacerItem30 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem30)
         self.in_mcpu_3_statu_btn = QtWidgets.QPushButton(self.inmcpu_widget)
         self.in_mcpu_3_statu_btn.setObjectName("in_mcpu_3_statu_btn")
         self.horizontalLayout_11.addWidget(self.in_mcpu_3_statu_btn)
-        spacerItem30 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem30)
+        spacerItem31 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem31)
         self.in_mcpu_4_statu_btn = QtWidgets.QPushButton(self.inmcpu_widget)
         self.in_mcpu_4_statu_btn.setObjectName("in_mcpu_4_statu_btn")
         self.horizontalLayout_11.addWidget(self.in_mcpu_4_statu_btn)
-        spacerItem31 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem31)
+        spacerItem32 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem32)
         self.in_mcpu_5_statu_btn = QtWidgets.QPushButton(self.inmcpu_widget)
         self.in_mcpu_5_statu_btn.setObjectName("in_mcpu_5_statu_btn")
         self.horizontalLayout_11.addWidget(self.in_mcpu_5_statu_btn)
-        spacerItem32 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem32)
+        spacerItem33 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem33)
         self.in_mcpu_6_statu_btn = QtWidgets.QPushButton(self.inmcpu_widget)
         self.in_mcpu_6_statu_btn.setObjectName("in_mcpu_6_statu_btn")
         self.horizontalLayout_11.addWidget(self.in_mcpu_6_statu_btn)
-        spacerItem33 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_11.addItem(spacerItem33)
+        spacerItem34 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_11.addItem(spacerItem34)
         self.horizontalLayout_11.setStretch(1, 4)
         self.horizontalLayout_11.setStretch(3, 4)
         self.horizontalLayout_11.setStretch(5, 4)
@@ -451,7 +464,7 @@ class Ui_MainWindow(object):
         self.verticalLayout.addWidget(self.tabWidget)
         MainWindow.setCentralWidget(self.centralwidget)
         self.menubar = QtWidgets.QMenuBar(MainWindow)
-        self.menubar.setGeometry(QtCore.QRect(0, 0, 1135, 23))
+        self.menubar.setGeometry(QtCore.QRect(0, 0, 1279, 23))
         self.menubar.setObjectName("menubar")
         MainWindow.setMenuBar(self.menubar)
         self.statusbar = QtWidgets.QStatusBar(MainWindow)
@@ -483,8 +496,9 @@ class Ui_MainWindow(object):
         self.tabWidget.setTabText(self.tabWidget.indexOf(self.parkingspace), _translate("MainWindow", "车位管理"))
         self.pushButton.setText(_translate("MainWindow", "橙色边框代表存车任务"))
         self.pushButton_2.setText(_translate("MainWindow", "蓝色边框代表取车任务"))
-        self.pushButton_4.setText(_translate("MainWindow", "绿色底色代表任务工作中"))
-        self.pushButton_5.setText(_translate("MainWindow", "黄色底色代表任务排对中"))
+        self.pushButton_6.setText(_translate("MainWindow", "粉色底色代表任务排队中"))
+        self.pushButton_4.setText(_translate("MainWindow", "绿色底色代表任务已完成"))
+        self.pushButton_5.setText(_translate("MainWindow", "黄色底色代表任务工作中"))
         self.pushButton_3.setText(_translate("MainWindow", "红色底色代表任务错误"))
         self.out_mcpu_1_statu_btn.setText(_translate("MainWindow", "A1出口单片机---断连"))
         self.out_mcpu_2_statu_btn.setText(_translate("MainWindow", "A2出口单片机---断连"))

+ 42 - 6
管理节点/ui/spaceUi.ui

@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1135</width>
-    <height>872</height>
+    <width>1279</width>
+    <height>864</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -432,7 +432,7 @@
            <widget class="QWidget" name="out_wiget" native="true">
             <layout class="QVBoxLayout" name="verticalLayout_6" stretch="0,0">
              <item>
-              <layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,1,0,1,0,1,0,1,0,1,0">
+              <layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,1,0,1,0,1,0,1,0,1,0,1,0">
                <item>
                 <spacer name="horizontalSpacer_33">
                  <property name="orientation">
@@ -518,6 +518,42 @@
                  </property>
                 </spacer>
                </item>
+               <item>
+                <widget class="QPushButton" name="pushButton_6">
+                 <property name="minimumSize">
+                  <size>
+                   <width>0</width>
+                   <height>35</height>
+                  </size>
+                 </property>
+                 <property name="font">
+                  <font>
+                   <pointsize>11</pointsize>
+                   <weight>75</weight>
+                   <bold>true</bold>
+                  </font>
+                 </property>
+                 <property name="styleSheet">
+                  <string notr="true">border:3px groove green;border-radius:10px;padding:2px 4px;background-color:rgb(241,158,194)</string>
+                 </property>
+                 <property name="text">
+                  <string>粉色底色代表任务排队中</string>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <spacer name="horizontalSpacer_35">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                 <property name="sizeHint" stdset="0">
+                  <size>
+                   <width>40</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                </spacer>
+               </item>
                <item>
                 <widget class="QPushButton" name="pushButton_4">
                  <property name="minimumSize">
@@ -537,7 +573,7 @@
                   <string notr="true">border:3px groove green;border-radius:10px;padding:2px 4px;background-color:rgb(0,180,0)</string>
                  </property>
                  <property name="text">
-                  <string>绿色底色代表任务工作中</string>
+                  <string>绿色底色代表任务已完成</string>
                  </property>
                 </widget>
                </item>
@@ -573,7 +609,7 @@
                   <string notr="true">border:3px groove yellow;border-radius:10px;padding:2px 4px;background-color:rgb(248,239,71)</string>
                  </property>
                  <property name="text">
-                  <string>黄色底色代表任务排对中</string>
+                  <string>黄色底色代表任务工作中</string>
                  </property>
                 </widget>
                </item>
@@ -1017,7 +1053,7 @@
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>1135</width>
+     <width>1279</width>
      <height>23</height>
     </rect>
    </property>

+ 26 - 41
终端/ct_terminal/ct_terminal/FetchingFrom.Designer.cs

@@ -30,17 +30,15 @@
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FetchingFrom));
             this.panel2 = new System.Windows.Forms.Panel();
-            this.label7 = new System.Windows.Forms.Label();
-            this.label6 = new System.Windows.Forms.Label();
             this.timeLab = new System.Windows.Forms.Label();
             this.returnBtn = new System.Windows.Forms.Button();
-            this.pictureBox2 = new System.Windows.Forms.PictureBox();
             this.panel3 = new System.Windows.Forms.Panel();
             this.ScannerTextBox = new System.Windows.Forms.TextBox();
             this.label2 = new System.Windows.Forms.Label();
             this.label3 = new System.Windows.Forms.Label();
+            this.label7 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
             this.panel2.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
             this.panel3.SuspendLayout();
             this.SuspendLayout();
             // 
@@ -51,35 +49,12 @@
             this.panel2.Controls.Add(this.label6);
             this.panel2.Controls.Add(this.timeLab);
             this.panel2.Controls.Add(this.returnBtn);
-            this.panel2.Controls.Add(this.pictureBox2);
             this.panel2.Location = new System.Drawing.Point(0, 0);
             this.panel2.Margin = new System.Windows.Forms.Padding(2);
             this.panel2.Name = "panel2";
             this.panel2.Size = new System.Drawing.Size(641, 80);
             this.panel2.TabIndex = 2;
             // 
-            // label7
-            // 
-            this.label7.BackColor = System.Drawing.Color.Transparent;
-            this.label7.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));
-            this.label7.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
-            this.label7.Location = new System.Drawing.Point(184, 53);
-            this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(265, 13);
-            this.label7.TabIndex = 13;
-            this.label7.Text = "Intelligent elephant Parking Terminal NO.";
-            // 
-            // label6
-            // 
-            this.label6.BackColor = System.Drawing.Color.Transparent;
-            this.label6.Font = new System.Drawing.Font("宋体", 27F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));
-            this.label6.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
-            this.label6.Location = new System.Drawing.Point(181, 21);
-            this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(268, 26);
-            this.label6.TabIndex = 12;
-            this.label6.Text = "智象泊车终端05号机";
-            // 
             // timeLab
             // 
             this.timeLab.BackColor = System.Drawing.Color.Transparent;
@@ -112,16 +87,6 @@
             this.returnBtn.UseVisualStyleBackColor = false;
             this.returnBtn.Click += new System.EventHandler(this.returnBtn_Click);
             // 
-            // pictureBox2
-            // 
-            this.pictureBox2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox2.BackgroundImage")));
-            this.pictureBox2.Location = new System.Drawing.Point(130, 21);
-            this.pictureBox2.Margin = new System.Windows.Forms.Padding(2);
-            this.pictureBox2.Name = "pictureBox2";
-            this.pictureBox2.Size = new System.Drawing.Size(45, 45);
-            this.pictureBox2.TabIndex = 0;
-            this.pictureBox2.TabStop = false;
-            // 
             // panel3
             // 
             this.panel3.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel3.BackgroundImage")));
@@ -166,6 +131,28 @@
             this.label3.TabIndex = 30;
             this.label3.Text = "请您扫码取车";
             // 
+            // label7
+            // 
+            this.label7.BackColor = System.Drawing.Color.Transparent;
+            this.label7.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));
+            this.label7.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.label7.Location = new System.Drawing.Point(167, 53);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(265, 13);
+            this.label7.TabIndex = 13;
+            this.label7.Text = "Intelligent elephant Parking Terminal NO.";
+            // 
+            // label6
+            // 
+            this.label6.BackColor = System.Drawing.Color.Transparent;
+            this.label6.Font = new System.Drawing.Font("宋体", 27F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));
+            this.label6.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
+            this.label6.Location = new System.Drawing.Point(164, 21);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(268, 26);
+            this.label6.TabIndex = 12;
+            this.label6.Text = "智象泊车终端05号机";
+            // 
             // FetchingFrom
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -181,7 +168,6 @@
             this.Activated += new System.EventHandler(this.FetchingFrom_Activated);
             this.Load += new System.EventHandler(this.FetchingFrom_Load);
             this.panel2.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
             this.panel3.ResumeLayout(false);
             this.panel3.PerformLayout();
             this.ResumeLayout(false);
@@ -191,14 +177,13 @@
         #endregion
 
         private System.Windows.Forms.Panel panel2;
-        private System.Windows.Forms.Label label7;
-        private System.Windows.Forms.Label label6;
         private System.Windows.Forms.Label timeLab;
         private System.Windows.Forms.Button returnBtn;
-        private System.Windows.Forms.PictureBox pictureBox2;
         private System.Windows.Forms.Panel panel3;
         private System.Windows.Forms.TextBox ScannerTextBox;
         private System.Windows.Forms.Label label2;
         private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.Label label6;
     }
 }

+ 0 - 40
终端/ct_terminal/ct_terminal/FetchingFrom.resx

@@ -286,46 +286,6 @@
         NmDm8Y4iUkJqA6YLJygi/UhtILaCRuccP9dzLx4bwhV82cM6NlHBAR4QkilkbiC2hrx0Qx1nI9pG+COy
         cgHvBoy98++gEvIysqn6BpUBdYDSgl24CR25nVDvlZJqzjOHKuL89/+AO/AqqsmnB0ewzED15NlBnGPV
         EMomqD0tas3nGpYztViEXlhu1WJRbBhV1UJRuIGjrW891B2IVbZC+QAAAABJRU5ErkJggg==
-</value>
-  </data>
-  <data name="pictureBox2.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        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
-        AElFTkSuQmCC
 </value>
   </data>
   <data name="panel3.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

+ 1 - 1
终端/ct_terminal/ct_terminal/MainForm.Designer.cs

@@ -271,7 +271,7 @@
             this.AllowDrop = true;
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
             this.AutoScroll = true;
-            this.ClientSize = new System.Drawing.Size(1102, 1100);
+            this.ClientSize = new System.Drawing.Size(1100, 1100);
             this.Controls.Add(this.MainPanel);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
             this.Name = "MainForm";

+ 75 - 79
终端/ct_terminal/ct_terminal/MainForm.cs

@@ -17,6 +17,8 @@ using NumMachine;
 using tool;
 using MessageBoxEE;
 using System.Diagnostics;
+using RabbitMQ.Client;
+using RabbitMQ.Client.Events;
 
 namespace ct_terminal
 {
@@ -29,7 +31,7 @@ namespace ct_terminal
         //停车反馈接收器       
         consumer m_park_consumer = new consumer();
         //取车反馈接收器
-        consumer_undurable m_pick_consumer = new consumer_undurable();
+        consumer m_pick_consumer = new consumer();
         //发送器
         producer m_producer = new producer();
         //号牌机数据
@@ -51,12 +53,8 @@ namespace ct_terminal
         //停车指令反馈
         private TimedData<string> m_park_command_response = new TimedData<string>("");
         //取车指令反馈
-        private string m_pick_key = "";
+
         private TimedData<string> m_pick_command_response = new TimedData<string>("");
-        //停车指令发送时间
-        private DateTime m_park_command_time = DateTime.Now;
-        //取车指令发送时间
-        private DateTime m_pick_command_time = DateTime.Now;
         private Process m_process = null;
 
         private static readonly object Lock = new object();
@@ -75,27 +73,30 @@ namespace ct_terminal
             m_rabbitmq_ex_name = json_file_operation.Instance.read_json_string("RabbitMQ_ex_name");
 
 
-            //初始化打印机
-            PrintManual.Instance.PrintManualInit();
             //初始化播放器
             m_mediaPlayer.MediaPlayerInit(this, ref this.ImagePictureBox, ref this.vlcControl1, ref this.time_label, ref this.date_label_1, ref this.date_label_2);
+            //初始化发送指令
+            m_producer.producer_init(m_rabbitmq_ip, m_rabbitmq_port, m_rabbitmq_user, m_rabbitmq_password);
+            ////初始化消费指令
+            string t_pick_queue_key = "pick_response_" + m_ternimalID.ToString() + "_queue";
+            m_pick_consumer.consumer_init(m_rabbitmq_ip, m_rabbitmq_port, m_rabbitmq_user, m_rabbitmq_password, t_pick_queue_key, pick_response_thread);
+
+            //this.parkingBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "parkingBtn_gray.BackgroundImage.png");
+            //this.parkingBtn.Enabled = false;
+
             //获取号牌线程
             m_car_number = new NumMachine.NumMachineLinker();
             m_car_number_condition = true;
             m_car_number_thread = new Thread(get_car_number_thread);
 
-            //初始化发送指令
-            m_producer.producer_init(m_rabbitmq_ip, m_rabbitmq_port, m_rabbitmq_user, m_rabbitmq_password);
-            ////初始化消费指令
+            //初始化打印机
+            PrintManual.Instance.PrintManualInit();
+
+            //初始化消费指令
             string t_park_queue_key = "park_response_" + m_ternimalID.ToString() + "_queue";
             m_park_consumer.consumer_init(m_rabbitmq_ip, m_rabbitmq_port, m_rabbitmq_user, m_rabbitmq_password, t_park_queue_key, park_response_thread);
-            //初始化消费指令
-            string t_ex_name = "command_ex";
-            string t_pick_queue_key = "pick_response_port";
-            m_pick_consumer.consumer_undurable_init(m_rabbitmq_ip, m_rabbitmq_port, m_rabbitmq_user, m_rabbitmq_password, t_ex_name, t_pick_queue_key, pick_response_thread);
 
-            //this.parkingBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "parkingBtn_gray.BackgroundImage.png");
-            //this.parkingBtn.Enabled = false;
+
         }
         private void MainForm_Load(object sender, EventArgs e)
         {
@@ -110,15 +111,17 @@ namespace ct_terminal
 
             //启动播放器
             m_mediaPlayer.mediaplayer_run();
+
+            //启动接受反馈
+            m_pick_consumer.run();
+
             //启动号牌机
             m_car_number.Start();
             m_car_number_thread.Start();
             //启动打印机
             PrintManual.Instance.Start();
-            //启动接受反馈
-            m_park_consumer.run();
-            m_pick_consumer.run();
 
+            m_park_consumer.run();
             //启动子程序
             Process[] myprocess = Process.GetProcessesByName("UnNomalized_node");
             if (myprocess.Count() == 0)
@@ -149,16 +152,9 @@ namespace ct_terminal
         private void parkingBtn_Click(object sender, EventArgs e)
         {
             string car_license = "";
-            //Random r = new Random();
-            //car_license = startNumer(r);
-            //Console.WriteLine(car_license);
             if (m_timed_car_license.IsTimeout() == false && m_timed_car_license.Value != "")
             {
                 car_license = m_timed_car_license.Value;
-                //MessageBoxEe messageBoxEe = new MessageBoxEe();
-                //messageBoxEe.Show("号牌机拍到车牌号为:" + car_license);
-                //Thread.Sleep(10);
-                //m_timed_car_license.Value = "";
             }
             else
             {
@@ -174,53 +170,56 @@ namespace ct_terminal
             park_Table.TerminalId = m_ternimalID;
             park_Table.UnitId = m_unitID;
             park_Table.CarNumber = car_license;
+            m_park_command_response = "";
+
             if (m_producer.send(park_Table.ToText(), "command_ex", "user_command_port") == false)
             {
                 MessageBoxEe messageBoxEe = new MessageBoxEe();
                 messageBoxEe.Show("服务器连接失败!请重试,无效后联系管理人员!");
                 return;
             }
-            m_park_command_time = DateTime.Now;
             this.parkingBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "parkingBtn_gray.BackgroundImage.png");
             this.parkingBtn.Enabled = false;
-            m_park_command_response = "";
             while (!m_park_command_response.IsTimeout())
             {
-                if (m_park_command_response.Value != "")
+                if (m_park_command_response.Value == "")
+                    continue;
+                try
                 {
-                    try
+                    park_table response_Table = park_table.Parser.ParseText(m_park_command_response.Value);
+                    if (response_Table.Statu.ExecuteStatu == STATU.ENormal && response_Table.PrimaryKey != "")
                     {
-                        park_table response_Table = park_table.Parser.ParseText(m_park_command_response.Value);
-                        if (response_Table.Statu.ExecuteStatu == STATU.EError)
-                        {
-                            MessageBoxEe messageBoxEe = new MessageBoxEe();
-                            messageBoxEe.Show(response_Table.Statu.StatuDescription);
-                        }
-                        else if (response_Table.PrimaryKey != "")
+                        PrintManual.Instance.PrintTicket(response_Table.PrimaryKey, response_Table.CarNumber);
+                        MessageBoxEe messageBoxEe = new MessageBoxEe();
+                        messageBoxEe.Show(response_Table.CarNumber + " 停车成功,请取走您的小票!");
+                        Task.Factory.StartNew(() =>
                         {
-
-                            PrintManual.Instance.PrintTicket(response_Table.PrimaryKey, response_Table.CarNumber);
-                            MessageBoxEe messageBoxEe = new MessageBoxEe();
-                            messageBoxEe.Show(response_Table.CarNumber + " 停车成功,请取走您的小票!");
+                            Thread.Sleep(5000);
                             //停车成功需要清除车牌号
                             lock (Lock)
                             {
                                 m_timed_car_license = "";
                             }
-                        }
+                        });
                     }
-                    catch (Exception ex)
+                    else 
                     {
                         MessageBoxEe messageBoxEe = new MessageBoxEe();
-                        messageBoxEe.Show("反馈解析失败!\n" + ex.StackTrace);
+                        messageBoxEe.Show(response_Table.Statu.StatuDescription);
                     }
-                    m_park_command_response = "";
-                    this.parkingBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "parkingBtn.BackgroundImage.png");
-                    this.parkingBtn.Enabled = true;
-                    return;
                 }
+                catch (Exception ex)
+                {
+                    MessageBoxEe messageBoxEe = new MessageBoxEe();
+                    messageBoxEe.Show("反馈解析失败!\n" + ex.StackTrace);
+                }
+                m_park_command_response = "";
+                this.parkingBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "parkingBtn.BackgroundImage.png");
+                this.parkingBtn.Enabled = true;
+                return;
+  
             }
-            if (m_park_command_response.IsTimeout())
+            if (m_park_command_response.IsTimeout() && m_park_command_response.Value == "")
             {
                 MessageBoxEe messageBoxEe = new MessageBoxEe();
                 messageBoxEe.Show("反馈超时,请联系管理员!");
@@ -228,7 +227,9 @@ namespace ct_terminal
             m_park_command_response = "";
 
             this.parkingBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "parkingBtn.BackgroundImage.png");
+
             this.parkingBtn.Enabled = true;
+
         }
         private void pickupBtn_Click(object sender, EventArgs e)
         {
@@ -245,8 +246,11 @@ namespace ct_terminal
             pick_Table.Statu.ExecuteStatu = STATU.ENormal;
             pick_Table.Statu.StatuDescription = "正常";
             pick_Table.PrimaryKey = fetchingFrom.m_key;
-            m_pick_key = fetchingFrom.m_key;
-            if(m_producer.send(pick_Table.ToText(), "command_ex", "user_command_port") == false)
+            pick_Table.TerminalId = m_ternimalID;
+
+
+            m_pick_command_response = "";
+            if (m_producer.send(pick_Table.ToText(), "command_ex", "user_command_port") == false)
             {
                 MessageBoxEe messageBoxEe = new MessageBoxEe();
                 messageBoxEe.Show("服务器连接失败!请重试,无效后联系管理人员!");
@@ -254,66 +258,60 @@ namespace ct_terminal
             }
             this.pickupBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "fetchingBtn_gray.BackgroundImage.png");
             this.pickupBtn.Enabled = false;
-            m_pick_command_time = DateTime.Now;
-            m_pick_command_response = "";
             while (!m_pick_command_response.IsTimeout())
             {
                 if (m_pick_command_response.Value == "")
                     continue;
                 pick_table response_Table = new pick_table();
                 response_Table = pick_table.Parser.ParseText(m_pick_command_response.Value);
-                if (response_Table.Statu.ExecuteStatu == STATU.EError)
+                if (response_Table.Statu.ExecuteStatu == STATU.ENormal)
                 {
+
                     MessageBoxEe messageBoxEe = new MessageBoxEe();
-                    messageBoxEe.Show(response_Table.Statu.StatuDescription);
+                    messageBoxEe.Show(response_Table.CarNumber + " 取车成功,请观察LED屏幕提示取车!");
                     break;
+  
                 }
                 else
                 {
                     MessageBoxEe messageBoxEe = new MessageBoxEe();
-                    messageBoxEe.Show(response_Table.CarNumber + " 取车成功,请观察LED屏幕提示取车!");
+                    messageBoxEe.Show(response_Table.Statu.StatuDescription);
                     break;
                 }
             }
-            if (m_pick_command_response.IsTimeout())
+            if (m_pick_command_response.IsTimeout()&& m_pick_command_response.Value == "")
             {
                 MessageBoxEe messageBoxEe = new MessageBoxEe();
                 messageBoxEe.Show("反馈超时,请联系管理员!");
             }
-            m_pick_key = "";
             m_pick_command_response = "";
             this.pickupBtn.BackgroundImage = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "./Resource/" + "fetchingBtn.BackgroundImage.png");
             this.pickupBtn.Enabled = true;
         }
         //停车反馈线程
-        void park_response_thread(string msg)
+        void park_response_thread(string msg, ref IModel channel ,ref  BasicDeliverEventArgs args)
         {
+            Console.WriteLine("停车反馈:"+msg);
             if (msg != null && msg != "")
             {
                 m_park_command_response = msg;
                 m_park_command_response.Set_timeout_ms(3000);
             }
+            //返回消息确认
+            channel.BasicAck(args.DeliveryTag, true);
         }
         //取车反馈线程
-        void pick_response_thread(string msg)
+        void pick_response_thread(string msg,ref  IModel channel, ref BasicDeliverEventArgs args)
         {
+            Console.WriteLine("取车反馈:" + msg);
             if (msg != null && msg != "")
             {
-                pick_table response_Table = new pick_table();
-                try
-                {
-                    response_Table = pick_table.Parser.ParseText(msg);
-                    if (response_Table.PrimaryKey != m_pick_key)
-                        return;
-                }
-                catch (Exception e) { }
-                if (response_Table.PrimaryKey == m_pick_key)
-                {
-                    m_pick_command_response = msg;
-                    m_pick_command_response.Set_timeout_ms(3000);
-                }
-
+                m_pick_command_response = msg;
+                m_pick_command_response.Set_timeout_ms(3000);
             }
+            //返回消息确认
+            channel.BasicAck(args.DeliveryTag, true);
+
         }
         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
         {
@@ -346,13 +344,13 @@ namespace ct_terminal
             while (m_car_number_condition == true)
             {
                 string number = m_car_number.GetLicensePlate(0);
-                Console.WriteLine(number=number);
+             //   Console.WriteLine("号牌机接收到号牌:"+number);
                 if (number != null && number != "")
                 {
                     lock (Lock)
                     {
                         m_timed_car_license = number;
-                        m_timed_car_license.Set_timeout_ms(int.MaxValue);
+                        m_timed_car_license.Set_timeout_ms(900000);
                     }
 
                  //   MessageBoxEe.Show(m_timed_car_license.Value);
@@ -365,8 +363,6 @@ namespace ct_terminal
                     m_producer.send(terminal_Node_Statu.ToText(), "statu_ex", "terminal_node_" + m_ternimalID.ToString() + "_statu_port");
                 }
 
-
-
                 Thread.Sleep(500);
             }
         }

File diff suppressed because it is too large
+ 8701 - 60
终端/ct_terminal/ct_terminal/MainForm.resx


+ 15 - 14
终端/ct_terminal/ct_terminal/MessageBoxEe.Designer.cs

@@ -35,12 +35,13 @@ namespace MessageBoxEE
             this.msgBox = new System.Windows.Forms.Label();
             this.panel1 = new System.Windows.Forms.Panel();
             this.returnBtn = new System.Windows.Forms.Button();
-            this.time_label = new System.Windows.Forms.Label();
             this.panelProgressBarContainer = new System.Windows.Forms.Panel();
             this.OKbtn = new System.Windows.Forms.Button();
             this.panel2 = new System.Windows.Forms.Panel();
+            this.zhixiang_pictureBox = new System.Windows.Forms.PictureBox();
             this.panel1.SuspendLayout();
             this.panel2.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.zhixiang_pictureBox)).BeginInit();
             this.SuspendLayout();
             // 
             // msgBox
@@ -58,8 +59,8 @@ namespace MessageBoxEE
             // panel1
             // 
             this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(13)))), ((int)(((byte)(114)))), ((int)(((byte)(223)))));
+            this.panel1.Controls.Add(this.zhixiang_pictureBox);
             this.panel1.Controls.Add(this.returnBtn);
-            this.panel1.Controls.Add(this.time_label);
             this.panel1.Controls.Add(this.panelProgressBarContainer);
             this.panel1.Location = new System.Drawing.Point(0, 0);
             this.panel1.Name = "panel1";
@@ -85,17 +86,6 @@ namespace MessageBoxEE
             this.returnBtn.UseVisualStyleBackColor = false;
             this.returnBtn.Click += new System.EventHandler(this.returnBtn_Click);
             // 
-            // time_label
-            // 
-            this.time_label.Font = new System.Drawing.Font("新宋体", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
-            this.time_label.ForeColor = System.Drawing.Color.White;
-            this.time_label.Location = new System.Drawing.Point(2, 9);
-            this.time_label.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
-            this.time_label.Name = "time_label";
-            this.time_label.Size = new System.Drawing.Size(81, 33);
-            this.time_label.TabIndex = 4;
-            this.time_label.Text = "提示";
-            // 
             // panelProgressBarContainer
             // 
             this.panelProgressBarContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(152)))), ((int)(((byte)(114)))), ((int)(((byte)(223)))));
@@ -128,6 +118,16 @@ namespace MessageBoxEE
             this.panel2.Size = new System.Drawing.Size(520, 157);
             this.panel2.TabIndex = 3;
             // 
+            // zhixiang_pictureBox
+            // 
+            this.zhixiang_pictureBox.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("zhixiang_pictureBox.BackgroundImage")));
+            this.zhixiang_pictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+            this.zhixiang_pictureBox.Location = new System.Drawing.Point(0, -1);
+            this.zhixiang_pictureBox.Name = "zhixiang_pictureBox";
+            this.zhixiang_pictureBox.Size = new System.Drawing.Size(209, 52);
+            this.zhixiang_pictureBox.TabIndex = 7;
+            this.zhixiang_pictureBox.TabStop = false;
+            // 
             // MessageBoxEe
             // 
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -147,6 +147,7 @@ namespace MessageBoxEE
             this.Load += new System.EventHandler(this.MessageBoxEe_Load);
             this.panel1.ResumeLayout(false);
             this.panel2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.zhixiang_pictureBox)).EndInit();
             this.ResumeLayout(false);
 
         }
@@ -156,8 +157,8 @@ namespace MessageBoxEE
         public System.Windows.Forms.Label msgBox;
         private System.Windows.Forms.Panel panel1;
         private Panel panelProgressBarContainer;
-        private Label time_label;
         private Panel panel2;
         private Button returnBtn;
+        private PictureBox zhixiang_pictureBox;
     }
 }

File diff suppressed because it is too large
+ 12484 - 0
终端/ct_terminal/ct_terminal/MessageBoxEe.resx


+ 2 - 0
终端/ct_terminal/ct_terminal/ct_terminal.csproj

@@ -205,6 +205,8 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="Resource\确认按钮.png" />
+    <Content Include="Resource\log1.jpg" />
+    <Content Include="Resource\log2.jpg" />
     <Content Include="SDK\avcodec-57.dll">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

+ 7 - 10
终端/ct_terminal/ct_terminal/tool/communicator/communicator.cs

@@ -4,7 +4,7 @@ using System;
 using System.Text;
 namespace tool
 {
-    delegate void DelegateCallbacks(string msg);
+    delegate void DelegateCallbacks(string msg, ref IModel channel, ref BasicDeliverEventArgs args);
     class consumer//消费者
     {
         public consumer()
@@ -37,9 +37,8 @@ namespace tool
                 //获取消息
                 var message = args.Body;//获取队列中消息主体
                                                      //处理消息
-                m_delegateCallbacks(Encoding.UTF8.GetString(message.ToArray()));
-                //返回消息确认
-                m_channel.BasicAck(args.DeliveryTag, true);
+                m_delegateCallbacks(Encoding.UTF8.GetString(message.ToArray()),ref m_channel,ref args);
+
             };
             Console.WriteLine("start consume queue:" + m_queue_key);
             //开启监听
@@ -82,9 +81,8 @@ namespace tool
 
             m_connection = m_connectionFactory.CreateConnection();
             m_channel = m_connection.CreateModel();//创建连接会话对象
-            m_channel.BasicQos(0, 1, false);//声明为手动确认,每次只消费1条消息。
-
-            string queue = m_channel.QueueDeclare("", false, false, true, null);
+            
+            string queue=m_channel.QueueDeclare("", false, false, false, null);
             m_channel.QueueBind(queue, m_ex_name, m_routingkey, null);//设置routingkey(可不同的消息发往不同的队列)  info:为正常的消息
 
             var consumer = new EventingBasicConsumer(m_channel);//定义消费者
@@ -93,9 +91,8 @@ namespace tool
                 //获取消息
                 var message = args.Body;//获取队列中消息主体
                                         //处理消息
-                m_delegateCallbacks(Encoding.UTF8.GetString(message.ToArray()));
-                //返回消息确认
-                m_channel.BasicAck(args.DeliveryTag, true);
+                m_delegateCallbacks(Encoding.UTF8.GetString(message.ToArray()), ref m_channel, ref args);
+
             };
             Console.WriteLine("create queue to consume ex:"+m_ex_name +"port:" +m_port);         //开启监听
             m_channel.BasicConsume(queue: queue, autoAck: false, consumer: consumer);

+ 31 - 32
终端/ct_terminal/ct_terminal/tool/num_machine/NumMachine.cs

@@ -6,7 +6,6 @@ using System.Net;
 using System.Runtime.InteropServices;
 using System.Threading;
 using System.Threading.Tasks;
-using System.Windows.Forms;
 using VzClientSDKDemo;
 
 namespace NumMachine
@@ -539,37 +538,37 @@ namespace NumMachine
         /// <param name="message">已完成车辆的号牌相关信息存于message的aNode中,用于标记需清空的号牌</param>
         public void SetMessage(NumberMachineMessage message)
         {
-            NumberMachineNode n = ((NumberMachineMessage)message).aNode;
-            lock (LicBuffer)
-            {
-                //输入号牌格式无误
-                if (n != null && n.ip != null && n.ip == "")
-                {
-                    //与类成员变量中aNode号牌相同,将其ip复位表示已使用,重新入队等待清除
-                    if (nmMsg != null && nmMsg.aNode != null && nmMsg.aNode.LicenseNum == n.LicenseNum)
-                    {
-                        nmMsg.aNode.ip = "";
-                        LicBuffer.Enqueue((NumberMachineNode)nmMsg.aNode.Clone());
-                        nmMsg.aNode = null;
-                    }
-                    //搜索号牌队列,将相应号牌置空,准备清除
-                    else
-                    {
-                        for (int i = 0; i < LicBuffer.Count; i++)
-                        {
-                            NumberMachineNode temp = LicBuffer.Dequeue();
-                            //已匹配上,ip置空
-                            if (temp.LicenseNum == n.LicenseNum)
-                            {
-                                temp.ip = "";
-                                LicBuffer.Enqueue(temp);
-                                break;
-                            }
-                            LicBuffer.Enqueue(temp);
-                        }
-                    }
-                }
-            }
+            //NumberMachineNode n = ((NumberMachineMessage)message).aNode;
+            //lock (LicBuffer)
+            //{
+            //    //输入号牌格式无误
+            //    if (n != null && n.ip != null && n.ip == "")
+            //    {
+            //        //与类成员变量中aNode号牌相同,将其ip复位表示已使用,重新入队等待清除
+            //        if (nmMsg != null && nmMsg.aNode != null && nmMsg.aNode.LicenseNum == n.LicenseNum)
+            //        {
+            //            nmMsg.aNode.ip = "";
+            //            LicBuffer.Enqueue((NumberMachineNode)nmMsg.aNode.Clone());
+            //            nmMsg.aNode = null;
+            //        }
+            //        //搜索号牌队列,将相应号牌置空,准备清除
+            //        else
+            //        {
+            //            for (int i = 0; i < LicBuffer.Count; i++)
+            //            {
+            //                NumberMachineNode temp = LicBuffer.Dequeue();
+            //                //已匹配上,ip置空
+            //                if (temp.LicenseNum == n.LicenseNum)
+            //                {
+            //                    temp.ip = "";
+            //                    LicBuffer.Enqueue(temp);
+            //                    break;
+            //                }
+            //                LicBuffer.Enqueue(temp);
+            //            }
+            //        }
+            //    }
+            //}
         }
 
         /// <summary>

+ 1 - 1
终端/ct_terminal/ct_terminal/tool/time_data/TimedData.cs

@@ -11,7 +11,7 @@ namespace tool
     {
         private Data_type m_data;
         private DateTime m_time_point;
-        private double m_time_out_ms = 3000;
+        private double m_time_out_ms = 4000;
         private object m_lock = new object();
         public TimedData(Data_type data)
         {