ACAServer.drawio 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. <mxfile host="65bd71144e">
  2. <diagram name="Page-1" id="_q9Hk0N0-nweOAnfAhH3">
  3. <mxGraphModel dx="2338" dy="1064" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0">
  4. <root>
  5. <mxCell id="0"/>
  6. <mxCell id="1" parent="0"/>
  7. <mxCell id="PJICHrniSQ2v9oinf_Ty-1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="PJICHrniSQ2v9oinf_Ty-2" target="PJICHrniSQ2v9oinf_Ty-4" edge="1">
  8. <mxGeometry relative="1" as="geometry"/>
  9. </mxCell>
  10. <mxCell id="PJICHrniSQ2v9oinf_Ty-2" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;RecordThread&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;录音线程,获取到原始数据SrcData&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;" parent="1" vertex="1">
  11. <mxGeometry x="-278.75" y="90" width="175" height="90" as="geometry"/>
  12. </mxCell>
  13. <mxCell id="PJICHrniSQ2v9oinf_Ty-4" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;AssignSrcDataThread&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;数据分发线程,将获取到的录音数据整理分发,有如下两种方式&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1、直接实时分发&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2、整理成1秒的数据进行分发&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;" parent="1" vertex="1">
  14. <mxGeometry x="-45" y="90" width="222.5" height="90" as="geometry"/>
  15. </mxCell>
  16. <mxCell id="PJICHrniSQ2v9oinf_Ty-5" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="PJICHrniSQ2v9oinf_Ty-4" target="PJICHrniSQ2v9oinf_Ty-7" edge="1">
  17. <mxGeometry width="50" height="50" relative="1" as="geometry">
  18. <mxPoint y="260" as="sourcePoint"/>
  19. <mxPoint x="-140" y="330" as="targetPoint"/>
  20. <Array as="points"/>
  21. </mxGeometry>
  22. </mxCell>
  23. <mxCell id="PJICHrniSQ2v9oinf_Ty-7" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;CreateDBThread&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1、将1秒的数据计算成音量,给静音、过载、反相计算线程使用&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;" parent="1" vertex="1">
  24. <mxGeometry x="-40.620000000000005" y="225" width="213.75" height="115" as="geometry"/>
  25. </mxCell>
  26. <mxCell id="PJICHrniSQ2v9oinf_Ty-12" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;CreateRecordFileThread&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1、录音线程,实时录制长音频&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2、录制报警音频&lt;/div&gt;" style="whiteSpace=wrap;html=1;rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;" parent="1" vertex="1">
  27. <mxGeometry x="240" y="225" width="192.5" height="110" as="geometry"/>
  28. </mxCell>
  29. <mxCell id="PJICHrniSQ2v9oinf_Ty-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="PJICHrniSQ2v9oinf_Ty-4" target="PJICHrniSQ2v9oinf_Ty-12" edge="1">
  30. <mxGeometry width="50" height="50" relative="1" as="geometry">
  31. <mxPoint x="50" y="460" as="sourcePoint"/>
  32. <mxPoint x="100" y="410" as="targetPoint"/>
  33. </mxGeometry>
  34. </mxCell>
  35. <mxCell id="PJICHrniSQ2v9oinf_Ty-16" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;CalculateDBThread&lt;/span&gt;&lt;div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;计算音量线程,计算出静音、过载、反相的报警信息&lt;/div&gt;&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
  36. <mxGeometry x="-52.5" y="560" width="230" height="110" as="geometry"/>
  37. </mxCell>
  38. <mxCell id="PJICHrniSQ2v9oinf_Ty-21" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;NoiseDetectThread&lt;/span&gt;&lt;div style=&quot;line-height: 150%;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&quot;&gt;&lt;font&gt;&lt;span&gt;噪音检测线程&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;调用三方动态库进行检测&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
  39. <mxGeometry x="-294.38" y="560" width="206.25" height="110" as="geometry"/>
  40. </mxCell>
  41. <mxCell id="j5mIEffdRgkVqhNrF_-w-1" value="&lt;div&gt;&lt;div style=&quot;color: rgb(204, 204, 204); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; line-height: 22px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: rgb(78, 201, 176);&quot;&gt;CreateWAVThread&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1、创建n秒的wav文件,给一致性比较线程使用&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2、分离左右声道,给噪音检测线程使用&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;" parent="1" vertex="1">
  42. <mxGeometry x="-287.5" y="225" width="192.5" height="110" as="geometry"/>
  43. </mxCell>
  44. <mxCell id="j5mIEffdRgkVqhNrF_-w-2" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="PJICHrniSQ2v9oinf_Ty-4" target="j5mIEffdRgkVqhNrF_-w-1" edge="1">
  45. <mxGeometry width="50" height="50" relative="1" as="geometry">
  46. <mxPoint x="-230" y="420" as="sourcePoint"/>
  47. <mxPoint x="-180" y="370" as="targetPoint"/>
  48. </mxGeometry>
  49. </mxCell>
  50. <mxCell id="13" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="1">
  51. <mxGeometry width="50" height="50" relative="1" as="geometry">
  52. <mxPoint x="-320" y="380" as="sourcePoint"/>
  53. <mxPoint x="-320" y="380" as="targetPoint"/>
  54. <Array as="points">
  55. <mxPoint x="460" y="380"/>
  56. <mxPoint x="460" y="40"/>
  57. <mxPoint x="-320" y="40"/>
  58. </Array>
  59. </mxGeometry>
  60. </mxCell>
  61. <mxCell id="15" value="" style="shape=flexArrow;endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="19">
  62. <mxGeometry width="50" height="50" relative="1" as="geometry">
  63. <mxPoint x="-460" y="325" as="sourcePoint"/>
  64. <mxPoint x="-320" y="210" as="targetPoint"/>
  65. </mxGeometry>
  66. </mxCell>
  67. <mxCell id="19" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;ThreadManager&lt;/span&gt;&lt;div style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;录音管理线程,这个线程管理录音线程的创建和销毁,对比项线程会通知这个管理线程需要哪些录音通道,然后创建对应的录音线程,计算线程通过这里获取所需要的录音功能线程,从中获取数据&lt;/font&gt;&lt;/div&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;align=center;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
  68. <mxGeometry x="-714" y="140" width="300" height="150" as="geometry"/>
  69. </mxCell>
  70. <mxCell id="20" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;录音线程只有声卡信息,&lt;/font&gt;&lt;span style=&quot;font-size: 16px; background-color: transparent;&quot;&gt;&lt;font&gt;和对比项无关&lt;/font&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
  71. <mxGeometry x="-294.38" y="50" width="300" height="50" as="geometry"/>
  72. </mxCell>
  73. <mxCell id="22" value="&lt;span style=&quot;color: rgb(78, 201, 176); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space: pre;&quot;&gt;CompareItemThread&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;对比项线程&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1、这个线程开启计算线程,&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2、获取实时音量值,报警信息等,将其组合成数据通过MQTT发送出去&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;3、这里控制计算线程的检测时间段等功能&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
  74. <mxGeometry x="-620" y="560" width="225" height="130" as="geometry"/>
  75. </mxCell>
  76. <mxCell id="25" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="j5mIEffdRgkVqhNrF_-w-1" target="PJICHrniSQ2v9oinf_Ty-21">
  77. <mxGeometry relative="1" as="geometry">
  78. <mxPoint x="-278.75" y="490" as="sourcePoint"/>
  79. <mxPoint x="-178.75" y="490" as="targetPoint"/>
  80. </mxGeometry>
  81. </mxCell>
  82. <mxCell id="28" value="获取分离的&lt;div&gt;左右声道数据&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="25">
  83. <mxGeometry x="-0.0614" relative="1" as="geometry">
  84. <mxPoint y="-40" as="offset"/>
  85. </mxGeometry>
  86. </mxCell>
  87. <mxCell id="29" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-7" target="PJICHrniSQ2v9oinf_Ty-16">
  88. <mxGeometry relative="1" as="geometry">
  89. <mxPoint x="-80" y="440" as="sourcePoint"/>
  90. <mxPoint x="20" y="440" as="targetPoint"/>
  91. </mxGeometry>
  92. </mxCell>
  93. <mxCell id="30" value="获取计算完成的&lt;div&gt;音量值数据&lt;/div&gt;" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" connectable="0" vertex="1" parent="29">
  94. <mxGeometry relative="1" as="geometry">
  95. <mxPoint x="-2" y="10" as="offset"/>
  96. </mxGeometry>
  97. </mxCell>
  98. <mxCell id="31" value="" style="endArrow=classic;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="j5mIEffdRgkVqhNrF_-w-1" target="PJICHrniSQ2v9oinf_Ty-22">
  99. <mxGeometry relative="1" as="geometry">
  100. <mxPoint x="76" y="350" as="sourcePoint"/>
  101. <mxPoint x="73" y="570" as="targetPoint"/>
  102. <Array as="points">
  103. <mxPoint x="-140" y="510"/>
  104. <mxPoint x="180" y="510"/>
  105. </Array>
  106. </mxGeometry>
  107. </mxCell>
  108. <mxCell id="33" value="" style="endArrow=none;dashed=1;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-21" target="PJICHrniSQ2v9oinf_Ty-12">
  109. <mxGeometry width="50" height="50" relative="1" as="geometry">
  110. <mxPoint x="-50" y="500" as="sourcePoint"/>
  111. <mxPoint y="450" as="targetPoint"/>
  112. <Array as="points">
  113. <mxPoint x="-100" y="400"/>
  114. <mxPoint x="336" y="400"/>
  115. </Array>
  116. </mxGeometry>
  117. </mxCell>
  118. <mxCell id="35" value="" style="endArrow=none;dashed=1;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-16" target="PJICHrniSQ2v9oinf_Ty-12">
  119. <mxGeometry width="50" height="50" relative="1" as="geometry">
  120. <mxPoint x="140" y="510" as="sourcePoint"/>
  121. <mxPoint x="130" y="390" as="targetPoint"/>
  122. <Array as="points">
  123. <mxPoint x="120" y="400"/>
  124. <mxPoint x="336" y="400"/>
  125. </Array>
  126. </mxGeometry>
  127. </mxCell>
  128. <mxCell id="37" value="" style="endArrow=none;dashed=1;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-22" target="PJICHrniSQ2v9oinf_Ty-12">
  129. <mxGeometry width="50" height="50" relative="1" as="geometry">
  130. <mxPoint x="40" y="560" as="sourcePoint"/>
  131. <mxPoint x="340" y="340" as="targetPoint"/>
  132. <Array as="points">
  133. <mxPoint x="336" y="490"/>
  134. </Array>
  135. </mxGeometry>
  136. </mxCell>
  137. <mxCell id="38" value="开启或结束&lt;div&gt;报警录音&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
  138. <mxGeometry x="336.2475525499344" y="359.9999856666538" as="geometry"/>
  139. </mxCell>
  140. <mxCell id="39" value="获取wav文件地址" style="edgeLabel;resizable=0;html=1;;align=center;verticalAlign=middle;" connectable="0" vertex="1" parent="1">
  141. <mxGeometry x="170.0031400018288" y="509.9997468700874" as="geometry"/>
  142. </mxCell>
  143. <mxCell id="41" value="" style="endArrow=classic;startArrow=classic;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="22" target="PJICHrniSQ2v9oinf_Ty-21">
  144. <mxGeometry width="50" height="50" relative="1" as="geometry">
  145. <mxPoint x="-430" y="740" as="sourcePoint"/>
  146. <mxPoint x="-170" y="750" as="targetPoint"/>
  147. <Array as="points">
  148. <mxPoint x="-451" y="760"/>
  149. <mxPoint x="-191" y="760"/>
  150. </Array>
  151. </mxGeometry>
  152. </mxCell>
  153. <mxCell id="53" value="&lt;span style=&quot;color: rgb(18, 18, 18); font-size: 12px; background-color: rgb(211, 213, 214);&quot;&gt;获取噪音检测结果&lt;/span&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="41">
  154. <mxGeometry x="0.8029" y="2" relative="1" as="geometry">
  155. <mxPoint x="13" y="-3" as="offset"/>
  156. </mxGeometry>
  157. </mxCell>
  158. <mxCell id="42" value="" style="endArrow=classic;startArrow=classic;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="22" target="PJICHrniSQ2v9oinf_Ty-16">
  159. <mxGeometry width="50" height="50" relative="1" as="geometry">
  160. <mxPoint x="-390" y="850" as="sourcePoint"/>
  161. <mxPoint x="-340" y="800" as="targetPoint"/>
  162. <Array as="points">
  163. <mxPoint x="-451" y="760"/>
  164. <mxPoint x="63" y="760"/>
  165. </Array>
  166. </mxGeometry>
  167. </mxCell>
  168. <mxCell id="57" value="&lt;span style=&quot;color: rgb(18, 18, 18); font-size: 12px; background-color: rgb(211, 213, 214);&quot;&gt;获取静音、过载、反相结果&lt;/span&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="42">
  169. <mxGeometry x="0.893" y="-1" relative="1" as="geometry">
  170. <mxPoint as="offset"/>
  171. </mxGeometry>
  172. </mxCell>
  173. <mxCell id="43" value="" style="endArrow=classic;startArrow=classic;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="22" target="PJICHrniSQ2v9oinf_Ty-22">
  174. <mxGeometry width="50" height="50" relative="1" as="geometry">
  175. <mxPoint x="290" y="790" as="sourcePoint"/>
  176. <mxPoint x="340" y="740" as="targetPoint"/>
  177. <Array as="points">
  178. <mxPoint x="-451" y="760"/>
  179. <mxPoint x="370" y="760"/>
  180. </Array>
  181. </mxGeometry>
  182. </mxCell>
  183. <mxCell id="56" value="&lt;span style=&quot;color: rgb(18, 18, 18); font-size: 12px; background-color: rgb(211, 213, 214);&quot;&gt;获取一致性检测结果&lt;/span&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="43">
  184. <mxGeometry x="0.9067" relative="1" as="geometry">
  185. <mxPoint as="offset"/>
  186. </mxGeometry>
  187. </mxCell>
  188. <mxCell id="50" value="" style="endArrow=classic;html=1;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-7" target="22">
  189. <mxGeometry width="50" height="50" relative="1" as="geometry">
  190. <mxPoint x="-510" y="510" as="sourcePoint"/>
  191. <mxPoint x="-460" y="460" as="targetPoint"/>
  192. </mxGeometry>
  193. </mxCell>
  194. <mxCell id="51" value="获取实时计算的音量数据" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="50">
  195. <mxGeometry x="0.3216" y="-2" relative="1" as="geometry">
  196. <mxPoint x="-63" y="40" as="offset"/>
  197. </mxGeometry>
  198. </mxCell>
  199. <mxCell id="59" value="&lt;div&gt;&lt;div style=&quot;color: rgb(204, 204, 204); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; line-height: 22px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: rgb(78, 201, 176);&quot;&gt;ThreadCompareItemManager&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;对比项管理线程,定时获取数据库中的对比项信息,管理对比项&lt;/span&gt;&lt;/div&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
  200. <mxGeometry x="-670" y="820" width="267.5" height="120" as="geometry"/>
  201. </mxCell>
  202. <mxCell id="62" value="MQTT" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fontSize=24;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1">
  203. <mxGeometry x="-640" y="1030" width="120" height="80" as="geometry"/>
  204. </mxCell>
  205. <mxCell id="63" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=0.16;entryY=0.55;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="22" target="62">
  206. <mxGeometry relative="1" as="geometry">
  207. <mxPoint x="-290" y="590" as="sourcePoint"/>
  208. <mxPoint x="-770" y="1030" as="targetPoint"/>
  209. <Array as="points">
  210. <mxPoint x="-750" y="660"/>
  211. <mxPoint x="-750" y="880"/>
  212. <mxPoint x="-750" y="1074"/>
  213. </Array>
  214. </mxGeometry>
  215. </mxCell>
  216. <mxCell id="99" value="&lt;span&gt;&lt;font&gt;对比项信息,设置信息保留&lt;/font&gt;&lt;/span&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="63">
  217. <mxGeometry x="-0.7407" y="-1" relative="1" as="geometry">
  218. <mxPoint x="-13" y="52" as="offset"/>
  219. </mxGeometry>
  220. </mxCell>
  221. <mxCell id="65" value="" style="endArrow=classic;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.16;entryY=0.55;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="59" target="62">
  222. <mxGeometry relative="1" as="geometry">
  223. <mxPoint x="-570" y="1010" as="sourcePoint"/>
  224. <mxPoint x="-470" y="1010" as="targetPoint"/>
  225. <Array as="points">
  226. <mxPoint x="-750" y="880"/>
  227. <mxPoint x="-750" y="1074"/>
  228. </Array>
  229. </mxGeometry>
  230. </mxCell>
  231. <mxCell id="98" value="&lt;span&gt;&lt;font&gt;音量包&lt;/font&gt;&lt;/span&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="65">
  232. <mxGeometry x="-0.8299" y="-1" relative="1" as="geometry">
  233. <mxPoint as="offset"/>
  234. </mxGeometry>
  235. </mxCell>
  236. <mxCell id="67" value="&lt;div style=&quot;color: rgb(204, 204, 204); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; line-height: 22px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: rgb(78, 201, 176);&quot;&gt;RTPOneRoadThread&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;RTP发送数据线程,这个线程也是一个录音线程,RTP服务会设置客户端信息到这里,有客户端信息就接收分派线程的数据然后通过UDP发送给客户端&lt;/div&gt;" style="whiteSpace=wrap;html=1;rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;" vertex="1" parent="1">
  237. <mxGeometry x="230" y="80" width="192.5" height="110" as="geometry"/>
  238. </mxCell>
  239. <mxCell id="68" value="" style="endArrow=classic;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-4" target="67">
  240. <mxGeometry width="50" height="50" relative="1" as="geometry">
  241. <mxPoint x="380" y="190" as="sourcePoint"/>
  242. <mxPoint x="430" y="140" as="targetPoint"/>
  243. </mxGeometry>
  244. </mxCell>
  245. <mxCell id="73" value="" style="group" vertex="1" connectable="0" parent="1">
  246. <mxGeometry x="220" y="555" width="300" height="115" as="geometry"/>
  247. </mxCell>
  248. <mxCell id="PJICHrniSQ2v9oinf_Ty-22" value="&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; line-height: 22px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: Helvetica; font-size: 12px; text-align: left; white-space: normal;&quot;&gt;&lt;font&gt;一致性检测线程,调用第三方动态库检测主通道和次通道的一致性&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=light-dark(#000000,#000000);" parent="73" vertex="1">
  249. <mxGeometry width="300" height="115" as="geometry"/>
  250. </mxCell>
  251. <mxCell id="70" value="&lt;span style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space-collapse: preserve; background-color: light-dark(rgb(255, 255, 255), rgb(210, 210, 210));&quot;&gt;&lt;font style=&quot;color: light-dark(rgb(6, 112, 90), rgb(6, 112, 90));&quot;&gt;ConsistencyCompareThread&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="73">
  252. <mxGeometry x="35" width="230" height="30" as="geometry"/>
  253. </mxCell>
  254. <mxCell id="74" value="" style="group;" vertex="1" connectable="0" parent="1">
  255. <mxGeometry x="530" y="80" width="260" height="140" as="geometry"/>
  256. </mxCell>
  257. <mxCell id="75" value="" style="group;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" connectable="0" parent="74">
  258. <mxGeometry x="0.0015151515151519135" width="260" height="140" as="geometry"/>
  259. </mxCell>
  260. <mxCell id="71" value="1、RTP服务,监听客户端的连接,将客户端信息发送给RTPOneRoadThread线程&lt;div&gt;2、线程需要定时接收客户端心跳包,超时就踢客户端下线&lt;/div&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;align=center;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="75">
  261. <mxGeometry width="260" height="140" as="geometry"/>
  262. </mxCell>
  263. <mxCell id="72" value="&lt;div style=&quot;color: rgb(204, 204, 204); background-color: rgb(31, 31, 31); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; line-height: 22px; white-space-collapse: preserve;&quot;&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;RTPServer&lt;/span&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="75">
  264. <mxGeometry x="80.75757575757576" width="100" height="40" as="geometry"/>
  265. </mxCell>
  266. <mxCell id="76" value="" style="endArrow=classic;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="72" target="67">
  267. <mxGeometry relative="1" as="geometry">
  268. <mxPoint x="610" y="690" as="sourcePoint"/>
  269. <mxPoint x="710" y="690" as="targetPoint"/>
  270. </mxGeometry>
  271. </mxCell>
  272. <mxCell id="78" value="&lt;font&gt;客户端信息&lt;/font&gt;&lt;div&gt;&lt;font&gt;或心跳包&lt;/font&gt;&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="76">
  273. <mxGeometry x="-0.0223" y="2" relative="1" as="geometry">
  274. <mxPoint x="-30" y="-3" as="offset"/>
  275. </mxGeometry>
  276. </mxCell>
  277. <mxCell id="81" value="" style="endArrow=none;dashed=1;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="79" target="PJICHrniSQ2v9oinf_Ty-21">
  278. <mxGeometry width="50" height="50" relative="1" as="geometry">
  279. <mxPoint x="-130" y="810" as="sourcePoint"/>
  280. <mxPoint x="-220" y="810" as="targetPoint"/>
  281. <Array as="points">
  282. <mxPoint x="20" y="840"/>
  283. <mxPoint x="-140" y="840"/>
  284. </Array>
  285. </mxGeometry>
  286. </mxCell>
  287. <mxCell id="86" value="写入报警数据" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="81">
  288. <mxGeometry x="-0.1269" y="-2" relative="1" as="geometry">
  289. <mxPoint x="128" y="12" as="offset"/>
  290. </mxGeometry>
  291. </mxCell>
  292. <mxCell id="83" value="" style="group" vertex="1" connectable="0" parent="1">
  293. <mxGeometry x="-170" y="870" width="380" height="150" as="geometry"/>
  294. </mxCell>
  295. <mxCell id="79" value="&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 22px; white-space: pre;&quot;&gt;&lt;div style=&quot;scrollbar-color: rgb(75, 75, 75) rgb(27, 29, 30); font-family: Helvetica; white-space: normal;&quot;&gt;&lt;div style=&quot;text-align: left; scrollbar-color: rgb(75, 75, 75) rgb(27, 29, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 22px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: Helvetica; white-space: normal;&quot;&gt;&lt;font&gt;1、写数据库线程,这个线程接收各个计算线程发送过来的报警信息,将其写入数据库,单独有这个线程是为了防止网络差导致计算线程阻塞&lt;/font&gt;&lt;/span&gt;&lt;font&gt;&lt;span style=&quot;color: rgb(192, 192, 192); font-family: Helvetica; white-space: normal; background-color: transparent;&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;scrollbar-color: rgb(75, 75, 75) rgb(27, 29, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 22px; white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: Helvetica; white-space: normal; background-color: transparent;&quot;&gt;&lt;font&gt;2、这个线程也负责定期删除录音文件和报警音频文件,文件路径是从数据库获取到的,在这里获取文件路径比较方便&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;align=center;" vertex="1" parent="83">
  296. <mxGeometry width="380" height="150" as="geometry"/>
  297. </mxCell>
  298. <mxCell id="80" value="&lt;span style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 16px; white-space-collapse: preserve; background-color: light-dark(rgb(210, 210, 210), rgb(210, 210, 210));&quot;&gt;&lt;font style=&quot;color: light-dark(rgb(6, 112, 90), rgb(6, 112, 90));&quot;&gt;ThreadWriteDBManager&lt;/font&gt;&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=1;points=[];autosize=1;strokeColor=none;fillColor=none;movable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="83">
  299. <mxGeometry x="75" y="8" width="200" height="30" as="geometry"/>
  300. </mxCell>
  301. <mxCell id="84" value="" style="endArrow=none;dashed=1;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="79" target="PJICHrniSQ2v9oinf_Ty-16">
  302. <mxGeometry width="50" height="50" relative="1" as="geometry">
  303. <mxPoint x="40" y="840" as="sourcePoint"/>
  304. <mxPoint x="90" y="790" as="targetPoint"/>
  305. <Array as="points">
  306. <mxPoint x="20" y="840"/>
  307. <mxPoint x="120" y="840"/>
  308. </Array>
  309. </mxGeometry>
  310. </mxCell>
  311. <mxCell id="87" value="" style="endArrow=none;dashed=1;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="79" target="PJICHrniSQ2v9oinf_Ty-22">
  312. <mxGeometry width="50" height="50" relative="1" as="geometry">
  313. <mxPoint x="280" y="850" as="sourcePoint"/>
  314. <mxPoint x="330" y="800" as="targetPoint"/>
  315. <Array as="points">
  316. <mxPoint x="20" y="840"/>
  317. <mxPoint x="445" y="840"/>
  318. </Array>
  319. </mxGeometry>
  320. </mxCell>
  321. <mxCell id="93" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;1、绿色是录音线程,获取音频后稍加处理&lt;/font&gt;&lt;div style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;2、蓝色是计算线程,从录音线程获取处理好的数据进行计算&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;3、这两种线程都有对应的管理线程,由他们控制创建和销毁&lt;/font&gt;&lt;/div&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
  322. <mxGeometry x="360" y="990" width="400" height="60" as="geometry"/>
  323. </mxCell>
  324. <mxCell id="94" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1">
  325. <mxGeometry width="50" height="50" relative="1" as="geometry">
  326. <mxPoint x="-690" y="730" as="sourcePoint"/>
  327. <mxPoint x="-690" y="730" as="targetPoint"/>
  328. <Array as="points">
  329. <mxPoint x="-690" y="500"/>
  330. <mxPoint x="540" y="490"/>
  331. <mxPoint x="540" y="730"/>
  332. </Array>
  333. </mxGeometry>
  334. </mxCell>
  335. <mxCell id="95" value="" style="endArrow=classic;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="PJICHrniSQ2v9oinf_Ty-12" target="79">
  336. <mxGeometry width="50" height="50" relative="1" as="geometry">
  337. <mxPoint x="530" y="294.9999999999998" as="sourcePoint"/>
  338. <mxPoint x="450" y="970" as="targetPoint"/>
  339. <Array as="points">
  340. <mxPoint x="620" y="280"/>
  341. <mxPoint x="620" y="945"/>
  342. </Array>
  343. </mxGeometry>
  344. </mxCell>
  345. <mxCell id="96" value="写入录音文件信息" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="95">
  346. <mxGeometry x="-0.6136" relative="1" as="geometry">
  347. <mxPoint as="offset"/>
  348. </mxGeometry>
  349. </mxCell>
  350. <mxCell id="97" value="" style="shape=flexArrow;endArrow=classic;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="59">
  351. <mxGeometry width="50" height="50" relative="1" as="geometry">
  352. <mxPoint x="-560" y="790" as="sourcePoint"/>
  353. <mxPoint x="-536" y="730" as="targetPoint"/>
  354. </mxGeometry>
  355. </mxCell>
  356. <mxCell id="100" value="" style="endArrow=classic;html=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.375;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="59" target="22">
  357. <mxGeometry width="50" height="50" relative="1" as="geometry">
  358. <mxPoint x="-640" y="790" as="sourcePoint"/>
  359. <mxPoint x="-590" y="740" as="targetPoint"/>
  360. </mxGeometry>
  361. </mxCell>
  362. </root>
  363. </mxGraphModel>
  364. </diagram>
  365. </mxfile>