作者 : 謝佩均 (2005-11-30) 推薦 : 徐業良 (2005-12-01) 利用 PIC_SERVER 擷取與傳輸 TaiDoc 公司 TD-3018B 血壓計量 測之血壓數據 本文首先對血壓計量測血壓的原理做一簡單的介紹, 接著以市售 TaiDoc 公司 TD-3018B 血壓計為應用範例, 說明如何以 PIC_SERVER 當主控端, 擷取 TD-3018B 血壓計量測之血壓數據, 並傳輸至遠端網頁上 1. TD-3018B 血壓計簡介血壓量測可分為直接與間接量測法, 也就是侵入式或非侵入式兩種方法 直接測量法是將動脈導管直接插入動脈血管中, 再利用壓電轉換感測器的轉換而得到血壓 ; 間接測量法大部份使用壓脈袋擠壓待量測血管, 再利用聽診器或其他感測器來量得血壓, 而依量測方法可分為聽診法 共振法 及紅外線法 間接測量法中的共振法是市售血壓計較常採用的方法, 其裝置包括手腕部或手臂用的壓脈袋 幫壓脈袋充氣加壓的馬達 洩氣閥與壓力感測器 量測方法先將壓脈袋內充氣加壓到一定壓力後阻止血液活動, 再緩慢洩除壓脈袋壓力, 當壓脈袋壓力接近收縮壓前, 靈敏的壓力感測器, 可感測壓脈袋與血管共振時所產生微小的壓力變化訊號 接著利用濾波 放大等程序擷取連續脈波的壓力感測器訊號, 當壓脈袋內壓力等於平均壓時壓脈袋內壓力振幅最大, 經過轉換後即可得到收縮壓 舒張壓 與平均壓 圖 1 為 TaiDoc 公司編號 TD-3018B 血壓計的外觀, 使用手腕壓脈袋量測血壓, 使用者只需將血壓計帶於手腕, 壓下啟動按鈕, 即可以感覺到充氣加壓馬達對手腕壓脈袋充氣, 當充氣到一定程度時即開始洩氣, 在量測的同時可以在血壓計的 LCD 上 1
觀看到目前壓脈袋的壓力, 與隨著量測到脈搏時血壓計會發出聲響, 稍待一會兒, LCD 即會顯示受測者的收縮壓 舒張壓與每分鐘脈搏數等訊號 圖 1. TaiDoc 公司編號 TD-3018B 血壓計外觀 TD-3018B 血壓計規格如表 1 所示, 這部血壓計以電池供電, 且大小方便使用者隨身攜帶, 其可記錄 352 組量測後的收縮壓 舒張壓 與每分鐘脈搏數等資訊, 且可以透過 RS232 傳輸線與 PC 連接, 配合 TaiDoc 公司所附的血壓檢測軟體, 可以對血壓計裡所記錄的資訊作統計與簡單的報表, 方便受測者瞭解自己血壓的變化與趨勢 表 1. TD-3018B 血壓計規格 尺寸 76 64 29 mm 3 重量 132 g (with batteries) 壓脈袋尺寸 13.5~19.5 cm 電源 2 顆 1.5V(4 號電池 ) 外部輸出 標準 PC 的 RS232 端子 量測範圍 壓力 = 0 ~ 300 mmhg 加壓速率 = 40 ~ 199 per minute 準確率 壓力 = -3mmg ~ +3mmHg 記憶 352 組測量結果 測量方式 使用壓力感測器 2. 利用 PIC_SERVER 擷取與傳輸血壓計量測之血壓數據 TD-3018B 血壓計擁有透過 RS232 連接線與 PC 溝通的功能, 作用方式如圖 2 所 示, 使用者由 PC 上的血壓檢測軟體 (VB 程式 ), 點選讀取血壓計中紀錄資料的按鈕, 程式即會透過 RS232 連接線由 PC 端輸出控制指令碼給血壓計, 血壓計接收到所對應 2
的相關控制指令碼後, 也會將記憶體裡的資訊透過 RS232 連接線回傳給 PC, 程式接 收到這些血壓資料 ( 記憶數據碼 ) 後, 即可以做相關的後續處理 圖 2. 血壓計與 PC 連接示意圖 以下則敘述如何利用 PIC_SERVER 控制與擷取血壓計中的數據, 進而傳輸 顯 示在遠端網頁上 2.1 監看與解碼了解控制與擷取的數據碼 為了使用 PIC_SERVER 控制與擷取血壓計中的數據, 首先透過 RS232 終端機程式監看 RS232 的資訊, 了解 VB 程式所傳送出的控制指令碼, 接者由 RS232 終端機程式模擬 VB 程式傳送控制指令碼給血壓計, 進一步接收血壓計回傳的記憶數據碼, 經過實驗與解碼可以得知血壓計所量測到的相關數據 ( 收縮壓 舒張壓 與每分鐘脈搏數 ) 之格式 表 2 為控制指令碼與記憶數據碼, 其中要讀取所量測到的第一筆數據, 即是透過 RS232 連接線傳送 512204040000A3 與 512206040000A3 兩段控制指令碼 當傳送第一段控制指令碼時, 血壓計也會回傳一段記憶數據碼, 例如 51220404PP00A5,PP 即為血壓計所量測到的收縮壓數值的 16 進位值, 如 PP 為 7C 時轉換成 10 進位即 124, 也就是收縮壓為 124mmHg; 當傳送第二段控制指令碼時, 血壓計也會回傳另一段記憶數據碼, 如 51220604QQRRA5,QQ 即為血壓計量測到的舒張壓數值的 16 進位值 RR 為血壓計量測到的每分鐘脈搏數的 16 進位值, 一樣將此兩數值轉換成 10 進位, 即可得知所量測到的相關數值, 清除全部記憶只需傳送控制指令碼給血壓計即可 有了控制指令碼與記憶數據碼, 即可轉由 PIC_SERVER 來控制與擷取血壓計所量測到的資訊, 在前述實驗中, 原本是利用 RS232 終端機程式模擬 VB 程式傳輸控制程式碼, 改成利用 PIC_SERVER 的 RS232 輸出 接收 PORT 傳輸控制指令碼與擷取記憶數據碼, 即可控制與擷取相關數據 3
表 2. 相關控制指令碼與記憶數據碼 功能控制指令碼記憶數據碼 512204040000A3 51220404PP00A5 讀取第一筆數據 512206040000A3 51220604QQRRA5 51323800FF00A3 51323A000000A3 清除全部記憶 51323C00FF00A3 51323E00FF00A3 2.2 PIC_SERVER 控制與擷取血壓計程式副程式 首先 PIC_SERVER 與血壓計有相同的每秒傳送位元速率與設定 (buad=9600,8,n,1) 才能溝通兩者, 其副程式程式碼如圖 3 與圖 4 所示, 圖 5 為讓相關數據對應在網頁上 的副程式 圖 3. 控制與擷取相關數據的 read() 副程式程式碼 4
圖 4. 控制清除全部記憶的 del() 副程式程式碼 圖 5. 將相關數據對應在網頁上副程式程式碼 圖 3 為控制擷取血壓資訊的 (read()) 副程式, 程式最主要是依序送兩段程式指令碼, 如在圖中 38~42 行是定義第一段指令碼 52~55 是定義第二短指令碼,43 57 即是依序傳出控制指令碼 在傳出控制指令碼後, 緊接著讀取血壓計回傳的記憶數據碼, 如圖中行 45 59 行是依序接收記憶數據碼 且 48 61 與 62 行, 進一步將擷 5
取之數據存成變數以讓 PIC_SERVER 使用, 與 49 63 行將數據轉換成 10 進位值顯示於 PIC_SERVER 上的 LCD 且在 65 行多加一標記當收縮壓與舒張壓其中一項超過設定值時, 即會啟動標記 (warning=1) 圖 4 為清除全部記憶的控制指令碼副程式 (del()), 其主要是要送出四組控制指令碼給血壓計, 血壓計接收到這四段指令碼即會將記憶清除 圖 5 為將相關數據對應在網頁上的副程式程式碼, 圖中 178~180 行是讓網頁顯示相關對應數值, 在 182 183 兩行即是判斷 read() 副程式中定義的標記, 由不同的標記對應網頁上顯示不同的圖案 使用者可以透過網頁瀏覽器連進 PIC_SERVER 以了解血壓資訊, 如圖 6 即為顯示之網頁, 血壓過高時網頁在相關血壓數據下方的會變成幽靈圖 圖 6. PIC_SERVER 所顯示之網頁 6