From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 docs/TapProject_代码结构.drawio |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 93 insertions(+), 0 deletions(-)

diff --git "a/docs/TapProject_\344\273\243\347\240\201\347\273\223\346\236\204.drawio" "b/docs/TapProject_\344\273\243\347\240\201\347\273\223\346\236\204.drawio"
new file mode 100644
index 0000000..f9304d6
--- /dev/null
+++ "b/docs/TapProject_\344\273\243\347\240\201\347\273\223\346\236\204.drawio"
@@ -0,0 +1,93 @@
+<mxfile host="Electron" modified="2026-09-10T00:00:00.000Z" agent="Codex" version="24.7.17" type="device">
+  <diagram id="tap-overview" name="01-鎬讳綋鍒嗗眰缁撴瀯">
+    <mxGraphModel dx="1680" dy="1188" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1680" pageHeight="1188" math="0" shadow="0" background="#FFFFFF">
+      <root>
+        <mxCell id="0"/>
+        <mxCell id="1" parent="0"/>
+        <mxCell id="p1_title" value="TapProject 浠g爜鎬讳綋鍒嗗眰缁撴瀯" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Microsoft YaHei;fontSize=18;fontStyle=1;fontColor=#17365D;" vertex="1" parent="1"><mxGeometry x="60" y="20" width="1180" height="36" as="geometry"/></mxCell>
+        <mxCell id="p1_subtitle" value="闈欐�佹簮鐮佸揩鐓э細45 涓唴閮ㄥ伐绋嬶綔.NET Framework 4.7.2锝滃疄绾匡紳杩愯/鎵胯浇閾捐矾锛岀伆鑹茶櫄绾匡紳缂栬瘧鎴栨鏋朵緷璧�" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#666666;" vertex="1" parent="1"><mxGeometry x="60" y="56" width="1500" height="24" as="geometry"/></mxCell>
+        <mxCell id="p1_host_layer" value="WPF 瀹夸富涓庡惎鍔ㄥ眰" style="swimlane;horizontal=1;startSize=36;rounded=1;whiteSpace=wrap;html=1;fillColor=#F4F8FC;strokeColor=#7EA6D8;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;fontColor=#17365D;" vertex="1" parent="1"><mxGeometry x="60" y="95" width="1560" height="185" as="geometry"/></mxCell>
+        <mxCell id="p1_app" value="&lt;b&gt;App / TestPlatform&lt;/b&gt;&lt;br&gt;鍗曞疄渚嬨�佹棩蹇椼�佽瑷�銆佽祫婧�&lt;br&gt;绋嬪簭闆嗚В鏋愪笌鍚姩" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#17365D;spacing=8;" vertex="1" parent="1"><mxGeometry x="95" y="145" width="285" height="95" as="geometry"/></mxCell>
+        <mxCell id="p1_login" value="&lt;b&gt;Login + UserInfo&lt;/b&gt;&lt;br&gt;SQLite 鐢ㄦ埛/瑙掕壊/鑿滃崟&lt;br&gt;鐢熸垚鏉冮檺涓婁笅鏂�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#17365D;spacing=8;" vertex="1" parent="1"><mxGeometry x="425" y="145" width="285" height="95" as="geometry"/></mxCell>
+        <mxCell id="p1_loader" value="&lt;b&gt;LoadingWindow + PluginLoader&lt;/b&gt;&lt;br&gt;鏉冮檺鑿滃崟鏍戙�佸弽灏勮杞� DLL&lt;br&gt;娉ㄥ叆鏃ュ織/閰嶇疆骞跺垵濮嬪寲" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#17365D;spacing=8;" vertex="1" parent="1"><mxGeometry x="755" y="145" width="320" height="95" as="geometry"/></mxCell>
+        <mxCell id="p1_host" value="&lt;b&gt;PanuonWindow + MainTabControl&lt;/b&gt;&lt;br&gt;IPluginContainer銆佽彍鍗曚笌椤电鎵胯浇&lt;br&gt;Active / DeActive / Close 鐢熷懡鍛ㄦ湡" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#17365D;spacing=8;" vertex="1" parent="1"><mxGeometry x="1120" y="145" width="450" height="95" as="geometry"/></mxCell>
+        <mxCell id="p1_plugin_layer" value="涓氬姟涓庡姛鑳芥彃浠跺眰" style="swimlane;horizontal=1;startSize=36;rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF9F0;strokeColor=#E6A23C;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;fontColor=#7F6000;" vertex="1" parent="1"><mxGeometry x="60" y="315" width="1560" height="300" as="geometry"/></mxCell>
+        <mxCell id="p1_burnin" value="&lt;b&gt;鑰佸寲涓讳笟鍔★紙鏍稿績锛�&lt;/b&gt;&lt;br&gt;&lt;br&gt;Plugin.BurnIn&lt;br&gt;鐐変綋/绌翠綅銆佹壂鐮併�丳LC銆丮ES&lt;br&gt;娴嬭瘯鐘舵�併�佹洸绾裤�丼QLite/CSV&lt;br&gt;&lt;br&gt;Plugin.CurrentSensorControl&lt;br&gt;Plugin.DOControl / DODriverControl" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4D6;strokeColor=#ED7D31;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#843C0C;spacing=10;" vertex="1" parent="1"><mxGeometry x="95" y="365" width="340" height="205" as="geometry"/></mxCell>
+        <mxCell id="p1_test_plugins" value="&lt;b&gt;娴嬭瘯鎵ц涓庣紪杈�&lt;/b&gt;&lt;br&gt;&lt;br&gt;Plugin.TsExecution&lt;br&gt;Plugin.StandardTest&lt;br&gt;Plugin.TestPlanEditor&lt;br&gt;Plugin.SeqEditor&lt;br&gt;Util.ManualDebug" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#D6B656;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#7F6000;spacing=10;" vertex="1" parent="1"><mxGeometry x="470" y="365" width="340" height="205" as="geometry"/></mxCell>
+        <mxCell id="p1_data_plugins" value="&lt;b&gt;鏁版嵁銆佺粨鏋滀笌鎶ュ憡&lt;/b&gt;&lt;br&gt;&lt;br&gt;Plugin.TestResult&lt;br&gt;Plugin.DataViewer / DataBoard&lt;br&gt;Plugin.QualityReport&lt;br&gt;HMI.DataViewer&lt;br&gt;HMI.LogViewer" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E2F0D9;strokeColor=#70AD47;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#375623;spacing=10;" vertex="1" parent="1"><mxGeometry x="845" y="365" width="340" height="205" as="geometry"/></mxCell>
+        <mxCell id="p1_manage_plugins" value="&lt;b&gt;绯荤粺绠$悊涓庡叾浠栨彃浠�&lt;/b&gt;&lt;br&gt;&lt;br&gt;Menu / Setting / Parameter&lt;br&gt;AlarmInfo / ModelManage&lt;br&gt;JarUI / UICollection&lt;br&gt;&lt;br&gt;鑿滃崟涓庣敤鎴锋潈闄愬喅瀹氬疄闄呰杞介泦鍚�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E4DFEC;strokeColor=#8064A2;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#4C3768;spacing=10;" vertex="1" parent="1"><mxGeometry x="1220" y="365" width="350" height="205" as="geometry"/></mxCell>
+        <mxCell id="p1_framework_layer" value="骞冲彴妗嗘灦涓庡叕鍏辫兘鍔涘眰" style="swimlane;horizontal=1;startSize=36;rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#7F8C8D;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;fontColor=#37474F;" vertex="1" parent="1"><mxGeometry x="60" y="650" width="1560" height="200" as="geometry"/></mxCell>
+        <mxCell id="p1_core" value="&lt;b&gt;HMI.Core&lt;/b&gt;&lt;br&gt;IPlugin 濂戠害銆佸疄浣撱�佽缃�&lt;br&gt;Manager銆丼QLite銆佽矾寰�/璇█" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E7E6E6;strokeColor=#7F8C8D;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#37474F;spacing=8;" vertex="1" parent="1"><mxGeometry x="95" y="700" width="280" height="105" as="geometry"/></mxCell>
+        <mxCell id="p1_base" value="&lt;b&gt;HMI.Base&lt;/b&gt;&lt;br&gt;PluginLoader&lt;br&gt;PluginControl / MaskControl" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E7E6E6;strokeColor=#7F8C8D;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#37474F;spacing=8;" vertex="1" parent="1"><mxGeometry x="405" y="700" width="260" height="105" as="geometry"/></mxCell>
+        <mxCell id="p1_ui" value="&lt;b&gt;HMI.UI / StdControl&lt;/b&gt;&lt;br&gt;鍏叡鎺т欢銆佹牱寮忋�佽浆鎹㈠櫒&lt;br&gt;WPF/WinForms 鎵胯浇" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E7E6E6;strokeColor=#7F8C8D;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#37474F;spacing=8;" vertex="1" parent="1"><mxGeometry x="695" y="700" width="280" height="105" as="geometry"/></mxCell>
+        <mxCell id="p1_util" value="&lt;b&gt;HMI.Util + SimpleUtil&lt;/b&gt;&lt;br&gt;閰嶇疆銆佹棩蹇椼�佷覆鍙c�丮SMQ&lt;br&gt;搴忓垪鍖栦笌閫氱敤鏁版嵁璁块棶" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E7E6E6;strokeColor=#7F8C8D;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#37474F;spacing=8;" vertex="1" parent="1"><mxGeometry x="1005" y="700" width="280" height="105" as="geometry"/></mxCell>
+        <mxCell id="p1_ts_support" value="&lt;b&gt;TsSupport / TapApi&lt;/b&gt;&lt;br&gt;ITestExecutionWrapper&lt;br&gt;TestStand / OpenTAP 閫傞厤" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E7E6E6;strokeColor=#7F8C8D;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#37474F;spacing=8;" vertex="1" parent="1"><mxGeometry x="1315" y="700" width="255" height="105" as="geometry"/></mxCell>
+        <mxCell id="p1_infra_layer" value="璁惧銆侀�氫俊銆佹暟鎹笌澶栭儴绯荤粺" style="swimlane;horizontal=1;startSize=36;rounded=1;whiteSpace=wrap;html=1;fillColor=#F2F8F8;strokeColor=#4F9DA6;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;fontColor=#1F4E5F;" vertex="1" parent="1"><mxGeometry x="60" y="890" width="1560" height="250" as="geometry"/></mxCell>
+        <mxCell id="p1_plc_adapter" value="&lt;b&gt;PLC 閫傞厤&lt;/b&gt;&lt;br&gt;PLCHelper / S7Driver" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DDEBF7;strokeColor=#5B9BD5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="100" y="945" width="300" height="65" as="geometry"/></mxCell>
+        <mxCell id="p1_plc_ext" value="瑗块棬瀛� S7 PLC / 鑰佸寲鐐夋帶鍒跺櫒" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B9BD5;dashed=1;fontFamily=Microsoft YaHei;fontSize=11;" vertex="1" parent="1"><mxGeometry x="100" y="1045" width="300" height="55" as="geometry"/></mxCell>
+        <mxCell id="p1_comm_adapter" value="&lt;b&gt;閫氫俊涓� I/O&lt;/b&gt;&lt;br&gt;OPC / Modbus TCP / DIO / TCP / Serial" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DDEBF7;strokeColor=#5B9BD5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="480" y="945" width="300" height="65" as="geometry"/></mxCell>
+        <mxCell id="p1_comm_ext" value="鎵爜鍣ㄣ�佷紶鎰熷櫒銆佹澘鍗′笌缃戠粶璁惧" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B9BD5;dashed=1;fontFamily=Microsoft YaHei;fontSize=11;" vertex="1" parent="1"><mxGeometry x="480" y="1045" width="300" height="55" as="geometry"/></mxCell>
+        <mxCell id="p1_exec_adapter" value="&lt;b&gt;娴嬭瘯鎵ц閫傞厤&lt;/b&gt;&lt;br&gt;TapWrapper / TeststandWrapper" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DDEBF7;strokeColor=#5B9BD5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="860" y="945" width="300" height="65" as="geometry"/></mxCell>
+        <mxCell id="p1_exec_ext" value="NI TestStand / OpenTAP锛堝閮ㄦ簮宸ョ▼褰撳墠缂哄け锛�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#C9A227;dashed=1;fontFamily=Microsoft YaHei;fontSize=11;" vertex="1" parent="1"><mxGeometry x="860" y="1045" width="300" height="55" as="geometry"/></mxCell>
+        <mxCell id="p1_data_adapter" value="&lt;b&gt;鏁版嵁涓庝紒涓氶泦鎴�&lt;/b&gt;&lt;br&gt;SQLite / CSV / Config / Log / HTTP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DDEBF7;strokeColor=#5B9BD5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="1240" y="945" width="300" height="65" as="geometry"/></mxCell>
+        <mxCell id="p1_data_ext" value="鏈湴鏂囦欢涓庢暟鎹簱 / MES 鏈嶅姟" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#5B9BD5;dashed=1;fontFamily=Microsoft YaHei;fontSize=11;" vertex="1" parent="1"><mxGeometry x="1240" y="1045" width="300" height="55" as="geometry"/></mxCell>
+        <mxCell id="p1_e1" value="鍚姩" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p1_app" target="p1_login"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e2" value="鐧诲綍鎴愬姛" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p1_login" target="p1_loader"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e3" value="瑁呰浇瀹屾垚" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p1_loader" target="p1_host"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e4" value="鎵胯浇涓庡垏鎹�" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p1_host" target="p1_plugin_layer"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e5" value="鎻掍欢濂戠害涓庡叕鍏辫兘鍔�" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;strokeColor=#808080;strokeWidth=1.5;dashed=1;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p1_plugin_layer" target="p1_framework_layer"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e6" value="閫傞厤涓庢寔涔呭寲" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;strokeColor=#808080;strokeWidth=1.5;dashed=1;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p1_framework_layer" target="p1_infra_layer"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4F9DA6;strokeWidth=1.5;" edge="1" parent="1" source="p1_plc_adapter" target="p1_plc_ext"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4F9DA6;strokeWidth=1.5;" edge="1" parent="1" source="p1_comm_adapter" target="p1_comm_ext"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4F9DA6;strokeWidth=1.5;" edge="1" parent="1" source="p1_exec_adapter" target="p1_exec_ext"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p1_e10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#4F9DA6;strokeWidth=1.5;" edge="1" parent="1" source="p1_data_adapter" target="p1_data_ext"><mxGeometry relative="1" as="geometry"/></mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="tap-runtime" name="02-杩愯鏃朵笌鑰佸寲涓婚摼璺�">
+    <mxGraphModel dx="1680" dy="1188" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1680" pageHeight="1188" math="0" shadow="0" background="#FFFFFF">
+      <root>
+        <mxCell id="0"/>
+        <mxCell id="1" parent="0"/>
+        <mxCell id="p2_title" value="TapProject 杩愯鏃惰杞戒笌鑰佸寲娴嬭瘯涓婚摼璺�" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Microsoft YaHei;fontSize=18;fontStyle=1;fontColor=#17365D;" vertex="1" parent="1"><mxGeometry x="60" y="20" width="1300" height="36" as="geometry"/></mxCell>
+        <mxCell id="p2_subtitle" value="鍏崇郴鏉ヨ嚜 App/Login/PluginLoader/MainTabControl 涓� Plugin.BurnIn銆丳lugin.TsSupport 鐨勯潤鎬佷唬鐮侊紱閮ㄧ讲閰嶇疆鍜岃澶囧弬鏁版湭鑱旀満楠岃瘉" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#666666;" vertex="1" parent="1"><mxGeometry x="60" y="56" width="1500" height="24" as="geometry"/></mxCell>
+        <mxCell id="p2_start_layer" value="A. 鍚姩銆佽璇佷笌鎻掍欢瑁呰浇锛堜粠宸﹀埌鍙筹級" style="swimlane;horizontal=1;startSize=36;rounded=1;whiteSpace=wrap;html=1;fillColor=#F4F8FC;strokeColor=#7EA6D8;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;fontColor=#17365D;" vertex="1" parent="1"><mxGeometry x="60" y="100" width="1560" height="335" as="geometry"/></mxCell>
+        <mxCell id="p2_app" value="&lt;b&gt;App&lt;/b&gt;&lt;br&gt;鍗曞疄渚嬩繚鎶�&lt;br&gt;鏃ュ織/璇█/璧勬簮鍒濆鍖�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="90" y="175" width="215" height="105" as="geometry"/></mxCell>
+        <mxCell id="p2_login" value="&lt;b&gt;Login&lt;/b&gt;&lt;br&gt;鏍¢獙鐢ㄦ埛&lt;br&gt;鏌ヨ瑙掕壊涓庤彍鍗曟潈闄�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="345" y="175" width="215" height="105" as="geometry"/></mxCell>
+        <mxCell id="p2_user" value="&lt;b&gt;UserInfo&lt;/b&gt;&lt;br&gt;Permissions&lt;br&gt;AllPermissions" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="600" y="175" width="200" height="105" as="geometry"/></mxCell>
+        <mxCell id="p2_loading" value="&lt;b&gt;LoadingWindow&lt;/b&gt;&lt;br&gt;AlarmUtil.Init&lt;br&gt;PluginLoader.LoadMenuAndPlugin" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="840" y="175" width="250" height="105" as="geometry"/></mxCell>
+        <mxCell id="p2_reflect" value="&lt;b&gt;鍙嶅皠瑁呰浇&lt;/b&gt;&lt;br&gt;Assembly.LoadFrom&lt;br&gt;Activator.CreateInstance" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="1130" y="175" width="220" height="105" as="geometry"/></mxCell>
+        <mxCell id="p2_host" value="&lt;b&gt;PanuonWindow&lt;/b&gt;&lt;br&gt;MainTabControl&lt;br&gt;Active / DeActive / Close" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D9EAF7;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="1390" y="175" width="195" height="105" as="geometry"/></mxCell>
+        <mxCell id="p2_sqlite" value="&lt;b&gt;SQLite database.db&lt;/b&gt;&lt;br&gt;user / role / menu / permission 鍏崇郴" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E2F0D9;strokeColor=#70AD47;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="345" y="330" width="455" height="70" as="geometry"/></mxCell>
+        <mxCell id="p2_start_e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;" edge="1" parent="1" source="p2_app" target="p2_login"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_start_e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;" edge="1" parent="1" source="p2_login" target="p2_user"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_start_e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;" edge="1" parent="1" source="p2_user" target="p2_loading"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_start_e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;" edge="1" parent="1" source="p2_loading" target="p2_reflect"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_start_e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#1F4E79;strokeWidth=2;" edge="1" parent="1" source="p2_reflect" target="p2_host"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_start_e6" value="璇诲彇" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#70AD47;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=0;entryX=0.5;entryY=1;" edge="1" parent="1" source="p2_sqlite" target="p2_login"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_burn_layer" value="B. Plugin.BurnIn 鑰佸寲娴嬭瘯涓婚摼璺�" style="swimlane;horizontal=1;startSize=36;rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF9F0;strokeColor=#E6A23C;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;fontColor=#7F6000;" vertex="1" parent="1"><mxGeometry x="60" y="470" width="1560" height="655" as="geometry"/></mxCell>
+        <mxCell id="p2_burnin" value="&lt;b&gt;BurnInUI&lt;/b&gt;&lt;br&gt;鑰佸寲鐐�/绌翠綅缂栨帓&lt;br&gt;鍚姩銆佸仠姝€�佺姸鎬佷笌鍛婅" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4D6;strokeColor=#ED7D31;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#843C0C;spacing=8;" vertex="1" parent="1"><mxGeometry x="90" y="545" width="260" height="115" as="geometry"/></mxCell>
+        <mxCell id="p2_engine" value="&lt;b&gt;ITestExecutionWrapper&lt;/b&gt;&lt;br&gt;鎸夊簭鍒楁墿灞曞悕閫夋嫨寮曟搸&lt;br&gt;.tapplan 鈫� OpenTAP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#D6B656;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#7F6000;spacing=8;" vertex="1" parent="1"><mxGeometry x="420" y="545" width="255" height="115" as="geometry"/></mxCell>
+        <mxCell id="p2_tap" value="&lt;b&gt;TapWrapper&lt;/b&gt;&lt;br&gt;TestPlanReader / Plan.Execute&lt;br&gt;StationGlobalsManager" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#D6B656;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="725" y="505" width="230" height="95" as="geometry"/></mxCell>
+        <mxCell id="p2_ts" value="&lt;b&gt;TeststandWrapper&lt;/b&gt;&lt;br&gt;NI AxApplicationMgr&lt;br&gt;Sequence / StationGlobals" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#D6B656;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="725" y="625" width="230" height="95" as="geometry"/></mxCell>
+        <mxCell id="p2_msg" value="&lt;b&gt;UIMessage 浜嬩欢鎬荤嚎&lt;/b&gt;&lt;br&gt;EventCode 10014&lt;br&gt;鏂规硶鐮佹洿鏂扮姸鎬�/璁℃暟/鏇茬嚎/鎻愮ず" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E4DFEC;strokeColor=#8064A2;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#4C3768;spacing=8;" vertex="1" parent="1"><mxGeometry x="1005" y="545" width="250" height="115" as="geometry"/></mxCell>
+        <mxCell id="p2_cells" value="&lt;b&gt;DataTable / SingleCell&lt;/b&gt;&lt;br&gt;鐐変綋涓庣┐浣嶆ā鍨�&lt;br&gt;鐘舵�併�佹潯鐮併�佹祴閲忓�笺�佸浘琛ㄦ暟鎹�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E2F0D9;strokeColor=#70AD47;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#375623;spacing=8;" vertex="1" parent="1"><mxGeometry x="1310" y="545" width="260" height="115" as="geometry"/></mxCell>
+        <mxCell id="p2_config" value="&lt;b&gt;浜у搧涓庤繍琛岄厤缃�&lt;/b&gt;&lt;br&gt;ParameterManager / ProductManager&lt;br&gt;Scanner.ini / Count.ini / 涓诲簭鍒�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E7E6E6;strokeColor=#7F8C8D;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="90" y="760" width="260" height="100" as="geometry"/></mxCell>
+        <mxCell id="p2_plc" value="&lt;b&gt;PLCHelper.S7Context&lt;/b&gt;&lt;br&gt;BurnInControler&lt;br&gt;鐐変綋銆佺┐浣嶄笌鍐峰嵈鐘舵�佽鍐�" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DDEBF7;strokeColor=#5B9BD5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="405" y="760" width="260" height="100" as="geometry"/></mxCell>
+        <mxCell id="p2_scan" value="&lt;b&gt;鎵爜涓� MES&lt;/b&gt;&lt;br&gt;SerialPort + 鏉$爜瑙f瀽&lt;br&gt;HTTP 鑾峰彇 PN / 杩囩珯鏍¢獙" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DDEBF7;strokeColor=#5B9BD5;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="720" y="790" width="260" height="100" as="geometry"/></mxCell>
+        <mxCell id="p2_output" value="&lt;b&gt;缁撴灉涓庡彲瑙嗗寲&lt;/b&gt;&lt;br&gt;SQLite / CSV / Count.ini&lt;br&gt;LiveCharts 鏇茬嚎銆佹祴璇曠粨鏋滀笌鎶ヨ" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E2F0D9;strokeColor=#70AD47;fontFamily=Microsoft YaHei;fontSize=11;spacing=8;" vertex="1" parent="1"><mxGeometry x="1310" y="760" width="260" height="100" as="geometry"/></mxCell>
+        <mxCell id="p2_ext_boundary" value="澶栭儴杩愯渚濊禆锛氳タ闂ㄥ瓙 PLC锝滀覆鍙f壂鐮佸櫒锝淢ES HTTP 鏈嶅姟锝淣I TestStand 鎴� OpenTAP 杩愯鏃躲�傚綋鍓嶆簮鐮佸揩鐓ф湭鍖呭惈 OpenTAP/UILib/UtilLib 澶栭儴婧愬伐绋嬶紝涓旀湭鍋氳澶囪仈鏈洪獙璇併��" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#C9A227;dashed=1;fontFamily=Microsoft YaHei;fontSize=11;fontColor=#7F6000;spacing=10;align=left;" vertex="1" parent="1"><mxGeometry x="90" y="985" width="1480" height="80" as="geometry"/></mxCell>
+        <mxCell id="p2_e1" value="鍒濆鍖栨墽琛岃鍥�" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#C65911;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p2_burnin" target="p2_engine"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e2" value="OpenTAP" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#C65911;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p2_engine" target="p2_tap"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e3" value="鍏朵粬搴忓垪" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#C65911;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p2_engine" target="p2_ts"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e4" value="缁熶竴浜嬩欢" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#8064A2;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p2_tap" target="p2_msg"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e5" value="缁熶竴浜嬩欢" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#8064A2;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p2_ts" target="p2_msg"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e6" value="鏇存柊妯″瀷" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#8064A2;strokeWidth=2;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="p2_msg" target="p2_cells"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e7" value="钀藉簱/瀵煎嚭" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#70AD47;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p2_cells" target="p2_output"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e8" value="璇诲彇" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#808080;strokeWidth=1.5;dashed=1;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=0;entryX=0.5;entryY=1;" edge="1" parent="1" source="p2_config" target="p2_burnin"><mxGeometry relative="1" as="geometry"/></mxCell>
+        <mxCell id="p2_e9" value="鎺у埗/閲囬泦" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p2_burnin" target="p2_plc"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="220" y="720"/><mxPoint x="535" y="720"/></Array></mxGeometry></mxCell>
+        <mxCell id="p2_e10" value="鏉$爜/杩囩珯" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;endFill=1;strokeColor=#5B9BD5;strokeWidth=1.5;fontFamily=Microsoft YaHei;fontSize=10;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="p2_burnin" target="p2_scan"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="220" y="735"/><mxPoint x="850" y="735"/></Array></mxGeometry></mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>

--
Gitblit v1.9.1