VC多線程解決有些項目中的數據存取問題

         做醫學心電數據及圖形顯示,誘發電位數據及圖形顯示已經有近五個年頭了,在這類程序中主要是數據的採集及後期的處理,以心電數據爲例,從人體採集的心電數據一般爲每秒200~500點,如果按每秒鐘繪製一次,那麼屏幕的顯示將是有停頓的,並且給人的整體感覺不好,那麼如何來解決這個問題呢。

1.問題的提出。

  a.時實採集的數據與繪製圖形的數據如何存放,如何取出。

 b.如果界定原始數據中有能取出的數據。

        爲此,我們要準備兩個數據緩衝區,一個存放原始數據,一個存放取出的數據(這個可以要也可以不要,可以用要用到這個數據的另個函數傳入數據指針,然後取走就是)。

       用線程來實現數據的取,線程一直處於數據的取狀態,當原始數據中的點到達取的點數,那麼線程就取走點,如:我們定義一個1000的數組用於存放原始數據。

          int  *m_pData ; m_pData = new int[1000] ,

         再定義一個,讀的位置m_iCurReadPos ,一個寫的位置 m_iCurWritePos ,當

          m_iCurWritePos - m_iCurReadPos > 要取的點數  ,這個時候就可以完成一次取點了。

         然後,m_iCurReadPos = m_iCurReadPos + 要取的點數,位置往後移,如果達到最大長度時,那麼

         m_iCurReadPos = 0 ; 當然m_iCurWritePos 是隨着原始數據的累加而往後移的,現在只考慮計算機的讀速度比存速度快,因這樣的原始數據一般來自於網絡,串口傳輸,遠比計算機的處理速度慢得多。

        大概思想就是這樣,先寫個線程試試,下篇文章我會用程序代碼說明如何實現這個存取問題。好了休息,明天還有一大堆程序要寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章