@AlexSer

Как обработать поток данных?

Всем привет! Нужна помощь в обрезке данных.
Устройство передает данные частями. В конечном виде когда поступает полный поток 1 цикла данных выглядит так:
<!--:Begin:Chksum:1:-->
<!--:Begin:Msg:6:0:-->
<sample>
<ver>1.1</ver>
<instrinfo>
<p><n>PRDI</n><v>BM800</v></p>
<p><n>FIWV</n><v>2.8.1</v></p>
<p><n>SNO</n><v>21754</v></p>
<p><n>BRND</n><v>S</v></p>
<p><n>IAPL</n><v>H</v></p>
<p><n>IID</n></p>
<p><n>LMOF</n><v>1</v></p>
</instrinfo>
<smpinfo>
<p><n>ID</n><v>0184835</v></p>
<p><n>SEQ</n><v>2235</v></p>
<p><n>DATE</n><v>2018-04-20T09:44:35</v></p>
<p><n>OPID</n></p>
<p><n>APNU</n><v>1</v></p>
<p><n>APNA</n><v>BLOOD</v></p>
<p><n>ASPM</n><v>OT</v></p>
<p><n>ASPS</n><v>1</v></p>
<p><n>SORC</n><v>0</v></p>
<p><n>BLMD</n><v>0</v></p>
<p><n>BLNK</n><v>0</v></p>
<p><n>STYP</n><v>0</v></p>
<p><n>RGED</n></p>
<p><n>RGEL</n></p>
<p><n>RGEC</n></p>
<p><n>RDLI</n><v>1610-658</v></p>
<p><n>RDPN</n><v>605</v></p>
<p><n>RDED</n><v>2019-10-30</v></p>
<p><n>RLLI</n><v>1709-816</v></p>
<p><n>RLPN</n><v>708</v></p>
<p><n>RLED</n><v>2020-09-27</v></p>
<p><n>RCLI</n></p>
<p><n>RCPN</n></p>
<p><n>RCED</n></p>
<p><n>RELI</n></p>
<p><n>REPN</n></p>
<p><n>REED</n></p>
<p><n>RPD</n><v>30</v></p>
<p><n>RPDS</n><v>1</v></p>
<p><n>RPDL</n><v>15</v></p>
<p><n>RPDH</n><v>30</v></p>
<p><n>RPDF</n><v>27</v></p>
<p><n>MBTE</n><v>27.3</v></p>
<p><n>MCVO</n><v>+0.0</v></p>
<p><n>WDDM</n><v>0</v></p>
<p><n>WDDP</n><v>45</v></p>
<p><n>WDMS</n><v>2</v></p>
<p><n>WDMA</n><v>2</v></p>
<p><n>WDFB</n><v>0</v></p>
<p><n>WDLL</n></p>
<p><n>WDLH</n></p>
<p><n>WDCL</n></p>
<p><n>WDCH</n></p>
<p><n>WLGL</n></p>
<p><n>WLGH</n></p>
<p><n>WDIL</n><v>140</v></p>
<p><n>WDIH</n><v>180</v></p>
<p><n>WDOM</n><v>0</v></p>
<p><n>WDWD</n><v>2</v></p>
<p><n>XLT</n></p>
<p><n>EOMD</n></p>
<p><n>EODL</n></p>
<p><n>EODH</n></p>
<p><n>EOAC</n></p>
<p><n>EOWC</n></p>
<p><n>XEIT</n></p>
<p><n>EASS</n></p>
<p><n>CAPL</n></p>
<p><n>CLVL</n></p>
<p><n>CEXP</n></p>
<p><n>CEXT</n></p>
<p><n>EXCL</n></p>
<p><n>ASWP</n></p>
<p><n>ID2</n></p>
</smpinfo>
<smpresults>
<p><n>RBC</n><v>4.53</v><l>3.50</l><h>5.50</h></p>
<p><n>MCV</n><v>76.9</v><l>75.0</l><h>100.0</h></p>
<p><n>HCT</n><v>34.9</v><l>35.0</l><h>55.0</h></p>
<p><n>MCH</n><v>28.2</v><l>25.0</l><h>35.0</h></p>
<p><n>MCHC</n><v>36.6</v><l>31.0</l><h>38.0</h></p>
<p><n>RDWR</n><v>13.8</v><l>11.0</l><h>16.0</h></p>
<p><n>RDWA</n><v>50.0</v><l>30.0</l><h>150.0</h></p>
<p><n>PLT</n><v>314</v><l>100</l><h>400</h></p>
<p><n>MPV</n><v>8.0</v><l>8.0</l><h>11.0</h></p>
<p><n>PCT</n><v>0.25</v><l>0.01</l><h>9.99</h></p>
<p><n>PDW</n><v>10.9</v><l>0.1</l><h>99.9</h></p>
<p><n>LPCR</n><v>14.7</v><l>0.1</l><h>99.9</h></p>
<p><n>HGB</n><v>12.8</v><l>11.5</l><h>16.5</h></p>
<p><n>WBC</n><v>4.9</v><l>3.5</l><h>10.0</h></p>
<p><n>LA</n><v>2.7</v><l>0.5</l><h>5.0</h></p>
<p><n>MA</n><v>0.6</v><l>0.1</l><h>1.5</h></p>
<p><n>GA</n><v>1.6</v><l>1.2</l><h>8.0</h></p>
<p><n>LR</n><v>55.0</v><l>15.0</l><h>50.0</h></p>
<p><n>MR</n><v>12.5</v><l>2.0</l><h>15.0</h></p>
<p><n>GR</n><v>32.5</v><l>35.0</l><h>80.0</h></p>
</smpresults>
<tparams>
<p><n>RCT</n><v>14884</v></p>
<p><n>WCT</n><v>10361</v></p>
<p><n>aspt</n><v>1501</v></p>
</tparams>
</sample>
<!--:End:Msg:6:0:-->
<!--:End:Chksum:1:137:125:-->

