완전..완전..생초보입니다! <div><br></div> <div>제가 MFC라는 질량 유량계에서..1초마다 아두이노를 통해서 값을 받고 있는데요..</div> <div><br></div> <div>플로팅을 하기 위해서 파이썬으로 어찌어찌 코딩을 해서 1초마다 그 값을 텍스트 파일에 쓰게 해놨습니다.</div> <div><br></div> <div>근데 이게 문제가..실행시키고 한 20초가 지나니...elapsed time은 1초인데 체감 시간이 2초 정도로 계속 딜레이 되는겁니다..</div> <div><br></div> <div>텍스트 파일에 계속 데이터를 입력해서 용량이 커지니 얘가 열고 닫는 시간이 조금씩 느려지나 보다 생각했는데..</div> <div><br></div> <div>또 다음줄에 새로 덮어쓰기를 하면 1~19초 정도는 제대로 나오다가 20초 정도면 딜레이가 시작됩니다..</div> <div><br></div> <div>혹시 이런 현상을 해결할 수 있는 방법이 있을까요!?</div> <div><br></div> <div>코드는 다음과 같습니다..</div> <div><br></div> <div>-----------------------------------------------------</div> <div><div style="white-space:pre;height:14px;padding:0px 7px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;">import</span> serial</div> <div style="white-space:pre;height:14px;padding:0px 7px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;">import</span> matplotlib.pyplot as plt</div> <div style="white-space:pre;height:14px;padding:0px 7px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;">import</span> numpy as np</div> <div style="white-space:pre;height:14px;padding:0px 7px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;">import</span> matplotlib.animation as anim</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;">plt.<span class="cs-default-common-keyword0" style="color:#066de2;">close</span>(<span class="cs-default-common-string" style="color:#63a35c;">'all'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;">fig <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> plt.figure()</div> <div style="white-space:pre;height:14px;padding:0px 7px;">ax1 <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> fig.add_subplot(<span class="cs-default-common-number" style="color:#0099cc;">3</span>,<span class="cs-default-common-number" style="color:#0099cc;">1</span>,<span class="cs-default-common-number" style="color:#0099cc;">1</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;">ax2 <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> fig.add_subplot(<span class="cs-default-common-number" style="color:#0099cc;">3</span>,<span class="cs-default-common-number" style="color:#0099cc;">1</span>,<span class="cs-default-common-number" style="color:#0099cc;">2</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;">ax3 <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> fig.add_subplot(<span class="cs-default-common-number" style="color:#0099cc;">3</span>,<span class="cs-default-common-number" style="color:#0099cc;">1</span>,<span class="cs-default-common-number" style="color:#0099cc;">3</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;">serial_port <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-string" style="color:#63a35c;">'/dev/cu.usbmodem1441'</span>;</div> <div style="white-space:pre;height:14px;padding:0px 7px;">baud_rate <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-number" style="color:#0099cc;">38400</span>; <span class="cs-default-common-comment" style="color:#999999;">#In arduino, Serial.begin(baud_rate)</span></div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;">ser <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> serial.Serial(serial_port, baud_rate)</div> <div style="white-space:pre;height:14px;padding:0px 7px;">write_to_file_path <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-string" style="color:#63a35c;">"data_2.txt"</span>;</div> <div style="white-space:pre;height:14px;padding:0px 7px;"><span class="cs-default-common-comment" style="color:#999999;">#output_file = open(write_to_file_path, "w+");</span></div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;">lines <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> np.ones(<span class="cs-default-common-number" style="color:#0099cc;">100</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;">etime <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>[]</div> <div style="white-space:pre;height:14px;padding:0px 7px;">temp <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> []</div> <div style="white-space:pre;height:14px;padding:0px 7px;">RH <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> []</div> <div style="white-space:pre;height:14px;padding:0px 7px;">N2 <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> []</div> <div style="white-space:pre;height:14px;padding:0px 7px;">H2O <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> []</div> <div style="white-space:pre;height:14px;padding:0px 7px;">N2M <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> []</div> <div style="white-space:pre;height:14px;padding:0px 7px;">H2OM <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> []</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;">def</span> animate(i):</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> output_file <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-keyword0" style="color:#066de2;">open</span>(write_to_file_path, <span class="cs-default-common-string" style="color:#63a35c;">"a"</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> line <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> ser.readline()</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> line <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> line.decode(<span class="cs-default-common-string" style="color:#63a35c;">"utf-8"</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> <span class="cs-default-common-keyword0" style="color:#066de2;">print</span>(line)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> output_file.write(line)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> output_file.<span class="cs-default-common-keyword0" style="color:#066de2;">close</span>()</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> newline <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> np.fromstring(line,dtype<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>float,sep<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">','</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">for</span> line <span class="cs-default-common-keyword1" style="color:#a71d5d;">in</span> lines:</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">if</span> <span class="cs-default-common-keyword0" style="color:#066de2;">len</span>(newline) <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">></span><span class="cs-default-common-number" style="color:#0099cc;">1</span>:</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> etimeC <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">0</span>]</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> etime.append(etimeC)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> tempC <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">7</span>]</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> temp.append(tempC)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> RHC <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">8</span>]</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> RH.append(RHC)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> N2C <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">5</span>]<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">*</span><span class="cs-default-common-number" style="color:#0099cc;">2000</span><span class="cs-default-common-keyword1" style="color:#a71d5d;">/</span><span class="cs-default-common-number" style="color:#0099cc;">255</span> <span class="cs-default-common-comment" style="color:#999999;">#0 to 255 -> 0 to 2000 sccm</span></div> <div style="white-space:pre;height:14px;padding:0px 7px;"> N2MC <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">9</span>]<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">*</span><span class="cs-default-common-number" style="color:#0099cc;">2000</span><span class="cs-default-common-keyword1" style="color:#a71d5d;">/</span><span class="cs-default-common-number" style="color:#0099cc;">1023</span> <span class="cs-default-common-comment" style="color:#999999;">#0 to 1023 -> 0 to 2000 sccm</span></div> <div style="white-space:pre;height:14px;padding:0px 7px;"> H2OC <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">6</span>]<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">*</span><span class="cs-default-common-number" style="color:#0099cc;">2000</span><span class="cs-default-common-keyword1" style="color:#a71d5d;">/</span><span class="cs-default-common-number" style="color:#0099cc;">255</span> <span class="cs-default-common-comment" style="color:#999999;">#0 to 255 -> 0 to 2000 sccm</span></div> <div style="white-space:pre;height:14px;padding:0px 7px;"> H2OMC <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> newline[<span class="cs-default-common-number" style="color:#0099cc;">10</span>]<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">*</span><span class="cs-default-common-number" style="color:#0099cc;">2000</span><span class="cs-default-common-keyword1" style="color:#a71d5d;">/</span><span class="cs-default-common-number" style="color:#0099cc;">1023</span> <span class="cs-default-common-comment" style="color:#999999;">#0 to 1023 -> 0 to 2000 sccm</span></div> <div style="white-space:pre;height:14px;padding:0px 7px;"> N2.append(N2C)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> H2O.append(H2OC)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> N2M.append(N2MC)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> H2OM.append(H2OMC)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax1.clear()</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax2.clear()</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.clear()</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax1.set_ylim(<span class="cs-default-common-number" style="color:#0099cc;">0</span>,<span class="cs-default-common-number" style="color:#0099cc;">40</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax2.set_ylim(<span class="cs-default-common-number" style="color:#0099cc;">0</span>,<span class="cs-default-common-number" style="color:#0099cc;">100</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.set_ylim(<span class="cs-default-common-number" style="color:#0099cc;">0</span>,<span class="cs-default-common-number" style="color:#0099cc;">2000</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax1.set_ylabel(<span class="cs-default-common-string" style="color:#63a35c;">'Temp. (oC)'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax2.set_ylabel(<span class="cs-default-common-string" style="color:#63a35c;">'RH (%)'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.set_xlabel(<span class="cs-default-common-string" style="color:#63a35c;">'Time (s)'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.set_ylabel(<span class="cs-default-common-string" style="color:#63a35c;">'Flow rate (sccm)'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax1.annotate(<span class="cs-default-common-keyword0" style="color:#066de2;">str</span>(tempC)<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span><span class="cs-default-common-string" style="color:#63a35c;">'oC'</span>,xy<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>(<span class="cs-default-common-number" style="color:#0099cc;">10</span>,<span class="cs-default-common-number" style="color:#0099cc;">10</span>))</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax2.annotate(<span class="cs-default-common-keyword0" style="color:#066de2;">str</span>(RHC)<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span><span class="cs-default-common-string" style="color:#63a35c;">'%'</span>,xy<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>(<span class="cs-default-common-number" style="color:#0099cc;">10</span>,<span class="cs-default-common-number" style="color:#0099cc;">10</span>))</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.annotate(<span class="cs-default-common-string" style="color:#63a35c;">'N2 '</span><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span><span class="cs-default-common-keyword0" style="color:#066de2;">str</span>(<span class="cs-default-common-keyword0" style="color:#066de2;">int</span>(N2MC)),xy<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>(<span class="cs-default-common-number" style="color:#0099cc;">10</span>,<span class="cs-default-common-number" style="color:#0099cc;">1800</span>))</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.annotate(<span class="cs-default-common-string" style="color:#63a35c;">'H2O '</span><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span><span class="cs-default-common-keyword0" style="color:#066de2;">str</span>(<span class="cs-default-common-keyword0" style="color:#066de2;">int</span>(H2OMC)),xy<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>(<span class="cs-default-common-number" style="color:#0099cc;">10</span>,<span class="cs-default-common-number" style="color:#0099cc;">20</span>))</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax1.plot(etime, temp, <span class="cs-default-common-string" style="color:#63a35c;">'r-'</span>, label<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">'temp'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax2.plot(etime, RH, <span class="cs-default-common-string" style="color:#63a35c;">'b-'</span>, label<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">'RH'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> ax3.plot(etime,N2,<span class="cs-default-common-string" style="color:#63a35c;">'m'</span>,etime,H2O,<span class="cs-default-common-string" style="color:#63a35c;">'g'</span>,etime,N2M,<span class="cs-default-common-string" style="color:#63a35c;">'m.'</span>,etime,H2OM,<span class="cs-default-common-string" style="color:#63a35c;">'g.'</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> plt.setp(ax1.get_xticklabels(), visible<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>False)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"> plt.setp(ax2.get_xticklabels(), visible<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span>False)</div> <div style="white-space:pre;height:14px;padding:0px 7px;"></div> <div style="white-space:pre;height:14px;padding:0px 7px;">ani <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> anim.FuncAnimation(fig,animate,interval<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-number" style="color:#0099cc;">1000</span>)</div> <div style="white-space:pre;height:14px;padding:0px 7px;">plt.show()</div> <div style="white-space:pre;height:14px;padding:0px 7px;"><br></div> <div style="white-space:pre;height:14px;padding:0px 7px;"><span style="color:#000000;font-family:'굴림';white-space:normal;">-----------------------------------------------------</span></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.