Compare commits

..

7 Commits

Author SHA1 Message Date
7205a21a8d 实现精细化人脸识别功能,人脸交互详细, UI部分还需要优化 2025-09-15 16:03:17 +08:00
babab70845 更改部分bug加入人脸识别锁机制 2025-09-15 11:37:37 +08:00
f12a289c57 用户管理(未完成) 2025-09-13 17:03:22 +08:00
621c107be1 1.人脸验证执行操作成功
2.UI底图进行修改
2025-09-13 11:09:22 +08:00
a3bb7f0701 增加ini 人脸超时限制 2025-09-12 11:32:33 +08:00
0557ba7f1c 文件分离函数类,增加提示信息 2025-09-05 15:40:00 +08:00
79f733126b 1.增加人脸识别模块
2.人脸识别整定优化,分离串口配置
3.改为使用原有uart_group_config.py文件实现配置连接,保持原有断线重连
2025-09-04 16:22:33 +08:00
105 changed files with 19809 additions and 329 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.pyc

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,339 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P01DeviceMenu</class>
<widget class="QMainWindow" name="P01DeviceMenu">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=1</string>
</property>
<property name="whatsThis">
<string/>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="P01BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/DeviceMenu.png</pixmap>
</property>
</widget>
<widget class="QGroupBox" name="Btns">
<property name="geometry">
<rect>
<x>234</x>
<y>179</y>
<width>771</width>
<height>701</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn07">
<property name="geometry">
<rect>
<x>400</x>
<y>229</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=7, Action=SetPage0,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>返回主页</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn01">
<property name="geometry">
<rect>
<x>18</x>
<y>114</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=1,Action=SetPage2+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>运行数据</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn02">
<property name="geometry">
<rect>
<x>18</x>
<y>229</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=2, Action=SetPage3+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>开关操作</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn03">
<property name="geometry">
<rect>
<x>18</x>
<y>345</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=3, Action=SetPage4+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string> 保护参数设置</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn04">
<property name="geometry">
<rect>
<x>20</x>
<y>460</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=4, Action=SetPage7+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string> 系统参数设置</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="geometry">
<rect>
<x>90</x>
<y>10</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>设备</string>
</property>
</widget>
<widget class="QPushButton" name="Btn05">
<property name="geometry">
<rect>
<x>18</x>
<y>575</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=5, Action=SetPage6+SetBinding+CmdAlarmNext,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>故障查询</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn06">
<property name="geometry">
<rect>
<x>400</x>
<y>114</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=6, Action=SetPage8+SetBinding ,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>现场试验</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,468 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P03SwitchAction</class>
<widget class="QMainWindow" name="P03SwitchAction">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=3</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="P03BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/SwitchAction.png</pixmap>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>295</x>
<y>190</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>374</x>
<y>189</y>
<width>1141</width>
<height>811</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="SwitchOn">
<property name="geometry">
<rect>
<x>60</x>
<y>484</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>SwitchOn,Index=2,Action=CmdExecute, SelectImag=SR_001.png, password,groupstart=6</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="SwitchOff">
<property name="geometry">
<rect>
<x>60</x>
<y>582</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>SwitchOff,Index=3,Action=CmdExecute, password,SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="CarBackward">
<property name="geometry">
<rect>
<x>487</x>
<y>583</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>CarRetreat,Index=6,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="CarForward">
<property name="geometry">
<rect>
<x>487</x>
<y>483</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>CarForward,Index=5,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLabel" name="m01_SwitchStatus_0">
<property name="geometry">
<rect>
<x>77</x>
<y>150</y>
<width>310</width>
<height>170</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchStatus, ImageValue=IM03_SwitchStatus_%d.png, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="SwitchRecover">
<property name="geometry">
<rect>
<x>60</x>
<y>681</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>SwitchOff,Index=4,Action=CmdExecute, password,SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="m03_AlarmMessage_0">
<property name="geometry">
<rect>
<x>150</x>
<y>114</y>
<width>281</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string>AlarmMessage,Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="TestCameraView">
<property name="geometry">
<rect>
<x>650</x>
<y>150</y>
<width>441</width>
<height>241</height>
</rect>
</property>
<property name="statusTip">
<string>canvas1=camera0, Timeout=3000</string>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QPushButton" name="quit">
<property name="geometry">
<rect>
<x>856</x>
<y>485</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>Index=7, Action=SetPage1,SelectImag=SR_001.png, groupend=6</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="m03_CarMessage_14">
<property name="geometry">
<rect>
<x>690</x>
<y>114</y>
<width>291</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string>CarPositionMsg,Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 255, 255,0);
color: rgb(255, 170, 0);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="SwitchType">
<property name="geometry">
<rect>
<x>144</x>
<y>320</y>
<width>173</width>
<height>69</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchType, ImageValue=SwitchType_%d.png, Timeout=10000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(30, 14, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>8</x>
<y>151</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage1,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>5</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,656 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P05CameraView</class>
<widget class="QMainWindow" name="P05CameraView">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=5</string>
</property>
<property name="whatsThis">
<string/>
</property>
<widget class="QWidget" name="centralwidget">
<property name="statusTip">
<string/>
</property>
<widget class="QLabel" name="P05BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/CameraView.png</pixmap>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn_Home">
<property name="geometry">
<rect>
<x>8</x>
<y>2</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=9, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QLabel" name="Canvas00">
<property name="geometry">
<rect>
<x>380</x>
<y>124</y>
<width>1165</width>
<height>720</height>
</rect>
</property>
<property name="statusTip">
<string>canvas0=camera0, Timeout=15000</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="CameraChioceLabel">
<property name="geometry">
<rect>
<x>200</x>
<y>120</y>
<width>111</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>-1</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252); font-size: 35px;</string>
</property>
<property name="text">
<string>回路1</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>90</x>
<y>890</y>
<width>1821</width>
<height>171</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn02">
<property name="geometry">
<rect>
<x>236</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=2, Action=canvas0_camera1, SelectImag=IM05_A2.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn01">
<property name="geometry">
<rect>
<x>10</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=canvas0_camera0, SelectImag=IM05_A1.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn03">
<property name="geometry">
<rect>
<x>462</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=3, Action=canvas0_camera2, SelectImag=IM05_A3.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn04">
<property name="geometry">
<rect>
<x>688</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=4, Action=canvas0_camera3, SelectImag=IM05_A4.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn05">
<property name="geometry">
<rect>
<x>914</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=5, Action=canvas0_camera4, SelectImag=IM05_A5.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn06">
<property name="geometry">
<rect>
<x>1140</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=6, Action=canvas0_camera5, SelectImag=IM05_A6.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn07">
<property name="geometry">
<rect>
<x>1366</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=7, Action=canvas0_camera6, SelectImag=IM05_A7.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn08">
<property name="geometry">
<rect>
<x>1592</x>
<y>5</y>
<width>220</width>
<height>159</height>
</rect>
</property>
<property name="statusTip">
<string>Index=8, Action=canvas0_camera7, SelectImag=IM05_A8.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QLabel" name="Canvas01">
<property name="geometry">
<rect>
<x>12</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas1=camera0, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="Canvas02">
<property name="geometry">
<rect>
<x>238</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas2=camera1, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="Canvas03">
<property name="geometry">
<rect>
<x>464</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas3=camera2, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="Canvas04">
<property name="geometry">
<rect>
<x>690</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas4=camera3, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="Canvas05">
<property name="geometry">
<rect>
<x>916</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas5=camera4, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="Canvas06">
<property name="geometry">
<rect>
<x>1142</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas6=camera5, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="Canvas07">
<property name="geometry">
<rect>
<x>1368</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas7=camera6, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="Canvas08">
<property name="geometry">
<rect>
<x>1594</x>
<y>23</y>
<width>216</width>
<height>139</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>135</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="statusTip">
<string>canvas8=camera7, Timeout=15000</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>background/IM05_002.png</pixmap>
</property>
</widget>
<zorder>Canvas08</zorder>
<zorder>Canvas07</zorder>
<zorder>Canvas06</zorder>
<zorder>Canvas05</zorder>
<zorder>Canvas04</zorder>
<zorder>Canvas03</zorder>
<zorder>Canvas02</zorder>
<zorder>Canvas01</zorder>
<zorder>Btn02</zorder>
<zorder>Btn01</zorder>
<zorder>Btn03</zorder>
<zorder>Btn04</zorder>
<zorder>Btn05</zorder>
<zorder>Btn06</zorder>
<zorder>Btn07</zorder>
<zorder>Btn08</zorder>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,366 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P05CameraView</class>
<widget class="QMainWindow" name="P05CameraView">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=5_1</string>
</property>
<property name="whatsThis">
<string/>
</property>
<widget class="QWidget" name="centralwidget">
<property name="statusTip">
<string/>
</property>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn_Home">
<property name="geometry">
<rect>
<x>8</x>
<y>2</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="group_log">
<property name="geometry">
<rect>
<x>340</x>
<y>670</y>
<width>701</width>
<height>381</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<property name="flat">
<bool>false</bool>
</property>
<widget class="QTextEdit" name="txt_log">
<property name="geometry">
<rect>
<x>-20</x>
<y>20</y>
<width>701</width>
<height>341</height>
</rect>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="group_video">
<property name="geometry">
<rect>
<x>450</x>
<y>110</y>
<width>481</width>
<height>551</height>
</rect>
</property>
<property name="statusTip">
<string/>
</property>
<property name="title">
<string>USB 视频流</string>
</property>
<widget class="QLabel" name="video_label">
<property name="geometry">
<rect>
<x>60</x>
<y>50</y>
<width>360</width>
<height>480</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>360</width>
<height>480</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="text">
<string>未打开</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="group_cmd">
<property name="geometry">
<rect>
<x>340</x>
<y>110</y>
<width>109</width>
<height>551</height>
</rect>
</property>
<property name="statusTip">
<string>mian=51</string>
</property>
<property name="title">
<string>命令</string>
</property>
<widget class="QPushButton" name="btn_reset">
<property name="geometry">
<rect>
<x>12</x>
<y>30</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=Reset,SelectImag=IMxx_00F.png,groupstart=8</string>
</property>
<property name="text">
<string>复位</string>
</property>
</widget>
<widget class="QPushButton" name="btn_video_mode">
<property name="geometry">
<rect>
<x>12</x>
<y>59</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=VideoMode,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string>视频模式</string>
</property>
</widget>
<widget class="QPushButton" name="btn_enroll">
<property name="geometry">
<rect>
<x>10</x>
<y>210</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=5, Action=EnrollItgSingle,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string>ITG注册</string>
</property>
</widget>
<widget class="QLineEdit" name="FaceRecogTimeoutEdit">
<property name="geometry">
<rect>
<x>-10</x>
<y>180</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>System=FaceRecogTimeout, Action=ModifySystem, Index=4,SelectImag=P4_ParaSelect.png, password</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="btn_video">
<property name="geometry">
<rect>
<x>10</x>
<y>90</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=2, Action=ConnectCamera,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string>打开视频</string>
</property>
</widget>
<widget class="QPushButton" name="btn_face_mode">
<property name="geometry">
<rect>
<x>10</x>
<y>120</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=3, Action=FaceBox,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string>人脸框</string>
</property>
</widget>
<widget class="QPushButton" name="btn_delete_user_id">
<property name="geometry">
<rect>
<x>10</x>
<y>240</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=6, Action=DeleteUser,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string>删除用户</string>
</property>
</widget>
<widget class="QPushButton" name="btn_delete_user_id_2">
<property name="geometry">
<rect>
<x>10</x>
<y>270</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="statusTip">
<string>Index=7, Action=UserCount,SelectImag=IMxx_00F.png,groupend=8</string>
</property>
<property name="text">
<string>查看用户</string>
</property>
</widget>
</widget>
<widget class="QLabel" name="P05_01BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/FaceCameraView.png</pixmap>
</property>
</widget>
<widget class="QTableWidget" name="table">
<property name="geometry">
<rect>
<x>1080</x>
<y>520</y>
<width>821</width>
<height>371</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<column>
<property name="text">
<string>用户ID</string>
</property>
</column>
<column>
<property name="text">
<string>用户名</string>
</property>
</column>
<column>
<property name="text">
<string>注册时间</string>
</property>
</column>
</widget>
<zorder>P05_01BG</zorder>
<zorder>groupBox_sys</zorder>
<zorder>group_log</zorder>
<zorder>group_video</zorder>
<zorder>group_cmd</zorder>
<zorder>table</zorder>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,708 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P06FaultQuery</class>
<widget class="QMainWindow" name="P06FaultQuery">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1076</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=6</string>
</property>
<property name="whatsThis">
<string/>
</property>
<widget class="QWidget" name="centralwidget">
<property name="statusTip">
<string/>
</property>
<widget class="QLabel" name="P06BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/FaultQuery.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>640</x>
<y>310</y>
<width>641</width>
<height>581</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=2</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn_Pre">
<property name="geometry">
<rect>
<x>48</x>
<y>412</y>
<width>85</width>
<height>169</height>
</rect>
</property>
<property name="statusTip">
<string>Index=2,Action=CmdAlarmPrev, SelectImag=IM03_001.png, groupstart=3</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn_Next">
<property name="geometry">
<rect>
<x>267</x>
<y>412</y>
<width>85</width>
<height>169</height>
</rect>
</property>
<property name="statusTip">
<string>Index=3,Action=CmdAlarmNext, SelectImag=IM03_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="alarmTitle">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>120</x>
<y>75</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(160, 206, 226);</string>
</property>
<property name="text">
<string>..</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="alarmTime">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>120</x>
<y>35</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(160, 206, 226);</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="alarmMsg">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>120</x>
<y>118</y>
<width>491</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(255, 126, 21);</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="sys_menu_2">
<property name="geometry">
<rect>
<x>485</x>
<y>412</y>
<width>85</width>
<height>169</height>
</rect>
</property>
<property name="statusTip">
<string>Index=4, Action=SetPage1, SelectImag=IM03_001.png, groupend=3</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>650</x>
<y>485</y>
<width>671</width>
<height>291</height>
</rect>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(255, 255, 255,0);</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_15">
<property name="geometry">
<rect>
<x>260</x>
<y>27</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmUb, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_13">
<property name="geometry">
<rect>
<x>40</x>
<y>27</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmUa, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_14">
<property name="geometry">
<rect>
<x>40</x>
<y>82</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIa, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_16">
<property name="geometry">
<rect>
<x>40</x>
<y>137</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIc, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_18">
<property name="geometry">
<rect>
<x>260</x>
<y>82</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIb, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_19">
<property name="geometry">
<rect>
<x>260</x>
<y>137</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIo, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_21">
<property name="geometry">
<rect>
<x>480</x>
<y>27</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmUc, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_22">
<property name="geometry">
<rect>
<x>480</x>
<y>81</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIc, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_23">
<property name="geometry">
<rect>
<x>480</x>
<y>137</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmRo, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>8</x>
<y>152</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage1,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>1</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>330</x>
<y>160</y>
<width>361</width>
<height>91</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(255, 255, 255,0);</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="BindNum_Title">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,932 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P07SystemSet</class>
<widget class="QMainWindow" name="P07SystemSet">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=7</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>91</x>
<y>187</y>
<width>450</width>
<height>874</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=14</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_28">
<property name="geometry">
<rect>
<x>270</x>
<y>84</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>SwitchType, Action=Modify, Index=1, Alias=alias_switch_type, Caption=开关类型,Timeout=15000,SelectImag=P4_ParaSelect.png,groupstart=14</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_29">
<property name="geometry">
<rect>
<x>270</x>
<y>144</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Gas, Action=Modify, Index=2, Alias=alias_input, Caption=瓦斯触点,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_30">
<property name="geometry">
<rect>
<x>270</x>
<y>198</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>GasDelay, Action=Modify, Index=3, Format=%06.2f, Caption=瓦斯延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_31">
<property name="geometry">
<rect>
<x>270</x>
<y>253</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>GasConcentration, Action=Modify, Index=4, Format=%05.2f, Caption=瓦斯浓度, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_32">
<property name="geometry">
<rect>
<x>270</x>
<y>308</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Fan, Action=Modify, Index=5, Alias=alias_input, Caption=风电触点,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_36">
<property name="geometry">
<rect>
<x>270</x>
<y>364</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>FanDelay, Action=Modify, Index=6, Format=%06.2f, Caption=风电延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_37">
<property name="geometry">
<rect>
<x>270</x>
<y>418</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>FarAndNearMode, Action=Modify, Index=7, Alias=alias_remote, Caption=远近控模式,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_38">
<property name="geometry">
<rect>
<x>270</x>
<y>475</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>MaintenanceMode, Action=Modify, Index=8, Alias=alias_bool, Caption=维修模式,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_39">
<property name="geometry">
<rect>
<x>270</x>
<y>530</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>CarAlarmDelay, Action=Modify, Index=9, Format=%05.1f, Caption=小车报警延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_40">
<property name="geometry">
<rect>
<x>270</x>
<y>583</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>OffVoltageDelay, Action=Modify, Index=10, Format=%06.1f, Caption=断电延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_41">
<property name="geometry">
<rect>
<x>270</x>
<y>640</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>TubeDelay, Action=Modify, Index=11, Format=%06.2f, Caption=真空管粘连延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="BlankTimelineEdit">
<property name="geometry">
<rect>
<x>270</x>
<y>750</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>System=ScreenBlankingTime, Action=ModifySystem, Index=13,SelectImag=P4_ParaSelect.png, password</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_44">
<property name="geometry">
<rect>
<x>270</x>
<y>805</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>System=SystemPassWord, Action=ModifySystem, Index=14,SelectImag=P4_ParaSelect.png, password,groupend=14</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>****</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_42">
<property name="geometry">
<rect>
<x>270</x>
<y>695</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>LoadSelect, Action=Modify, Index=12, Alias=alias_select, Caption=负载选择,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>545</x>
<y>186</y>
<width>450</width>
<height>874</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=15</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_26">
<property name="geometry">
<rect>
<x>270</x>
<y>85</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>485Address, Action=Modify, Index=1, Format=%03.0f, Caption=485地址, Timeout=15000,SelectImag=P4_ParaSelect.png, groupstart=5</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_27">
<property name="geometry">
<rect>
<x>270</x>
<y>145</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>485Baud, Action=Modify, Index=2, Alias=alias_baud, Caption=485波特率,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_33">
<property name="geometry">
<rect>
<x>270</x>
<y>200</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>485Parity, Action=Modify, Index=3, Alias=alias_parity, Caption=485校验,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_34">
<property name="geometry">
<rect>
<x>270</x>
<y>255</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>CANAddress, Action=Modify, Index=4, Format=%03.0f, Caption=CAN地址, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_35">
<property name="geometry">
<rect>
<x>270</x>
<y>310</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>CANBaud, Action=Modify, Index=5, Alias=alias_can_baud, Caption=CAN波特率,Timeout=15000,SelectImag=P4_ParaSelect.png, groupend=5</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>0</x>
<y>80</y>
<width>1920</width>
<height>970</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_P00_3">
<property name="geometry">
<rect>
<x>547</x>
<y>90</y>
<width>450</width>
<height>877</height>
</rect>
</property>
<property name="statusTip">
<string>groupend=2,Index=3, Action=SetMain15,SelectImag=IM04_00.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="geometry">
<rect>
<x>180</x>
<y>36</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="sys_P00_2">
<property name="geometry">
<rect>
<x>92</x>
<y>90</y>
<width>450</width>
<height>877</height>
</rect>
</property>
<property name="statusTip">
<string>groupstart=2,Index=2, Action=SetMain14,SelectImag=IM04_00.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>9</x>
<y>25</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>9</x>
<y>173</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage1,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<zorder>sys_P00_2</zorder>
<zorder>sys_P00_3</zorder>
<zorder>BindNum_Title</zorder>
<zorder>sys_home</zorder>
<zorder>sys_menu</zorder>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="P07BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/SystemSet.png</pixmap>
</property>
</widget>
<zorder>P07BG</zorder>
<zorder>groupBox_2</zorder>
<zorder>groupBox_sys_2</zorder>
<zorder>indicator_Label</zorder>
<zorder>groupBox</zorder>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,391 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P08FieldTestAction</class>
<widget class="QMainWindow" name="P08FieldTestAction">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=8</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="P08BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../image/FieldTestAction.png</pixmap>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>300</x>
<y>170</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>600</x>
<y>260</y>
<width>681</width>
<height>511</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Test01">
<property name="geometry">
<rect>
<x>45</x>
<y>215</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>TestShort,Index=2,Action=CmdExecute, SelectImag=SR_001.png, groupstart=4</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Test02">
<property name="geometry">
<rect>
<x>46</x>
<y>330</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>TestIsolation,Index=3,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Reset">
<property name="geometry">
<rect>
<x>393</x>
<y>220</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>TestRecover,Index=4,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="quit">
<property name="geometry">
<rect>
<x>392</x>
<y>330</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>Index=5, Action=SetPage1,SelectImag=SR_001.png, groupend=4</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QLabel" name="SwitchType">
<property name="geometry">
<rect>
<x>422</x>
<y>95</y>
<width>173</width>
<height>69</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchType, ImageValue=SwitchType_%d.png, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(30, 14, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLineEdit" name="AlarmMessage_0">
<property name="geometry">
<rect>
<x>365</x>
<y>60</y>
<width>291</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="mouseTracking">
<bool>true</bool>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>AlarmMessage,Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="inputMask">
<string/>
</property>
<property name="text">
<string/>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>8</x>
<y>154</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage1,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>5</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QLabel" name="SwitchStatus">
<property name="geometry">
<rect>
<x>678</x>
<y>319</y>
<width>245</width>
<height>111</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchStatus, ImageValue=SwitchStatus_%d.png, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,339 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P11DeviceMenu</class>
<widget class="QMainWindow" name="P11DeviceMenu">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=11</string>
</property>
<property name="whatsThis">
<string/>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="P01BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../Light_image/Light_DeviceMenu.png</pixmap>
</property>
</widget>
<widget class="QGroupBox" name="Btns">
<property name="geometry">
<rect>
<x>234</x>
<y>179</y>
<width>771</width>
<height>701</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn07">
<property name="geometry">
<rect>
<x>400</x>
<y>229</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=7, Action=SetPage0,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>返回主页</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn01">
<property name="geometry">
<rect>
<x>18</x>
<y>114</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=1,Action=SetPage12+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>运行数据</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn02">
<property name="geometry">
<rect>
<x>18</x>
<y>229</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=2, Action=SetPage13+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>开关操作</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn03">
<property name="geometry">
<rect>
<x>18</x>
<y>345</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=3, Action=SetPage14+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string> 保护参数设置</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn04">
<property name="geometry">
<rect>
<x>20</x>
<y>460</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=4, Action=SetPage17+SetBinding,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string> 系统参数设置</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="geometry">
<rect>
<x>90</x>
<y>10</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>设备</string>
</property>
</widget>
<widget class="QPushButton" name="Btn05">
<property name="geometry">
<rect>
<x>18</x>
<y>575</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=5, Action=SetPage16+SetBinding+CmdAlarmNext,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>故障查询</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn06">
<property name="geometry">
<rect>
<x>400</x>
<y>114</y>
<width>364</width>
<height>85</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>29</pointsize>
</font>
</property>
<property name="statusTip">
<string>Index=6, Action=SetPage18+SetBinding ,SelectImag=IM01_01.png</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(249, 136, 50);</string>
</property>
<property name="text">
<string>现场试验</string>
</property>
<property name="iconSize">
<size>
<width>364</width>
<height>85</height>
</size>
</property>
</widget>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,573 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P12DataView</class>
<widget class="QMainWindow" name="P12DataView">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=12</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="TestCameraView">
<property name="geometry">
<rect>
<x>810</x>
<y>120</y>
<width>1071</width>
<height>841</height>
</rect>
</property>
<property name="statusTip">
<string>canvas1=camera0, Timeout=3000</string>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="CameralUrlLabel">
<property name="geometry">
<rect>
<x>340</x>
<y>10</y>
<width>391</width>
<height>16</height>
</rect>
</property>
<property name="statusTip">
<string>cameral_url=canvas1</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="CameralUrlLabel_2">
<property name="geometry">
<rect>
<x>750</x>
<y>10</y>
<width>411</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="P02BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="styleSheet">
<string>background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../Light_image/Light_DataView.png</pixmap>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>170</x>
<y>130</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>100</x>
<y>240</y>
<width>671</width>
<height>781</height>
</rect>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(255, 255, 255,0);</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_15">
<property name="geometry">
<rect>
<x>304</x>
<y>500</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Uab, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_13">
<property name="geometry">
<rect>
<x>70</x>
<y>500</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Ia, Timeout=15000,</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_14">
<property name="geometry">
<rect>
<x>70</x>
<y>575</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Ib, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_16">
<property name="geometry">
<rect>
<x>70</x>
<y>650</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Ic, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_18">
<property name="geometry">
<rect>
<x>305</x>
<y>574</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Ubc, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_19">
<property name="geometry">
<rect>
<x>305</x>
<y>650</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Uca, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_25">
<property name="geometry">
<rect>
<x>520</x>
<y>570</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Ro, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_27">
<property name="geometry">
<rect>
<x>531</x>
<y>494</y>
<width>71</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>OnCount, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="m01_SwitchStatus_0">
<property name="geometry">
<rect>
<x>90</x>
<y>120</y>
<width>310</width>
<height>170</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchStatus, ImageValue=IM03_SwitchStatus_%d.png, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>8</x>
<y>151</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage11,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>3</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<zorder>P02BG</zorder>
<zorder>TestCameraView</zorder>
<zorder>CameralUrlLabel</zorder>
<zorder>CameralUrlLabel_2</zorder>
<zorder>BindNum_Title</zorder>
<zorder>groupBox</zorder>
<zorder>indicator_Label</zorder>
<zorder>groupBox_sys</zorder>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,345 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P13SwitchAction</class>
<widget class="QMainWindow" name="P13SwitchAction">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=13</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="P03BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../Light_image/Ligth_SwitchAction.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>8</x>
<y>150</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage11,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>3</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>290</x>
<y>180</y>
<width>1300</width>
<height>781</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="SwitchOn">
<property name="geometry">
<rect>
<x>147</x>
<y>490</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>SwitchOn,Index=2,Action=CmdExecute, SelectImag=SR_001.png, groupstart=6</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="SwitchOff">
<property name="geometry">
<rect>
<x>411</x>
<y>493</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>SwitchOff,Index=3,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLabel" name="m01_SwitchStatus_0">
<property name="geometry">
<rect>
<x>500</x>
<y>170</y>
<width>310</width>
<height>170</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchStatus, ImageValue=IM03_SwitchStatus_%d.png, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="SwitchRecover">
<property name="geometry">
<rect>
<x>674</x>
<y>493</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>SwitchOff,Index=4,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="m03_AlarmMessage_0">
<property name="geometry">
<rect>
<x>581</x>
<y>98</y>
<width>281</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string>AlarmMessage,Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="quit">
<property name="geometry">
<rect>
<x>940</x>
<y>490</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>Index=7, Action=SetPage11,SelectImag=SR_001.png, groupend=6</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>10</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备照明</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,637 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P16FaultQuery</class>
<widget class="QMainWindow" name="P16FaultQuery">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=16</string>
</property>
<property name="whatsThis">
<string/>
</property>
<widget class="QWidget" name="centralwidget">
<property name="statusTip">
<string/>
</property>
<widget class="QLabel" name="P06BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../Light_image/Ligth_FaultQuery.png</pixmap>
</property>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>640</x>
<y>310</y>
<width>641</width>
<height>581</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=2</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Btn_Pre">
<property name="geometry">
<rect>
<x>51</x>
<y>410</y>
<width>85</width>
<height>169</height>
</rect>
</property>
<property name="statusTip">
<string>Index=2,Action=CmdAlarmPrev, SelectImag=IM03_001.png, groupstart=3</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Btn_Next">
<property name="geometry">
<rect>
<x>270</x>
<y>410</y>
<width>85</width>
<height>169</height>
</rect>
</property>
<property name="statusTip">
<string>Index=3,Action=CmdAlarmNext, SelectImag=IM03_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="alarmTitle">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>120</x>
<y>75</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(160, 206, 226);</string>
</property>
<property name="text">
<string>..</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="alarmTime">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>120</x>
<y>35</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(160, 206, 226);</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="alarmMsg">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>120</x>
<y>118</y>
<width>491</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(255, 126, 21);</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="sys_menu_2">
<property name="geometry">
<rect>
<x>488</x>
<y>410</y>
<width>85</width>
<height>169</height>
</rect>
</property>
<property name="statusTip">
<string>Index=4, Action=SetPage11, SelectImag=IM03_001.png, groupend=3</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>650</x>
<y>485</y>
<width>671</width>
<height>291</height>
</rect>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(255, 255, 255,0);</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_15">
<property name="geometry">
<rect>
<x>260</x>
<y>27</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmUb, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_13">
<property name="geometry">
<rect>
<x>40</x>
<y>27</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmUa, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_14">
<property name="geometry">
<rect>
<x>40</x>
<y>82</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIa, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_18">
<property name="geometry">
<rect>
<x>260</x>
<y>82</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIb, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_21">
<property name="geometry">
<rect>
<x>480</x>
<y>27</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmUc, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_22">
<property name="geometry">
<rect>
<x>480</x>
<y>81</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmIc, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_23">
<property name="geometry">
<rect>
<x>480</x>
<y>137</y>
<width>81</width>
<height>23</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>AlarmRo, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>7</x>
<y>149</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage11,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>1</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>320</x>
<y>170</y>
<width>421</width>
<height>91</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(255, 255, 255,0);</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="BindNum_Title">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,792 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P17SystemSet</class>
<widget class="QMainWindow" name="P17SystemSet">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=17</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>91</x>
<y>187</y>
<width>450</width>
<height>874</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=14</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_28">
<property name="geometry">
<rect>
<x>270</x>
<y>100</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Temperature, Action=Modify, Index=1, Format=%03.0f, Caption=温度设定,Timeout=15000,SelectImag=P4_ParaSelect.png,groupstart=10</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_29">
<property name="geometry">
<rect>
<x>270</x>
<y>155</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Gas, Action=Modify, Index=2, Alias=alias_input, Caption=瓦斯触点,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_30">
<property name="geometry">
<rect>
<x>270</x>
<y>210</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>GasDelay, Action=Modify, Index=3, Format=%06.2f, Caption=瓦斯延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_31">
<property name="geometry">
<rect>
<x>270</x>
<y>265</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>GasConcentration, Action=Modify, Index=4, Format=%05.2f, Caption=瓦斯浓度, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_32">
<property name="geometry">
<rect>
<x>270</x>
<y>320</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>Fan, Action=Modify, Index=5, Alias=alias_input, Caption=风电触点,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_36">
<property name="geometry">
<rect>
<x>270</x>
<y>375</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>FanDelay, Action=Modify, Index=6, Format=%06.2f, Caption=风电延时, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_37">
<property name="geometry">
<rect>
<x>270</x>
<y>430</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>FarAndNearMode, Action=Modify, Index=7, Alias=alias_remote, Caption=远近控模式,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_38">
<property name="geometry">
<rect>
<x>270</x>
<y>485</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>MaintenanceMode, Action=Modify, Index=8, Alias=alias_bool, Caption=维修模式,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="BlankTimelineEdit">
<property name="geometry">
<rect>
<x>270</x>
<y>540</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>System=ScreenBlankingTime, Action=ModifySystem, Index=9,SelectImag=P4_ParaSelect.png, password</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_44">
<property name="geometry">
<rect>
<x>270</x>
<y>595</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>System=SystemPassWord, Action=ModifySystem, Index=10,SelectImag=P4_ParaSelect.png, password,groupend=10</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>****</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>545</x>
<y>186</y>
<width>450</width>
<height>874</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=15</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QLineEdit" name="lineEdit_26">
<property name="geometry">
<rect>
<x>270</x>
<y>85</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>485Address, Action=Modify, Index=1, Format=%03.0f, Caption=485地址, Timeout=15000,SelectImag=P4_ParaSelect.png, groupstart=5</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_27">
<property name="geometry">
<rect>
<x>270</x>
<y>145</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>485Baud, Action=Modify, Index=2, Alias=alias_baud, Caption=485波特率,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_33">
<property name="geometry">
<rect>
<x>270</x>
<y>200</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>485Parity, Action=Modify, Index=3, Alias=alias_parity, Caption=485校验,Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_34">
<property name="geometry">
<rect>
<x>270</x>
<y>255</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>CANAddress, Action=Modify, Index=4, Format=%03.0f, Caption=CAN地址, Timeout=15000,SelectImag=P4_ParaSelect.png</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_35">
<property name="geometry">
<rect>
<x>270</x>
<y>310</y>
<width>120</width>
<height>25</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="statusTip">
<string>CANBaud, Action=Modify, Index=5, Alias=alias_can_baud, Caption=CAN波特率,Timeout=15000,SelectImag=P4_ParaSelect.png, groupend=5</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(177, 229, 252);</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>0</x>
<y>80</y>
<width>1920</width>
<height>970</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_P00_3">
<property name="geometry">
<rect>
<x>547</x>
<y>90</y>
<width>450</width>
<height>877</height>
</rect>
</property>
<property name="statusTip">
<string>groupend=2,Index=3, Action=SetMain15,SelectImag=IM04_00.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="geometry">
<rect>
<x>180</x>
<y>36</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="sys_P00_2">
<property name="geometry">
<rect>
<x>92</x>
<y>90</y>
<width>450</width>
<height>877</height>
</rect>
</property>
<property name="statusTip">
<string>groupstart=2,Index=2, Action=SetMain14,SelectImag=IM04_00.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>450</width>
<height>876</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>9</x>
<y>24</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>9</x>
<y>173</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage11,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<zorder>sys_P00_2</zorder>
<zorder>sys_P00_3</zorder>
<zorder>BindNum_Title</zorder>
<zorder>sys_home</zorder>
<zorder>sys_menu</zorder>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="P07BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="pixmap">
<pixmap>../Light_image/Light_SystemSet.png</pixmap>
</property>
</widget>
<zorder>P07BG</zorder>
<zorder>groupBox</zorder>
<zorder>groupBox_2</zorder>
<zorder>groupBox_sys_2</zorder>
<zorder>indicator_Label</zorder>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,345 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>P18FieldTestAction</class>
<widget class="QMainWindow" name="P18FieldTestAction">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="statusTip">
<string>Page=18</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QLabel" name="P08BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1920</width>
<height>1080</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../Light_image/Light_FieldTestAction.png</pixmap>
</property>
</widget>
<widget class="QLineEdit" name="BindNum_Title">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>290</x>
<y>174</y>
<width>331</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>20</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string>当前设备</string>
</property>
<property name="frame">
<bool>false</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys_2">
<property name="geometry">
<rect>
<x>600</x>
<y>280</y>
<width>691</width>
<height>511</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="Test01">
<property name="geometry">
<rect>
<x>53</x>
<y>243</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>TestShort,Index=2,Action=CmdExecute, SelectImag=SR_001.png, groupstart=4</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Test02">
<property name="geometry">
<rect>
<x>53</x>
<y>357</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>TestIsolation,Index=3,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="Reset">
<property name="geometry">
<rect>
<x>400</x>
<y>248</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>TestRecover,Index=4,Action=CmdExecute, SelectImag=SR_001.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>72</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="m03_AlarmMessage_0">
<property name="geometry">
<rect>
<x>365</x>
<y>135</y>
<width>291</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<family>黑体</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="statusTip">
<string>AlarmMessage,Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(255, 238, 254,0);
color: rgb(207, 0, 13);</string>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="m01_SwitchStatus_0">
<property name="geometry">
<rect>
<x>79</x>
<y>93</y>
<width>245</width>
<height>111</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>SwitchStatus, ImageValue=SwitchStatus_%d.png, Timeout=15000</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QPushButton" name="quit">
<property name="geometry">
<rect>
<x>400</x>
<y>357</y>
<width>246</width>
<height>84</height>
</rect>
</property>
<property name="statusTip">
<string>Index=5, Action=SetPage11,SelectImag=SR_001.png, groupend=4</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
<widget class="QLabel" name="indicator_Label">
<property name="geometry">
<rect>
<x>1</x>
<y>412</y>
<width>88</width>
<height>636</height>
</rect>
</property>
<property name="font">
<font>
<family>Arial</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="statusTip">
<string>ImageValue=IMxx_A_%d.png</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QGroupBox" name="groupBox_sys">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>85</width>
<height>960</height>
</rect>
</property>
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>main=1</string>
</property>
<property name="styleSheet">
<string notr="true">border:none;</string>
</property>
<property name="title">
<string/>
</property>
<widget class="QPushButton" name="sys_menu">
<property name="geometry">
<rect>
<x>8</x>
<y>153</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=1, Action=SetPage11,SelectImag=IMxx_00E.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
<widget class="QPushButton" name="sys_home">
<property name="geometry">
<rect>
<x>8</x>
<y>4</y>
<width>72</width>
<height>144</height>
</rect>
</property>
<property name="statusTip">
<string>Index=0, Action=SetPage0,SelectImag=IMxx_00F.png</string>
</property>
<property name="text">
<string/>
</property>
<property name="iconSize">
<size>
<width>72</width>
<height>144</height>
</size>
</property>
</widget>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
import sys
sys_path = sys.path[0].replace("\\", "/")
sys_path_linux = sys_path + "/../.."
if sys_path_linux not in sys.path :
sys.path.append(sys_path_linux)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@ -1,281 +1,31 @@
# import sys
# import cv2
# import os
# import time
# from PyQt5.QtCore import QThread, pyqtSignal, QObject
# import face_recognition
# current_dir = os.path.dirname(__file__)
# share_code_dir = os.path.abspath(os.path.join(current_dir, '..', '..'))
# sys.path.append(share_code_dir)
# from print_color import *
# DEFAULT_VIDEO_SLEEP_MS = 20
# # 图像处理线程
# class ImageProcessingThread(QThread):
# processed_image_signal = pyqtSignal(object)
# def __init__(self):
# super().__init__()
# def run(self):
# while True:
# # 在这里添加图像处理代码
# # 这里暂时只是将图像传递给下一个线程
# time.sleep(0.01)
# self.processed_image_signal.emit(None)
# # 摄像头采集线程
# class CameraThread(QThread):
# image_signal = pyqtSignal(object)
# def __init__(self, camera_url, circuit_id: int = 0):
# super().__init__()
# self.camera_url = camera_url # 摄像头url地址, 整数 或者 字符串
# self.face_detection: bool = False
# if isinstance(camera_url, int):
# self.camera_url_str = str(camera_url)
# else:
# self.camera_url_str = camera_url
# self.cap: cv2.VideoCapture = None
# self.running: bool = True
# self.fps = 0
# self.cycle_limit = DEFAULT_VIDEO_SLEEP_MS
# self.cycle_ms = 0
# self.circuit_id = circuit_id # 摄像头对应的回路, 组合开关每一个回路都有对应的摄像头
# self.is_signal_connect = False
# self.is_emit = False
# self.set_video_cycle_ms(2000)
# def signal_connect(self, slot_func):
# self.image_signal.connect(slot_func)
# self.is_signal_connect = True
# def signal_disconnect(self):
# # 判断信号是否已连接
# if self.is_signal_connect:
# self.image_signal.disconnect()
# self.is_signal_connect = False
# def set_video_cycle_ms(self, cycle_ms: int = 10):
# if self.cycle_limit != cycle_ms:
# if cycle_ms <= DEFAULT_VIDEO_SLEEP_MS:
# self.cycle_limit = DEFAULT_VIDEO_SLEEP_MS
# else:
# self.cycle_limit = cycle_ms
# # 新建函数,改变函数延时方法
# def change_camera_url(self, camera_url: str):
# if self.circuit_id == camera_url:
# self.set_video_cycle_ms(DEFAULT_VIDEO_SLEEP_MS)
# else:
# self.set_video_cycle_ms(1000)
# def close(self):
# if self.cap == None: # 初始化一直未完成
# self.terminate()
# self.running = False
# def run(self):
# process_count = 0
# fps_time = 0
# while self.running == True:
# inform_msg = "cameral init start, url = " + self.camera_url_str
# print_inform_msg(inform_msg)
# try:
# if isinstance(self.camera_url, int):
# # 在 Windows 平台下,使用默认的 cv2.VideoCapture 接口
# self.cap = cv2.VideoCapture(self.camera_url, cv2.CAP_DSHOW)
# else:
# # 在 Linux 平台下,使用默认的 cv2.VideoCapture 接口
# self.cap = cv2.VideoCapture(self.camera_url)
# if self.cap != None:
# inform_msg = "cameral Init Success, url = " + self.camera_url_str
# self.is_emit = True
# print_inform_msg(inform_msg)
# else:
# inform_msg = "cameral connection timeout, url = " + self.camera_url_str
# print_inform_msg(inform_msg)
# except Exception as e:
# self.cap = None
# inform_msg = "cameral camera Init Fail, url = " + self.camera_url_str
# print_error_msg(inform_msg)
# base_time = time.time()
# while self.running and self.cap != None:
# # 延时20ms
# time.sleep(DEFAULT_VIDEO_SLEEP_MS / 1000)
# if self.cycle_ms + DEFAULT_VIDEO_SLEEP_MS < self.cycle_limit:
# self.cycle_ms += DEFAULT_VIDEO_SLEEP_MS
# self.cap.grab() # 抛弃多余的帧,保持最新帧
# continue
# else:
# self.cycle_ms = 0
# try:
# ret, frame = self.cap.read()
# cur_time = time.time()
# execution_time = cur_time - base_time
# base_time = cur_time
# process_count += 1
# fps_time += execution_time
# if fps_time >= 1:
# self.fps = process_count
# process_count = 0
# fps_time = 0
# if execution_time < 5:
# image_object: QObject = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# self.image_signal.emit(image_object)
# else: # 时间差大于5秒, 表示网络可能中断过, 退出并重新连接
# err_message = "cameral read timeout, url = " + self.camera_url_str
# print_error_msg(err_message)
# break
# except Exception as e:
# err_message = "cameral read timeout, url = " + self.camera_url_str
# self.is_emit = False
# print_error_msg(err_message)
# if self.running == True:
# time.sleep(2)
# break
# print_inform_msg("cameral connection End")
# time.sleep(0.01)
# if self.cap != None:
# self.cap.release()
# self.cap = None
# - * - coding:utf - 8 - * -
import sys import sys
import cv2 import cv2
import os import os
import time import time
import subprocess
import face_recognition
import numpy as np
from PIL import Image, ImageDraw, ImageFont
from PyQt5.QtCore import QThread, pyqtSignal, QObject from PyQt5.QtCore import QThread, pyqtSignal, QObject
from print_color import * import face_recognition
current_dir = os.path.dirname(__file__) current_dir = os.path.dirname(__file__)
share_code_dir = os.path.abspath(os.path.join(current_dir, '..', '..')) share_code_dir = os.path.abspath(os.path.join(current_dir, '..', '..'))
sys.path.append(share_code_dir) sys.path.append(share_code_dir)
from print_color import *
DEFAULT_VIDEO_SLEEP_MS = 20 DEFAULT_VIDEO_SLEEP_MS = 20
# 定义路径常量 # 图像处理线程
npy_file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'face_data/face_data.npy'))
image_folder_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'face_data'))
font_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'font/hanzi.ttc'))
def load_face_data():
face_data = {}
try:
face_data = np.load(npy_file_path, allow_pickle=True).item()
print_debug_msg(f"Loaded {len(face_data)} face encodings from {npy_file_path}.")
except Exception as e:
print_error_msg(f"Error loading face encodings: {e}")
current_images = [f for f in os.listdir(image_folder_path) if f.endswith('.jpg')]
current_image_set = set(os.path.splitext(f)[0] for f in current_images)
known_image_set = set(face_data.keys())
added_images = current_image_set - known_image_set
removed_images = known_image_set - current_image_set
for image_name in added_images:
image_path = os.path.join(image_folder_path, f"{image_name}.jpg")
try:
image = face_recognition.load_image_file(image_path)
face_encodings = face_recognition.face_encodings(image)
if face_encodings:
face_data[image_name] = face_encodings[0].tolist()
print_debug_msg(f"Added encoding for {image_name}.")
else:
print_warning_msg(f"[WARNING] No face detected in {image_name}.jpg.")
except Exception as e:
print_error_msg(f"[ERROR] Error processing {image_name}.jpg: {e}")
for removed_image in removed_images:
del face_data[removed_image]
print_debug_msg(f"Removed encoding for {removed_image}.")
np.save(npy_file_path, face_data)
print_debug_msg(f"Updated face data saved with {len(face_data)} entries.")
return face_data
class ImageProcessingThread(QThread): class ImageProcessingThread(QThread):
processed_image_signal = pyqtSignal(object) processed_image_signal = pyqtSignal(object)
def __init__(self, frame=None): def __init__(self):
super().__init__() super().__init__()
self.frame = frame # 添加 frame 参数
self.face_encodings = []
self.face_names = []
self.face_locations = []
self.face_data = load_face_data()
self.total_image_name = list(self.face_data.keys())
self.total_face_encoding = [np.array(self.face_data[name]) for name in self.total_image_name]
def process_frame(self, frame):
"""实时处理帧,匹配已知人脸"""
self.face_locations = face_recognition.face_locations(frame)
face_encodings = face_recognition.face_encodings(frame, self.face_locations)
names = []
for face_encoding in face_encodings:
name = "Unknown"
face_distances = face_recognition.face_distance(self.total_face_encoding, face_encoding)
if face_distances.size > 0:
min_distance = np.min(face_distances)
best_match_index = np.argmin(face_distances)
if min_distance < self.dynamic_tolerance(): # 使用动态容忍度
name = self.total_image_name[best_match_index]
names.append(name)
self.face_names = names
return frame
def dynamic_tolerance(self):
# 动态调整容忍度,可以基于一些规则来调整,如帧内错误率、识别准确率等
error_rate = self.calculate_error_rate()
if error_rate > 0.1:
return 0.5 # 高容忍度以减少错误
else:
return 0.4 # 适中容忍度
def calculate_error_rate(self):
# 计算识别错误率,作为动态调整容忍度的依据
total_faces = len(self.total_face_encoding)
unmatched_faces = sum(1 for name in self.face_names if name == "Unknown")
return unmatched_faces / total_faces if total_faces > 0 else 0
def set_frame(self, frame):
self.frame = frame
def run(self): def run(self):
while True: while True:
if self.frame is not None: # 在这里添加图像处理代码
self.process_frame(self.frame) # 这里暂时只是将图像传递给下一个线程
self.processed_image_signal.emit(self.frame) time.sleep(0.01)
time.sleep(0.01) # 控制帧率 self.processed_image_signal.emit(None)
# 摄像头采集线程 # 摄像头采集线程
class CameraThread(QThread): class CameraThread(QThread):
@ -283,8 +33,9 @@ class CameraThread(QThread):
def __init__(self, camera_url, circuit_id: int = 0): def __init__(self, camera_url, circuit_id: int = 0):
super().__init__() super().__init__()
self.camera_url = camera_url
self.face_detection: bool = True self.camera_url = camera_url # 摄像头url地址, 整数 或者 字符串
self.face_detection: bool = False
if isinstance(camera_url, int): if isinstance(camera_url, int):
self.camera_url_str = str(camera_url) self.camera_url_str = str(camera_url)
@ -295,12 +46,10 @@ class CameraThread(QThread):
self.running: bool = True self.running: bool = True
self.fps = 0 self.fps = 0
self.frame_count = 0
self.fps_time = 0
self.cycle_limit = DEFAULT_VIDEO_SLEEP_MS self.cycle_limit = DEFAULT_VIDEO_SLEEP_MS
self.cycle_ms = 0 self.cycle_ms = 0
self.circuit_id = circuit_id self.circuit_id = circuit_id # 摄像头对应的回路, 组合开关每一个回路都有对应的摄像头
self.is_signal_connect = False self.is_signal_connect = False
self.is_emit = False self.is_emit = False
@ -311,6 +60,7 @@ class CameraThread(QThread):
self.is_signal_connect = True self.is_signal_connect = True
def signal_disconnect(self): def signal_disconnect(self):
# 判断信号是否已连接
if self.is_signal_connect: if self.is_signal_connect:
self.image_signal.disconnect() self.image_signal.disconnect()
self.is_signal_connect = False self.is_signal_connect = False
@ -322,6 +72,7 @@ class CameraThread(QThread):
else: else:
self.cycle_limit = cycle_ms self.cycle_limit = cycle_ms
# 新建函数,改变函数延时方法
def change_camera_url(self, camera_url: str): def change_camera_url(self, camera_url: str):
if self.circuit_id == camera_url: if self.circuit_id == camera_url:
self.set_video_cycle_ms(DEFAULT_VIDEO_SLEEP_MS) self.set_video_cycle_ms(DEFAULT_VIDEO_SLEEP_MS)
@ -329,115 +80,364 @@ class CameraThread(QThread):
self.set_video_cycle_ms(1000) self.set_video_cycle_ms(1000)
def close(self): def close(self):
if self.cap is None: if self.cap == None: # 初始化一直未完成
self.terminate() self.terminate()
self.running = False self.running = False
def run(self): def run(self):
process_count = 0 process_count = 0
fps_time = 0 fps_time = 0
face_thread = ImageProcessingThread()
face_thread.start()
self.match_count = 0 # 初始化匹配帧数计数器 while self.running == True:
inform_msg = "cameral init start, url = " + self.camera_url_str
while self.running:
inform_msg = "Camera init start, URL = " + self.camera_url_str
print_inform_msg(inform_msg) print_inform_msg(inform_msg)
try: try:
self.cap = cv2.VideoCapture(self.camera_url) # 强制使用 BGR 格式 if isinstance(self.camera_url, int):
if self.cap.isOpened(): # 在 Windows 平台下,使用默认的 cv2.VideoCapture 接口
inform_msg = "Camera Init Success, URL = " + self.camera_url_str self.cap = cv2.VideoCapture(self.camera_url, cv2.CAP_DSHOW)
else:
# 在 Linux 平台下,使用默认的 cv2.VideoCapture 接口
self.cap = cv2.VideoCapture(self.camera_url)
if self.cap != None:
inform_msg = "cameral Init Success, url = " + self.camera_url_str
self.is_emit = True self.is_emit = True
print_inform_msg(inform_msg) print_inform_msg(inform_msg)
else: else:
inform_msg = "Camera connection timeout, URL = " + self.camera_url_str inform_msg = "cameral connection timeout, url = " + self.camera_url_str
print_error_msg(inform_msg) print_inform_msg(inform_msg)
except Exception as e: except Exception as e:
self.cap = None self.cap = None
inform_msg = "Camera Init Fail, URL = " + self.camera_url_str inform_msg = "cameral camera Init Fail, url = " + self.camera_url_str
print_error_msg(inform_msg) print_error_msg(inform_msg)
base_time = time.time() base_time = time.time()
while self.running and self.cap: while self.running and self.cap != None:
# 延时20ms
time.sleep(DEFAULT_VIDEO_SLEEP_MS / 1000) time.sleep(DEFAULT_VIDEO_SLEEP_MS / 1000)
if self.cycle_ms + DEFAULT_VIDEO_SLEEP_MS < self.cycle_limit: if self.cycle_ms + DEFAULT_VIDEO_SLEEP_MS < self.cycle_limit:
self.cycle_ms += DEFAULT_VIDEO_SLEEP_MS self.cycle_ms += DEFAULT_VIDEO_SLEEP_MS
self.cap.grab() self.cap.grab() # 抛弃多余的帧,保持最新帧
continue continue
else: else:
self.cycle_ms = 0 self.cycle_ms = 0
try: try:
ret, frame = self.cap.read() ret, frame = self.cap.read()
if not ret:
break
face_thread.set_frame(frame)
cur_time = time.time() cur_time = time.time()
execution_time = cur_time - base_time execution_time = cur_time - base_time
base_time = cur_time base_time = cur_time
process_count += 1 process_count += 1
fps_time += execution_time fps_time += execution_time
if fps_time >= 1: # 每隔1秒重新计算 FPS
if fps_time >= 1:
self.fps = process_count self.fps = process_count
process_count = 0 process_count = 0
fps_time = 0 fps_time = 0
if execution_time < 5: if execution_time < 5:
frame: QObject = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) image_object: QObject = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
for (top, right, bottom, left), name in zip(face_thread.face_locations, face_thread.face_names): self.image_signal.emit(image_object)
if name != "Unknown": # 只绘制已匹配的结果 else: # 时间差大于5秒, 表示网络可能中断过, 退出并重新连接
self.match_count += 1 # 计数成功匹配的帧 err_message = "cameral read timeout, url = " + self.camera_url_str
# cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
# cv2.putText(frame, name, (left + 6, bottom - 6), cv2.FONT_HERSHEY_DUPLEX, 1.0, (255, 255, 255), 1)
# 将OpenCV图像转换为PIL图像格式注意要转换色彩空间OpenCV是BGRPIL是RGB
pil_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(pil_image)
# 这里选择合适的中文字体文件路径,比如系统自带的宋体(不同系统路径可能有差异),并设置字体大小
font = ImageFont.truetype(font_path, 15)
# 在指定位置绘制中文
draw.text((left + 12, bottom + 12), name, font=font, fill=(255, 255, 255))
# 再将PIL图像转换回OpenCV图像格式
frame = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
else:
name = "未在人脸库中,无操作权限"
pil_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(pil_image)
#设置字体大小
font = ImageFont.truetype(font_path, 15)
# 在指定位置绘制中文
draw.text((left + 12, bottom + 12), name, font=font, fill=(255, 255, 255))
# 再将PIL图像转换回OpenCV图像格式
frame = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
cv2.rectangle(frame, (left, top), (right, bottom), (255, 0, 0), 2)
self.image_signal.emit(frame)
else:
err_message = "Camera read timeout, URL = " + self.camera_url_str
print_error_msg(err_message) print_error_msg(err_message)
break break
except Exception as e: except Exception as e:
err_message = "Camera read exception, URL = " + self.camera_url_str err_message = "cameral read timeout, url = " + self.camera_url_str
self.is_emit = False
print_error_msg(err_message) print_error_msg(err_message)
if self.running: if self.running == True:
time.sleep(2) time.sleep(2)
break break
if self.cap: print_inform_msg("cameral connection End")
self.cap.release()
self.cap = None
print_inform_msg("Camera connection ended")
time.sleep(0.01) time.sleep(0.01)
if self.cap != None:
self.cap.release()
self.cap = None
# - * - coding:utf - 8 - * -
# import sys
# import cv2
# import os
# import time
# import subprocess
# import face_recognition
# import numpy as np
# from PIL import Image, ImageDraw, ImageFont
# from PyQt5.QtCore import QThread, pyqtSignal, QObject
# from print_color import *
# current_dir = os.path.dirname(__file__)
# share_code_dir = os.path.abspath(os.path.join(current_dir, '..', '..'))
# sys.path.append(share_code_dir)
# DEFAULT_VIDEO_SLEEP_MS = 20
# # 定义路径常量
# npy_file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'face_data/face_data.npy'))
# image_folder_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'face_data'))
# font_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'font/hanzi.ttc'))
# def load_face_data():
# face_data = {}
# try:
# face_data = np.load(npy_file_path, allow_pickle=True).item()
# print_debug_msg(f"Loaded {len(face_data)} face encodings from {npy_file_path}.")
# except Exception as e:
# print_error_msg(f"Error loading face encodings: {e}")
# current_images = [f for f in os.listdir(image_folder_path) if f.endswith('.jpg')]
# current_image_set = set(os.path.splitext(f)[0] for f in current_images)
# known_image_set = set(face_data.keys())
# added_images = current_image_set - known_image_set
# removed_images = known_image_set - current_image_set
# for image_name in added_images:
# image_path = os.path.join(image_folder_path, f"{image_name}.jpg")
# try:
# image = face_recognition.load_image_file(image_path)
# face_encodings = face_recognition.face_encodings(image)
# if face_encodings:
# face_data[image_name] = face_encodings[0].tolist()
# print_debug_msg(f"Added encoding for {image_name}.")
# else:
# print_warning_msg(f"[WARNING] No face detected in {image_name}.jpg.")
# except Exception as e:
# print_error_msg(f"[ERROR] Error processing {image_name}.jpg: {e}")
# for removed_image in removed_images:
# del face_data[removed_image]
# print_debug_msg(f"Removed encoding for {removed_image}.")
# np.save(npy_file_path, face_data)
# print_debug_msg(f"Updated face data saved with {len(face_data)} entries.")
# return face_data
# class ImageProcessingThread(QThread):
# processed_image_signal = pyqtSignal(object)
# def __init__(self, frame=None):
# super().__init__()
# self.frame = frame # 添加 frame 参数
# self.face_encodings = []
# self.face_names = []
# self.face_locations = []
# self.face_data = load_face_data()
# self.total_image_name = list(self.face_data.keys())
# self.total_face_encoding = [np.array(self.face_data[name]) for name in self.total_image_name]
# def process_frame(self, frame):
# """实时处理帧,匹配已知人脸"""
# self.face_locations = face_recognition.face_locations(frame)
# face_encodings = face_recognition.face_encodings(frame, self.face_locations)
# names = []
# for face_encoding in face_encodings:
# name = "Unknown"
# face_distances = face_recognition.face_distance(self.total_face_encoding, face_encoding)
# if face_distances.size > 0:
# min_distance = np.min(face_distances)
# best_match_index = np.argmin(face_distances)
# if min_distance < self.dynamic_tolerance(): # 使用动态容忍度
# name = self.total_image_name[best_match_index]
# names.append(name)
# self.face_names = names
# return frame
# def dynamic_tolerance(self):
# # 动态调整容忍度,可以基于一些规则来调整,如帧内错误率、识别准确率等
# error_rate = self.calculate_error_rate()
# if error_rate > 0.1:
# return 0.5 # 高容忍度以减少错误
# else:
# return 0.4 # 适中容忍度
# def calculate_error_rate(self):
# # 计算识别错误率,作为动态调整容忍度的依据
# total_faces = len(self.total_face_encoding)
# unmatched_faces = sum(1 for name in self.face_names if name == "Unknown")
# return unmatched_faces / total_faces if total_faces > 0 else 0
# def set_frame(self, frame):
# self.frame = frame
# def run(self):
# while True:
# if self.frame is not None:
# self.process_frame(self.frame)
# self.processed_image_signal.emit(self.frame)
# time.sleep(0.01) # 控制帧率
# # 摄像头采集线程
# class CameraThread(QThread):
# image_signal = pyqtSignal(object)
# def __init__(self, camera_url, circuit_id: int = 0):
# super().__init__()
# self.camera_url = camera_url
# self.face_detection: bool = True
# if isinstance(camera_url, int):
# self.camera_url_str = str(camera_url)
# else:
# self.camera_url_str = camera_url
# self.cap: cv2.VideoCapture = None
# self.running: bool = True
# self.fps = 0
# self.frame_count = 0
# self.fps_time = 0
# self.cycle_limit = DEFAULT_VIDEO_SLEEP_MS
# self.cycle_ms = 0
# self.circuit_id = circuit_id
# self.is_signal_connect = False
# self.is_emit = False
# self.set_video_cycle_ms(2000)
# def signal_connect(self, slot_func):
# self.image_signal.connect(slot_func)
# self.is_signal_connect = True
# def signal_disconnect(self):
# if self.is_signal_connect:
# self.image_signal.disconnect()
# self.is_signal_connect = False
# def set_video_cycle_ms(self, cycle_ms: int = 10):
# if self.cycle_limit != cycle_ms:
# if cycle_ms <= DEFAULT_VIDEO_SLEEP_MS:
# self.cycle_limit = DEFAULT_VIDEO_SLEEP_MS
# else:
# self.cycle_limit = cycle_ms
# def change_camera_url(self, camera_url: str):
# if self.circuit_id == camera_url:
# self.set_video_cycle_ms(DEFAULT_VIDEO_SLEEP_MS)
# else:
# self.set_video_cycle_ms(1000)
# def close(self):
# if self.cap is None:
# self.terminate()
# self.running = False
# def run(self):
# process_count = 0
# fps_time = 0
# face_thread = ImageProcessingThread()
# face_thread.start()
# self.match_count = 0 # 初始化匹配帧数计数器
# while self.running:
# inform_msg = "Camera init start, URL = " + self.camera_url_str
# print_inform_msg(inform_msg)
# try:
# self.cap = cv2.VideoCapture(self.camera_url) # 强制使用 BGR 格式
# if self.cap.isOpened():
# inform_msg = "Camera Init Success, URL = " + self.camera_url_str
# self.is_emit = True
# print_inform_msg(inform_msg)
# else:
# inform_msg = "Camera connection timeout, URL = " + self.camera_url_str
# print_error_msg(inform_msg)
# except Exception as e:
# self.cap = None
# inform_msg = "Camera Init Fail, URL = " + self.camera_url_str
# print_error_msg(inform_msg)
# base_time = time.time()
# while self.running and self.cap:
# time.sleep(DEFAULT_VIDEO_SLEEP_MS / 1000)
# if self.cycle_ms + DEFAULT_VIDEO_SLEEP_MS < self.cycle_limit:
# self.cycle_ms += DEFAULT_VIDEO_SLEEP_MS
# self.cap.grab()
# continue
# else:
# self.cycle_ms = 0
# try:
# ret, frame = self.cap.read()
# if not ret:
# break
# face_thread.set_frame(frame)
# cur_time = time.time()
# execution_time = cur_time - base_time
# base_time = cur_time
# process_count += 1
# fps_time += execution_time
# if fps_time >= 1: # 每隔1秒重新计算 FPS
# self.fps = process_count
# process_count = 0
# fps_time = 0
# if execution_time < 5:
# frame: QObject = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# for (top, right, bottom, left), name in zip(face_thread.face_locations, face_thread.face_names):
# if name != "Unknown": # 只绘制已匹配的结果
# self.match_count += 1 # 计数成功匹配的帧
# # cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
# # cv2.putText(frame, name, (left + 6, bottom - 6), cv2.FONT_HERSHEY_DUPLEX, 1.0, (255, 255, 255), 1)
# # 将OpenCV图像转换为PIL图像格式注意要转换色彩空间OpenCV是BGRPIL是RGB
# pil_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
# draw = ImageDraw.Draw(pil_image)
# # 这里选择合适的中文字体文件路径,比如系统自带的宋体(不同系统路径可能有差异),并设置字体大小
# font = ImageFont.truetype(font_path, 15)
# # 在指定位置绘制中文
# draw.text((left + 12, bottom + 12), name, font=font, fill=(255, 255, 255))
# # 再将PIL图像转换回OpenCV图像格式
# frame = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
# cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
# else:
# name = "未在人脸库中,无操作权限"
# pil_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
# draw = ImageDraw.Draw(pil_image)
# #设置字体大小
# font = ImageFont.truetype(font_path, 15)
# # 在指定位置绘制中文
# draw.text((left + 12, bottom + 12), name, font=font, fill=(255, 255, 255))
# # 再将PIL图像转换回OpenCV图像格式
# frame = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
# cv2.rectangle(frame, (left, top), (right, bottom), (255, 0, 0), 2)
# self.image_signal.emit(frame)
# else:
# err_message = "Camera read timeout, URL = " + self.camera_url_str
# print_error_msg(err_message)
# break
# except Exception as e:
# err_message = "Camera read exception, URL = " + self.camera_url_str
# print_error_msg(err_message)
# if self.running:
# time.sleep(2)
# break
# if self.cap:
# self.cap.release()
# self.cap = None
# print_inform_msg("Camera connection ended")
# time.sleep(0.01)

View File

@ -0,0 +1,65 @@
# -*- coding: utf-8 -*-
from __future__ import annotations
import sys, os, io, csv, time, datetime
from typing import Callable, Optional
# PyQt5
from PyQt5 import QtWidgets, uic
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer, QSize
from PyQt5.QtGui import QImage, QPixmap, QKeySequence
from PyQt5.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
QLabel, QPushButton, QComboBox, QTextEdit, QFileDialog, QMessageBox,
QGroupBox, QGridLayout, QDialog, QFormLayout, QSpinBox, QCheckBox,
QLineEdit, QTableWidget, QTableWidgetItem,QDialogButtonBox,QShortcut
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import cv2
from PIL import Image
import serial
import serial.tools.list_ports
# ---------- 协议导入----------
from Shared_CODE.FaceRecognitionProtocol import (
build_reset, build_uvc_view, build_face_view, build_verify,
build_enroll_itg_single, build_delete_all, build_get_all_userid,build_delete_user,
MID_REPLY, MID_NOTE, CMD_ENROLL, CMD_ENROLL_ITG,
parse_reply, parse_note
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..')))
ui_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../Shared_UI'))
enrill_ui_file_path = os.path.join(ui_path, "enroll.ui")
class EnrollItgSingleDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
uic.loadUi(enrill_ui_file_path, self)
self.cb_admin.setCurrentIndex(0)
self.btn_ok.clicked.connect(self.accept)
def values(self):
admin_val = self.cb_admin.currentIndex()
uname = self.le_name.text().strip()[:32]
face_dir = 0
if self.chk_mid.isChecked(): face_dir |= 0x01
if self.chk_right.isChecked(): face_dir |= 0x02
if self.chk_left.isChecked(): face_dir |= 0x04
if self.chk_down.isChecked(): face_dir |= 0x08
if self.chk_up.isChecked(): face_dir |= 0x10
if face_dir == 0: face_dir = 0x01
timeout_val = self.sb_timeout.value()
try:
itg_val = int(self.le_itg.text().strip(), 0)
except ValueError:
itg_val = 0
return admin_val, uname, face_dir, timeout_val, itg_val
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = EnrollItgSingleDialog()
dialog.exec()
sys.exit(0)

View File

@ -0,0 +1,146 @@
# -*- coding: utf-8 -*-
from __future__ import annotations
import sys, os, io, csv, time, datetime
from typing import Callable, Optional
# PyQt5
from PyQt5 import QtWidgets, uic
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer, QSize
from PyQt5.QtGui import QImage, QPixmap, QKeySequence
from PyQt5.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
QLabel, QPushButton, QComboBox, QTextEdit, QFileDialog, QMessageBox,
QGroupBox, QGridLayout, QDialog, QFormLayout, QSpinBox, QCheckBox,
QLineEdit, QTableWidget, QTableWidgetItem,QDialogButtonBox,QShortcut, QHeaderView
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import cv2
from PIL import Image
import serial
import serial.tools.list_ports
# ---------- 协议导入----------
from Shared_CODE.FaceRecognitionProtocol import (
build_reset, build_uvc_view, build_face_view, build_verify,
build_enroll_itg_single, build_delete_all, build_get_all_userid,build_delete_user,
MID_REPLY, MID_NOTE, CMD_ENROLL, CMD_ENROLL_ITG,
parse_reply, parse_note
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..')))
ui_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../Shared_UI'))
users_ui_file_path = os.path.join(ui_path, "DialogUsers.ui")
CSV_FILE = os.path.join(ui_path, "users.csv")
# -------------------- CSV 工具 --------------------"
def load_users():
users = []
try:
with open(CSV_FILE, "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
if len(row) >= 2:
user = {"user_id": row[0], "user_name": row[1]}
user["created_at"] = row[2] if len(row) >= 3 else ""
users.append(user)
except FileNotFoundError:
pass
return users
def save_users_list(users):
with open(CSV_FILE, "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
for u in users:
w.writerow([u.get("user_id", ""), u.get("user_name", ""), u.get("created_at", "")])
def save_user(user_id: int) -> bool:
users = load_users()
for u in users:
if str(u["user_id"]) == str(user_id):
return False
created_at = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
users.append({"user_id": str(user_id), "user_name": str(user_id), "created_at": created_at})
save_users_list(users)
return True
class UserManageDialog(QDialog):
def __init__(self, parent=None, send_func=None):
super().__init__(parent)
self.send_func = send_func
uic.loadUi(users_ui_file_path, self)
self.btn_get.clicked.connect(self.get_from_device)
self.btn_del_all.clicked.connect(self.delete_all_users)
self.refresh()
header = self.table.horizontalHeader()
# 用户ID列固定宽度
self.table.setColumnWidth(0, 100)
# 用户名列自适应内容
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
# 注册时间列填充剩余空间
header.setSectionResizeMode(2, QHeaderView.Stretch)
self.message_timer = QTimer()
self.message_timer.timeout.connect(self.close_dialog_timeout)
self.setWindowTitle("消息提示")
self.setWindowFlag(Qt.FramelessWindowHint)
button_box : QDialogButtonBox = self.buttonBox
ok_button = button_box.button(QDialogButtonBox.Ok)
if ok_button:
ok_button.setText('确定')
else:
button_box.addButton(QDialogButtonBox.Ok)
#定义4个快捷键, Key_Enter, Key_Escape经常被各类程序模块使用, 用Key_End, 与Key_Home来代替
QShortcut(QKeySequence(Qt.Key_PageDown), self, activated=self.key_enter_process)
QShortcut(QKeySequence(Qt.Key_PageUp), self, activated=self.key_escape_process)
QShortcut(QKeySequence(Qt.Key_End), self, activated=self.key_enter_process)
QShortcut(QKeySequence(Qt.Key_Home), self, activated=self.key_escape_process)
QShortcut(QKeySequence(Qt.Key_Return), self, activated=self.key_enter_process) # 普通回车
def refresh(self):
users = load_users()
self.table.setRowCount(len(users))
for r, u in enumerate(users):
self.table.setItem(r, 0, QTableWidgetItem(str(u.get("user_id", ""))))
self.table.setItem(r, 1, QTableWidgetItem(u.get("user_name", "")))
self.table.setItem(r, 2, QTableWidgetItem(u.get("created_at", "")))
def get_from_device(self):
self.send_func(build_get_all_userid())
def delete_all_users(self):
self.send_func(build_delete_all())
save_users_list([])
self.refresh()
QMessageBox.information(self, "提示", "已请求删除所有用户并清空本地记录")
def key_enter_process(self):
button_box : QDialogButtonBox = self.buttonBox
select_button = button_box.button(QDialogButtonBox.Ok)
if select_button:
select_button.click()
def key_escape_process(self):
button_box : QDialogButtonBox = self.buttonBox
select_button = button_box.button(QDialogButtonBox.Cancel)
if select_button:
select_button.click()
#消息超时
def close_dialog_timeout(self):
self.key_enter_process()
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = UserManageDialog()
dialog.exec()
sys.exit(0)

View File

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
from __future__ import annotations
import sys, os, io, csv, time, datetime
from typing import Callable, Optional
# PyQt5
from PyQt5 import QtWidgets, uic
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer, QSize
from PyQt5.QtGui import QImage, QPixmap, QKeySequence
from PyQt5.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
QLabel, QPushButton, QComboBox, QTextEdit, QFileDialog, QMessageBox,
QGroupBox, QGridLayout, QDialog, QFormLayout, QSpinBox, QCheckBox,
QLineEdit, QTableWidget, QTableWidgetItem,QDialogButtonBox,QShortcut
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import cv2
from PIL import Image
import serial
import serial.tools.list_ports
# ---------- 协议导入----------
from Shared_CODE.FaceRecognitionProtocol import (
build_reset, build_uvc_view, build_face_view, build_verify,
build_enroll_itg_single, build_delete_all, build_get_all_userid,build_delete_user,
MID_REPLY, MID_NOTE, CMD_ENROLL, CMD_ENROLL_ITG,
parse_reply, parse_note
)
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..')))
ui_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../Shared_UI'))
verify_ui_file_path = os.path.join(ui_path, "verify.ui")
class VerifyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
uic.loadUi(verify_ui_file_path, self)
self.cb_rightaway.setCurrentIndex(0)
self.sb_timeout.setValue(10)
self.btn_ok.clicked.connect(self.accept)
def values(self):
pd_val = self.cb_rightaway.currentIndex()
timeout_val = self.sb_timeout.value()
return pd_val, timeout_val
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = VerifyDialog()
dialog.exec()
sys.exit(0)

View File

@ -0,0 +1,476 @@
# -*- coding: utf-8 -*-
from __future__ import annotations
import struct
from dataclasses import dataclass
from typing import Optional, Tuple, List
from QT5_Project.Shared_CODE.DialogInform import DialogInform
SYNC = b"\xEF\xAA"
# Msg IDs
MID_REPLY = 0x00
MID_NOTE = 0x01
MID_IMAGE = 0x02
# Host->Module (Command) IDs (subset used by the tool)
CMD_RESET = 0x10
CMD_GET_STATUS = 0x11
CMD_VERIFY = 0x12
CMD_ENROLL = 0x13
CMD_DELETE_USER = 0x20
CMD_DELETE_ALL = 0x21
CMD_GET_USER_INFO = 0x22
CMD_FACE_RESET = 0x23
CMD_GET_ALL_USERID = 0x24
CMD_ENROLL_ITG = 0x26
CMD_GET_VERSION = 0x30
CMD_INIT_ENCRYPTION = 0x50
CMD_SET_RELEASE_KEY = 0x52
CMD_SET_DEBUG_KEY = 0x53
CMD_GET_SN = 0x93
CMD_READ_USB_UVC = 0xB0
CMD_SET_USB_UVC = 0xB1
CMD_FACE_VIEW = 0xB5
CMD_UVC_VIEW = 0xC0
CMD_UPGRADE_FW = 0xF6
CMD_ENROLL_WITH_PHOTO = 0xF7
CMD_LED_CONTROL = 0xF9
CMD_ENROLL_SINGLE = 0x1D
CMD_DEMO_MODE = 0xFE
# NOTE nids
NID_READY = 0x00
NID_FACE_STATE = 0x01
NID_UNKNOWNERROR = 0x02
NID_OTA_DONE = 0x03
NID_EYE_STATE = 0x04
# REPLY result codes (partial)
MR_SUCCESS = 0x00
MR_REJECTED = 0x01
MR_ABORTED = 0x02
MR_FAILED4_CAMERA = 0x04
MR_FAILED4_UNKNOWNREASON = 0x05
MR_FAILED4_INVALIDPARAM = 0x06
MR_FAILED4_NOMEMORY = 0x07
MR_FAILED4_UNKNOWNUSER = 0x08
MR_FAILED4_MAXUSER = 0x09
MR_FAILED4_FACEENROLLED = 0x0A
MR_FAILED4_LIVENESSCHECK = 0x0C
MR_FAILED4_TIMEOUT = 0x0D
MR_FAILED4_AUTHORIZATION = 0x0E
MR_FAILED4_READ_FILE = 0x13
MR_FAILED4_WRITE_FILE = 0x14
MR_FAILED4_NO_ENCRYPT = 0x15
MR_FAILED4_NO_RGBIMAGE = 0x17
MR_FAILED4_JPGPHOTO_LARGE = 0x18
MR_FAILED4_JPGPHOTO_SMALL = 0x19
# ---- 映射表 ----
# 指令名称映射指令ID -> 中文名称)
CMD_NAMES = {
CMD_RESET: "复位",
CMD_GET_STATUS: "获取状态",
CMD_VERIFY: "人脸验证",
CMD_LED_CONTROL: "LED控制",
CMD_ENROLL: "人脸录入(多帧)",
CMD_ENROLL_SINGLE: "人脸录入",
CMD_ENROLL_ITG: "人脸录入(集成式)",
CMD_DELETE_USER: "删除单个用户",
CMD_DELETE_ALL: "删除所有用户",
CMD_GET_USER_INFO: "获取用户信息",
CMD_GET_ALL_USERID: "获取所有用户ID",
CMD_GET_VERSION: "获取版本信息",
CMD_INIT_ENCRYPTION: "初始化加密",
CMD_ENROLL_WITH_PHOTO: "照片录入注册",
CMD_FACE_VIEW: "人脸框显示切换",
CMD_UVC_VIEW: "视频模式切换",
}
# 结果码名称映射(结果码 -> 中文名称)
RESULT_NAMES = {
0x00: "成功",
0x01: "被拒绝",
0x02: "已中止",
0x04: "失败:相机异常",
0x05: "失败:未知错误",
0x06: "失败:参数无效",
0x07: "失败:内存不足",
0x08: "失败:用户不存在",
0x09: "失败:超过最大用户数",
0x0A: "失败:已录入该用户",
0x0C: "失败:活体检测未通过",
0x0D: "失败:人脸超时",
0x0E: "失败:认证失败",
0x13: "失败:文件读取错误",
0x14: "失败:文件写入错误",
0x15: "失败:未启用加密",
0x17: "失败:无RGB图像",
0x18: "失败:JPG文件过大",
0x19: "失败:JPG文件过小",
}
# 通知状态名称映射(状态码 -> 中文名称)
NOTE_NAMES = {
0x00: "就绪",
0x01: "人脸状态",
0x02: "未知错误",
0x03: "OTA升级完成",
0x04: "眼睛状态",
}
# 帧头同步字
SYNC = b"\xEF\xAA"
#########################################################################################
#########################################################################################
def xor_checksum(data: bytes) -> int:
"""
计算异或校验 (XOR),范围为整个帧的 MsgID + Size + Data 部分,
不包括 SYNC(2字节) 和最后的校验字节本身。
"""
chk = 0
for b in data:
chk ^= b
return chk & 0xFF
def pack_frame(msg_id: int, data: bytes = b"") -> bytes:
"""
封装一帧数据
格式: SYNC(2) + MsgID(1) + Size(2) + Data(N) + Chk(1)
- MsgID: 命令字
- Size : Data 长度 (big endian, 2字节)
- Data : 负载
- Chk : 校验 = MsgID..Data 的所有字节异或
"""
size = struct.pack(">H", len(data)) # 大端编码
head = bytes([msg_id]) + size + data # MsgID + Size + Data
chk = xor_checksum(head) # 计算校验
return SYNC + head + bytes([chk]) # 拼装完整帧
def unpack_frame(buf: bytes) -> Tuple[Optional[dict], int]:
"""
尝试从缓冲区中解析出一帧。
返回: (frame_dict, consumed_bytes)
- 如果没有完整帧: (None, 0)
- 如果解析成功: ({"msg_id":..,"size":..,"data":..,"raw":..}, 已消耗字节数)
- 如果校验失败: ({"error":"checksum","raw":..}, 已消耗字节数)
buf: 原始接收缓冲区
"""
if len(buf) < 6: # 最小帧长: SYNC(2) + MsgID(1) + Size(2) + Chk(1)
return None, 0
# 查找 SYNC
idx = buf.find(SYNC)
if idx == -1:
# 没找到帧头,整个缓冲区丢弃
return None, len(buf)
# 余下字节不足以解析长度字段,继续等待
if len(buf) - idx < 6:
return None, 0
msg_id = buf[idx+2]
size = struct.unpack(">H", buf[idx+3:idx+5])[0]
total = 2 + 1 + 2 + size + 1 # 整个帧长度
# 数据不完整,继续等待
if len(buf) - idx < total:
return None, 0
# 截取一帧
frame = buf[idx: idx+total]
content = frame[2:-1] # 不包括 SYNC 和最后的校验字节
chk = frame[-1]
# 校验
if xor_checksum(content) != chk:
return {"error": "checksum", "raw": frame}, total
# 提取有效载荷
data = frame[5:-1]
return {
"msg_id": msg_id,
"size": size,
"data": data,
"raw": frame
}, total
# ------ Builders for key commands ------
def build_reset() -> bytes:
return pack_frame(CMD_RESET)
def build_get_status() -> bytes:
return pack_frame(CMD_GET_STATUS)
def build_led_control(state: int) -> bytes:
"""
构建LED控制指令帧(0xF9指令),符合校验位逻辑
:param state: LED状态值,0=灭,1=亮
"""
# 数据部分1字节状态值根据模组要求定义如0x00=灭0x01=亮)
data = struct.pack("B", state & 0xFF) # 确保是单字节
return pack_frame(CMD_LED_CONTROL, data) # CMD_LED_CONTROL = 0xF9
#pd_rightaway: int验证成功后是否立即断电0=不立即断电1=立即断电仅保留低8位有效通过&0xFF确保
#timeout: int验证超时时间单位范围通常为1-255秒仅保留低8位有效通过&0xFF确保
def build_verify(pd_rightaway, timeout: int = 10) -> bytes:
data = struct.pack("BB", pd_rightaway & 0xFF, timeout & 0xFF)
return pack_frame(CMD_VERIFY, data)
def build_enroll(admin: int, user_name: str, face_dir: int, timeout: int = 10) -> bytes:
name_bytes = user_name.encode("utf-8")[:32]
name_bytes = name_bytes + bytes(32 - len(name_bytes))
data = struct.pack("B", admin & 0xFF) + name_bytes + struct.pack("BB", face_dir & 0xFF, timeout & 0xFF)
return pack_frame(CMD_ENROLL, data)
def build_enroll_single(admin: int, user_name: str, timeout: int = 10) -> bytes:
name_bytes = user_name.encode("utf-8")[:32]
name_bytes = name_bytes + bytes(32 - len(name_bytes))
# face_dir not used per manual for ENROLL_SINGLE
data = struct.pack("B", admin & 0xFF) + name_bytes + struct.pack("BB", 0x00, timeout & 0xFF)
return pack_frame(0x1D, data)
def build_enroll_itg_single(admin: int, user_name: str, face_dir: int, timeout: int, itg_param: int) -> bytes:
"""
构造 ENROLL_ITG_SINGLE 命令帧
admin: 0=普通用户, 1=管理员
user_name: 最多 32 字节
face_dir: 人脸方向 bitmask
timeout: 超时时间 (秒)
itg_param: ITG 参数 (4 字节)
"""
# user_name 补齐到 32 字节
name_bytes = user_name.encode("utf-8")[:32]
name_bytes = name_bytes.ljust(32, b"\x00")
payload = struct.pack(
">B32sBBI",
admin & 0xFF,
name_bytes,
face_dir & 0xFF,
timeout & 0xFF,
itg_param & 0xFFFFFFFF,
)
return pack_frame(CMD_ENROLL_ITG, payload)
def build_delete_user(user_id: int) -> bytes:
return pack_frame(CMD_DELETE_USER, struct.pack("BB", (user_id>>8)&0xFF, user_id&0xFF))
def build_delete_all() -> bytes:
return pack_frame(CMD_DELETE_ALL)
def build_get_user_info(user_id: int) -> bytes:
return pack_frame(CMD_GET_USER_INFO, struct.pack("BB", (user_id>>8)&0xFF, user_id&0xFF))
def build_get_all_userid() -> bytes:
return pack_frame(CMD_GET_ALL_USERID)
def build_get_version() -> bytes:
return pack_frame(CMD_GET_VERSION)
def build_uvc_view(state: int) -> bytes:
return pack_frame(CMD_UVC_VIEW, struct.pack("B", state & 0xFF))
def build_face_view(state: int) -> bytes:
return pack_frame(CMD_FACE_VIEW, struct.pack("B", state & 0xFF))
def build_init_encryption(seed4: bytes, mode: int = 0) -> bytes:
if len(seed4) != 4:
raise ValueError("seed must be 4 bytes")
return pack_frame(CMD_INIT_ENCRYPTION, seed4 + bytes([mode & 0xFF]))
def build_enroll_with_photo_begin(photo_size: int) -> bytes:
# According to manual: Seq=0, Photo data=4-byte big-endian size
data = b"\x00\x00" + struct.pack(">I", photo_size)
return pack_frame(CMD_ENROLL_WITH_PHOTO, data)
def build_enroll_with_photo_chunk(seq: int, chunk: bytes) -> bytes:
# Seq starts from 1 and increases; MTU=246
data = struct.pack(">H", seq & 0xFFFF) + chunk
return pack_frame(CMD_ENROLL_WITH_PHOTO, data)
# ---- Parsers (Reply / Note / Image) ----
def parse_reply(data: bytes) -> dict:
if len(data) < 2:
return {"type": "REPLY", "error": "short"}
mid = data[0]
result = data[1]
rest = data[2:]
# 通用字段
info = {
"type": "REPLY",
"mid": mid,
"mid_name": CMD_NAMES.get(mid, f"0x{mid:02X}"),
"result": result,
"result_name": RESULT_NAMES.get(result, f"0x{result:02X}"),
"ok": (result == 0), # 成功标志
}
# ========== 分支解析 ==========
if mid == CMD_VERIFY and len(rest) >= 36:
uid = (rest[0] << 8) | rest[1]
name = rest[2:34].rstrip(b"\x00").decode("utf-8", errors="ignore")
admin = rest[34]
unlock = rest[35]
info.update({
"user_id": uid,
"user_name": name,
"admin": admin,
"unlock_status": unlock,
})
elif mid in (CMD_ENROLL, 0x1D, CMD_ENROLL_ITG) and len(rest) >= 3:
uid = (rest[0] << 8) | rest[1]
face_dir = rest[2]
info.update({"user_id": uid, "face_direction": face_dir})
elif mid == CMD_GET_STATUS and len(rest) >= 1:
status = rest[0]
status_map = {0: "空闲", 1: "录入中", 2: "验证中"}
info.update({"status": status, "status_name": status_map.get(status, f"0x{status:02X}")})
elif mid == CMD_GET_USER_INFO and len(rest) >= 35:
uid = (rest[0] << 8) | rest[1]
name = rest[2:34].decode("ascii", errors="ignore")
admin = rest[34]
info.update({"user_id": uid, "user_name": name, "admin": admin})
elif mid == CMD_GET_ALL_USERID and len(rest) >= 1:
n = rest[0]
ids = [(rest[i] << 8) | rest[i + 1] for i in range(1, 1 + 2 * n, 2) if i + 1 < len(rest)]
info.update({"count": n, "user_ids": ids})
elif mid == CMD_GET_VERSION:
info["version_str"] = rest.decode("ascii", errors="ignore")
elif mid == CMD_LED_CONTROL and len(rest) >= 1:
led_state = rest[0]
led_map = {0: "", 1: ""}
info.update({"led_state": led_state, "led_state_name": led_map.get(led_state, f"0x{led_state:02X}")})
elif mid == CMD_ENROLL_WITH_PHOTO:
if len(rest) >= 2:
seq = (rest[0] << 8) | rest[1]
info["seq"] = seq
if len(rest) >= 6:
uid = (rest[2] << 8) | rest[3]
info["user_id"] = uid
# 自动生成提示消息
if info["ok"]:
if mid == CMD_VERIFY:
info["message"] = (
f"{info['mid_name']} 成功 - 用户ID: {info['user_id']}"
)
pass
if mid == CMD_FACE_VIEW or mid == CMD_UVC_VIEW:
info["message"] = f"{info['mid_name']} 成功"
pass
else:
info["message"] = f"{info['mid_name']} 成功"
inform_box : DialogInform = DialogInform()
inform_box.information(f"{info['mid_name']}", f"{info['mid_name']}成功")
else:
info["message"] = f"{info['mid_name']} 失败: {info['result_name']}"
inform_box : DialogInform = DialogInform()
inform_box.information(f"{info['mid_name']}", f"{info['result_name']} ")
return info
def parse_note(data: bytes) -> dict:
"""
NOTE 消息解析:
- 保留工程信息(方便调试)
- 提供用户可读提示(仅在已知状态下提示)
"""
if len(data) < 1:
return {"type": "NOTE", "error": "short"}
nid = data[0]
rest = data[1:]
info = {
"type": "NOTE",
"nid": nid,
"nid_name": NOTE_NAMES.get(nid, f"0x{nid:02X}")
}
user_message = None
# ---------- 人脸状态 ----------
if nid == NID_FACE_STATE and len(rest) >= 16:
# state 用 1 个字节就够,第二个字节是保留/扩展
state = rest[0]
sub_state = rest[1]
left = int.from_bytes(rest[2:4], "big", signed=True)
top = int.from_bytes(rest[4:6], "big", signed=True)
right = int.from_bytes(rest[6:8], "big", signed=True)
bottom = int.from_bytes(rest[8:10], "big", signed=True)
yaw = int.from_bytes(rest[10:12], "big", signed=True)
pitch = int.from_bytes(rest[12:14], "big", signed=True)
roll = int.from_bytes(rest[14:16], "big", signed=True)
info.update({
"state": state,
"sub_state": sub_state,
"left": left, "top": top, "right": right, "bottom": bottom,
"yaw": yaw, "pitch": pitch, "roll": roll
})
# 只处理已知状态
state_messages = {
0: "人脸检测正常,请保持姿势",
1: "未检测到人脸,请面对摄像头",
6: "请靠近摄像头",
7: "请稍微远离摄像头",
8: "检测到遮挡,请移开遮挡物",
9: "请正对摄像头",
}
if state in state_messages:
user_message = state_messages[state]
# 如果是正常状态,可以补充角度提示
if state == 0:
if yaw > 15:
user_message += "(请把头向左转一些)"
elif yaw < -15:
user_message += "(请把头向右转一些)"
elif pitch > 15:
user_message += "(请抬起头)"
elif pitch < -15:
user_message += "(请低下头)"
# ---------- 其他 NOTE ----------
elif nid == NID_READY:
user_message = "设备已就绪,可以开始人脸识别"
elif nid == NID_UNKNOWNERROR:
user_message = "发生未知错误,请重试"
elif nid == NID_OTA_DONE:
user_message = "升级完成,请重启设备"
elif nid == NID_EYE_STATE:
user_message = "检测到眼睛状态变化"
if user_message:
info["user_message"] = user_message
return info
def parse_image(data: bytes) -> dict:
return {"type":"IMAGE","jpeg":data}

View File

@ -149,7 +149,8 @@ class system_parameter :
default_config = { default_config = {
'screen_blanking_time': '360', 'screen_blanking_time': '360',
'system_password': '2008', 'system_password': '2008',
'language': 'zh_CN' 'language': 'zh_CN',
"facerecognition_timeout": '10',
} }
# 如果配置文件存在,加载配置 # 如果配置文件存在,加载配置
@ -161,6 +162,7 @@ class system_parameter :
self.screen_blanking_time = system_param.get('blanking_time', default_config['screen_blanking_time']) self.screen_blanking_time = system_param.get('blanking_time', default_config['screen_blanking_time'])
self.system_password = system_param.get('password', default_config['system_password']) self.system_password = system_param.get('password', default_config['system_password'])
self.language = system_param.get('language', default_config['language']) self.language = system_param.get('language', default_config['language'])
self.facerecognition_timeout = system_param.get('facerecognition_timeout', default_config['facerecognition_timeout'])
except (configparser.Error, KeyError) as e: except (configparser.Error, KeyError) as e:
# 处理读取配置文件时的错误 # 处理读取配置文件时的错误
print(f"读取配置错误: {e}。使用默认设置。") print(f"读取配置错误: {e}。使用默认设置。")
@ -174,6 +176,7 @@ class system_parameter :
self.screen_blanking_time = default_config['screen_blanking_time'] self.screen_blanking_time = default_config['screen_blanking_time']
self.system_password = default_config['system_password'] self.system_password = default_config['system_password']
self.language = default_config['language'] self.language = default_config['language']
self.facerecognition_timeout = default_config['facerecognition_timeout']
def write_to_ini(self): def write_to_ini(self):
"""将默认配置写入ini文件。""" """将默认配置写入ini文件。"""
@ -181,7 +184,8 @@ class system_parameter :
config['SystemParam'] = { config['SystemParam'] = {
'blanking_time': self.screen_blanking_time, 'blanking_time': self.screen_blanking_time,
'password': self.system_password, 'password': self.system_password,
'language': self.language 'language': self.language,
'facerecognition_timeout': self.facerecognition_timeout
} }
with open("system_parameter.ini", 'w') as configfile: with open("system_parameter.ini", 'w') as configfile:
config.write(configfile) config.write(configfile)
@ -208,12 +212,21 @@ class system_parameter :
def get_system_language(self): def get_system_language(self):
return self.language return self.language
def set_verify_timeout(self, timeout):
self.facerecognition_timeout = timeout
self.write_to_ini()
def get_verify_timeout(self):
return int(self.facerecognition_timeout)
# 向文件存储系统信息 # 向文件存储系统信息
def write_to_ini(self): def write_to_ini(self):
system_param = configparser.ConfigParser() system_param = configparser.ConfigParser()
system_param['SystemParam'] = {'language': self.language, system_param['SystemParam'] = {'language': self.language,
'blanking_time': self.screen_blanking_time, 'blanking_time': self.screen_blanking_time,
'password': self.system_password} 'password': self.system_password,
'facerecognition_timeout': self.facerecognition_timeout}
with open('system_parameter.ini', 'w') as f: with open('system_parameter.ini', 'w') as f:
system_param.write(f) system_param.write(f)

View File

@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogInform</class>
<widget class="QDialog" name="DialogInform">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>632</width>
<height>483</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(0, 0, 0, 0);</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>200</x>
<y>270</y>
<width>381</width>
<height>31</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::NoButton</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>90</x>
<y>0</y>
<width>411</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<family>Microsoft YaHei UI</family>
<pointsize>16</pointsize>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(255, 170, 0);
font: 16pt &quot;Microsoft YaHei UI&quot;;</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QTableWidget" name="table">
<property name="geometry">
<rect>
<x>60</x>
<y>70</y>
<width>521</width>
<height>295</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<column>
<property name="text">
<string>用户ID</string>
</property>
</column>
<column>
<property name="text">
<string>用户名</string>
</property>
</column>
<column>
<property name="text">
<string>注册时间</string>
</property>
</column>
</widget>
<widget class="QPushButton" name="btn_del_all">
<property name="geometry">
<rect>
<x>388</x>
<y>430</y>
<width>106</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>删除所有用户</string>
</property>
</widget>
<widget class="QPushButton" name="btn_delete">
<property name="geometry">
<rect>
<x>50</x>
<y>430</y>
<width>107</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>删除选中用户</string>
</property>
</widget>
<widget class="QPushButton" name="btn_refresh">
<property name="geometry">
<rect>
<x>163</x>
<y>430</y>
<width>106</width>
<height>23</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(0, 0, 0);</string>
</property>
<property name="text">
<string>刷新</string>
</property>
</widget>
<widget class="QPushButton" name="btn_get">
<property name="geometry">
<rect>
<x>275</x>
<y>430</y>
<width>107</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>获取设备用户列表</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogInform</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DialogInform</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogInform</class>
<widget class="QDialog" name="DialogInform">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>587</width>
<height>290</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">border:none;
background-color: rgba(0, 0, 0, 0);</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>110</x>
<y>160</y>
<width>381</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::NoButton</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>75</x>
<y>97</y>
<width>411</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<family>Microsoft YaHei UI</family>
<pointsize>16</pointsize>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgba(85, 170, 127,0);
color: rgb(255, 170, 0);
font: 16pt &quot;Microsoft YaHei UI&quot;;</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="BG">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>731</width>
<height>291</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>img/infrom.png</pixmap>
</property>
</widget>
<zorder>BG</zorder>
<zorder>buttonBox</zorder>
<zorder>label</zorder>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogInform</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>DialogInform</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>EnrollDialog</class>
<widget class="QDialog" name="EnrollDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>254</height>
</rect>
</property>
<property name="windowTitle">
<string>ENROLL_ITG_SINGLE</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="lbl_admin">
<property name="text">
<string>是否管理员:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="cb_admin">
<item>
<property name="text">
<string>0 - 普通用户</string>
</property>
</item>
<item>
<property name="text">
<string>1 - 管理员</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_name">
<property name="text">
<string>用户名:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="le_name"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_dir">
<property name="text">
<string>人脸方向:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QGroupBox" name="group_dir">
<property name="title">
<string>人脸方向</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="chk_mid">
<property name="text">
<string>MID</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="chk_right">
<property name="text">
<string>RIGHT</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QCheckBox" name="chk_left">
<property name="text">
<string>LEFT</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="chk_down">
<property name="text">
<string>DOWN</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="chk_up">
<property name="text">
<string>UP</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_timeout">
<property name="text">
<string>超时时间(秒):</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="sb_timeout">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>300</number>
</property>
<property name="value">
<number>10</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbl_itg">
<property name="text">
<string>ITG 参数:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="le_itg">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QPushButton" name="btn_ok">
<property name="text">
<string>发送</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1 @@
1,1,2025-09-15 15:31:32
1 1 1 2025-09-15 15:31:32

Some files were not shown because too many files have changed in this diff Show More