Но поток данных идет не равномерно, то есть сервер получает половину послания например:
<!--:Begin:Chksum:1:-->
<!--:Begin:Msg:6:0:-->
<sample>
<ver>1.1</ver>
<instrinfo>
<p><n>PRDI</n><v>BM800</v></p>
<p><n>FIWV</n><v>2.8.1</v></p>
<p><n>SNO</n><v>21754</v></p>
<p><n>BRND</n><v>S</v></p>
<p><n>IAPL</n><v>H</v></p>
<p><n>IID</n></p>
<p><n>LMOF</n><v>1</v></p>
</instrinfo>
<smpinfo>
<p><n>ID</n><v>0184835</v></p>
<p><n>SEQ</n><v>2235</v></p>
<p><n>DATE</n><v>2018-04-20T09:44:35</v></p>
<p><n>OPID</n></p>
<p><n>APNU</n><v>1</v></p>
<p><n>APNA</n><v>BLOOD</v></p>
<p><n>ASPM</n><v>OT</v></p>
<p><n>ASPS</n><v>1</v></p>
<p><n>SORC</n><v>0</v></p>
<p><n>BLMD</n><v>0</v></p>
<p><n>BLNK</n><v>0</v></p>
<p><n>STYP</n><v>0</v></p>
<p><n>RGED</n></p>
<p><n>RGEL</n></p>
<p><n>RGEC</n></p>
<p><n>RDLI</n><v>1610-658</v></p>
<p><n>RDPN</n><v>605</v></p>
<p><n>RDED</n><v>2019-10-30</v></p>
<p><n>RLLI</n><v>1709-816</v></p>
<p><n>RLPN</n><v>708</v></p>
<p><n>RLED</n><v>2020-09-27</v></p>
<p><n>RCLI</n></p>
<p><n>RCPN</n></p>
<p><n>RCED</n></p>
<p><n>RELI</n></p>
<p><n>REPN</n></p>
<p><n>REED</n></p>
<p><n>RPD</n><v>30</v></p>
<p><n>RPDS</n><v>1</v></p>
<p><n>RPDL</n><v>15</v></p>
<p><n>RPDH</n><v>30</v></p>
<p><n>RPDF</n><v>27</v></p>
<p><n>MBTE</n><v>27.3</v></p>
<p><n>MCVO</n><v>+0.0</v></p>
<p><n>WDDM</n><v>0</v></p>


и потом следующий поток данных мб выглядеть так:
<p><n>WDDP</n><v>45</v></p>
<p><n>WDMS</n><v>2</v></p>
<p><n>WDMA</n><v>2</v></p>
<p><n>WDFB</n><v>0</v></p>
<p><n>WDLL</n></p>
<p><n>WDLH</n></p>
<p><n>WDCL</n></p>
<p><n>WDCH</n></p>
<p><n>WLGL</n></p>
<p><n>WLGH</n></p>
<p><n>WDIL</n><v>140</v></p>
<p><n>WDIH</n><v>180</v></p>
<p><n>WDOM</n><v>0</v></p>
<p><n>WDWD</n><v>2</v></p>
<p><n>XLT</n></p>
<p><n>EOMD</n></p>
<p><n>EODL</n></p>
<p><n>EODH</n></p>
<p><n>EOAC</n></p>
<p><n>EOWC</n></p>
<p><n>XEIT</n></p>
<p><n>EASS</n></p>
<p><n>CAPL</n></p>
<p><n>CLVL</n></p>
<p><n>CEXP</n></p>
<p><n>CEXT</n></p>
<p><n>EXCL</n></p>
<p><n>ASWP</n></p>
<p><n>ID2</n></p>
</smpinfo>
<smpresults>
<p><n>RBC</n><v>4.53</v><l>3.50</l><h>5.50</h></p>
<p><n>MCV</n><v>76.9</v><l>75.0</l><h>100.0</h></p>
<p><n>HCT</n><v>34.9</v><l>35.0</l><h>55.0</h></p>
<p><n>MCH</n><v>28.2</v><l>25.0</l><h>35.0</h></p>
<p><n>MCHC</n><v>36.6</v><l>31.0</l><h>38.0</h></p>
<p><n>RDWR</n><v>13.8</v><l>11.0</l><h>16.0</h></p>
<p><n>RDWA</n><v>50.0</v><l>30.0</l><h>150.0</h></p>
<p><n>PLT</n><v>314</v><l>100</l><h>400</h></p>
<p><n>MPV</n><v>8.0</v><l>8.0</l><h>11.0</h></p>
<p><n>PCT</n><v>0.25</v><l>0.01</l><h>9.99</h></p>
<p><n>PDW</n><v>10.9</v><l>0.1</l><h>99.9</h></p>
<p><n>LPCR</n><v>14.7</v><l>0.1</l><h>99.9</h></p>
<p><n>HGB</n><v>12.8</v><l>11.5</l><h>16.5</h></p>
<p><n>WBC</n><v>4.9</v><l>3.5</l><h>10.0</h></p>
<p><n>LA</n><v>2.7</v><l>0.5</l><h>5.0</h></p>
<p><n>MA</n><v>0.6</v><l>0.1</l><h>1.5</h></p>
<p><n>GA</n><v>1.6</v><l>1.2</l><h>8.0</h></p>
<p><n>LR</n><v>55.0</v><l>15.0</l><h>50.0</h></p>
<p><n>MR</n><v>12.5</v><l>2.0</l><h>15.0</h></p>
<p><n>GR</n><v>32.5</v><l>35.0</l><h>80.0</h></p>
</smpresults>
<tparams>
<p><n>RCT</n><v>14884</v></p>
<p><n>WCT</n><v>10361</v></p>
<p><n>aspt</n><v>1501</v></p>
</tparams>
</sample>
<!--:End:Msg:6:0:-->
<!--:End:Chksum:1:137:125:-->



<!--:Begin:Chksum:1:-->
<!--:Begin:Msg:6:0:-->
<sample>
<ver>1.1</ver>
<instrinfo>
<p><n>PRDI</n><v>BM800</v></p>
<p><n>FIWV</n><v>2.8.1</v></p>
<p><n>SNO</n><v>21754</v></p>
<p><n>BRND</n><v>S</v></p>
<p><n>IAPL</n><v>H</v></p>
<p><n>IID</n></p>
<p><n>LMOF</n><v>1</v></p>
</instrinfo>
<smpinfo>
<p><n>ID</n><v>0184835</v></p>
<p><n>SEQ</n><v>2235</v></p>
<p><n>DATE</n><v>2018-04-20T09:44:35</v></p>
<p><n>OPID</n></p>
<p><n>APNU</n><v>1</v></p>


Надо чтобы поток данных записывался, между Begin и end, для удобной встваки в бд:

  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы