熱敏打印機(jī)的心電圖形快速打印方法介紹
本文引用地址:http://2s4d.com/article/164911.htm
2.2 打印算法
數(shù)字打印機(jī)實質(zhì)上實現(xiàn)了數(shù)據(jù)與打印點的對應(yīng),也就是說8位心電數(shù)據(jù)數(shù)值范圍為0~255,對應(yīng)于熱敏打印紙上的256點,通過加熱敏單元使紙上某點變黑顯示數(shù)據(jù)的大小。這就需要將表征實際心電大小的數(shù)據(jù)(以下稱為原始數(shù)據(jù))轉(zhuǎn)換成能夠指示加熱點位置的數(shù)據(jù)(以下稱為位置數(shù)據(jù)),通過位置數(shù)據(jù)的控制將心電數(shù)據(jù)對應(yīng)的點依次打印出來,就可獲得心電圖。但是由于系統(tǒng)模數(shù)轉(zhuǎn)換器獲得的心電數(shù)據(jù)是離散的,如果僅將它們對應(yīng)的點打印出來,得到只是一些離散的點,要想獲得連續(xù)的心電圖形,需要將相鄰的離散點按照一定的算法將它們連接起來,對于縱向打印方式和橫向打印方式,離散點連線算法是不同的。限于篇幅,在下面介紹打印方式的實現(xiàn)中,僅對橫向12導(dǎo)同步打印和縱向打印進(jìn)行詳細(xì)闡述,而對6導(dǎo)聯(lián)打印僅介紹其實現(xiàn)思想。
2.2.1 橫向6導(dǎo)聯(lián)打印
心電圖紙長度為216mm,為每一導(dǎo)聯(lián)心電信號分配32mm,對應(yīng)于打印緩沖區(qū)中連續(xù)的32字節(jié),打印數(shù)據(jù)轉(zhuǎn)換后的位置數(shù)據(jù)存儲于這32個字節(jié)中。12導(dǎo)聯(lián)的心電數(shù)據(jù)被分為兩大組,當(dāng)一組打印完成再打印剩下的6導(dǎo)聯(lián)的數(shù)據(jù)。具體的實現(xiàn)過程可參考橫向12導(dǎo)聯(lián)打印方式。
2.2.2 橫向12導(dǎo)聯(lián)同步打印
在6導(dǎo)聯(lián)打印方式實現(xiàn)過程中,注意到在大多情況下一個完事心電波形中僅QRS波主峰較高可以點滿整個空間外,其他波段幅值都較小占用空間很少,而這些波段可以提供更多的信息,此外將12導(dǎo)聯(lián)分開打印,不利于醫(yī)生對比同一時刻不同導(dǎo)聯(lián)的心電波形。而采用12導(dǎo)聯(lián)同步打印,雖然會出現(xiàn)波形部分重疊,但是在一些心臟疾病診斷中影響不大,且可以得取更直觀的效果。
12導(dǎo)聯(lián)同步打印程序?qū)崿F(xiàn)的基本思想與6導(dǎo)聯(lián)同步打印相同,不同在于將12導(dǎo)聯(lián)的數(shù)據(jù)同時在216mm寬的打印紙上打印出來,不可避免地出現(xiàn)不同導(dǎo)聯(lián)心電圖形重疊的現(xiàn)象,對應(yīng)的內(nèi)存單元也會出現(xiàn)復(fù)用的情況。如果簡單地套用6導(dǎo)聯(lián)打印程序,那么前一導(dǎo)聯(lián)的數(shù)據(jù)會被相鄰導(dǎo)聯(lián)數(shù)據(jù)沖掉,從而使圖形無法正確顯示。圖3列出了為各個導(dǎo)聯(lián)分配的熱敏打印紙空間與緩沖內(nèi)存單元(這里假定緩存地址為0x1DH~0xEDH)。從圖3中可以看出除了I導(dǎo)聯(lián)前16mm空間和V6導(dǎo)聯(lián)的后16mm空間沒有被復(fù)用,打印紙的其它空間都是被兩個導(dǎo)聯(lián)共用。內(nèi)部RAM使用情況也與之類似。為此在外部RAM開辟一個內(nèi)部打印緩沖區(qū)的影像區(qū)(大小為216字節(jié),單元地址的低8位與內(nèi)存相應(yīng)單元相同,如內(nèi)部RAM 0x1DH單元與外部RAM 0xXX1DH相對應(yīng)),將12導(dǎo)聯(lián)分為兩組:一組(I,III,aVL,V1,V3,V5)仍然存儲于內(nèi)部存儲器,而另一組(II,aVF,V2,V4,V6)存儲于外部影像區(qū),在12導(dǎo)聯(lián)一線數(shù)據(jù)轉(zhuǎn)換完要打印時,將兩部分按照對應(yīng)單元相與即可。這樣做不但可以解決上述問題,而且節(jié)省了內(nèi)部資源、降低程序編寫的難度。
如前所述不同導(dǎo)聯(lián)所占的打印空間不同,所以,對于某導(dǎo)聯(lián)心電信號,先要確定其打印區(qū)間,然后再確定打印數(shù)據(jù)在該區(qū)間的相對位置。
假定某導(dǎo)聯(lián)所占打印空間的起始字節(jié)為第n個字節(jié),而要打印的心電數(shù)據(jù)為m,將m除以8,得商k,余數(shù)為1,則此心電數(shù)據(jù)對應(yīng)點對數(shù)(n-k)字節(jié)的第1位。即該心電數(shù)據(jù)對應(yīng)的位置數(shù)據(jù)為第(n-k)字節(jié)(該字節(jié)的1位置1,其它位清零)。因此,打印此心電數(shù)據(jù)時,該導(dǎo)聯(lián)所要傳送的32字節(jié)打印數(shù)據(jù)中只有第(n-k)字節(jié)的第1位為1,其他都為0。
與液晶顯示相類似,對于一個導(dǎo)聯(lián)的心電信號,要實現(xiàn)心電圖打印,必須將盯連兩個心電數(shù)據(jù)用線連接。即對于一條心電曲線,起始顯示數(shù)據(jù)點在起始列只顯示1點;從第二個數(shù)據(jù)點開始,要在下一列顯示上一數(shù)據(jù)點到此次數(shù)據(jù)點之間的線段。在熱敏打印紙上表現(xiàn)為將兩數(shù)據(jù)點之間的點都加熱,對應(yīng)于內(nèi)存則是將兩點之間的數(shù)據(jù)都置1。
對于—導(dǎo)聯(lián)的心電信號,先讀出第一個心電數(shù)據(jù),將其轉(zhuǎn)換成32字節(jié)位置數(shù)據(jù)直接打印。從第二個心電數(shù)據(jù)開始,除了要轉(zhuǎn)換成位置數(shù)據(jù)外,還要與上一個數(shù)據(jù)相比較,用大數(shù)對應(yīng)的位置數(shù)據(jù)減去小數(shù)對應(yīng)的,然后結(jié)果與大數(shù)的位置數(shù)據(jù)相加,結(jié)果即為此心電數(shù)據(jù)應(yīng)送打的32字節(jié)數(shù)據(jù),也即完成了與上一心電數(shù)據(jù)連線的操作。分析發(fā)現(xiàn)連線算法只影響相連兩個位置數(shù)據(jù)中非零字節(jié)之間的數(shù)據(jù),為了簡化計算,只需對這些字節(jié)進(jìn)行減法操作,而不必計算所有的32個字節(jié)。對于加法,也只需將大數(shù)對應(yīng)位置數(shù)據(jù)中的非零字節(jié)進(jìn)行加法,即進(jìn)行單字節(jié)加法。
舉例說明,對于導(dǎo)聯(lián)V6心電信號,前一個數(shù)據(jù)37H,下一個數(shù)據(jù)為55H,導(dǎo)聯(lián)V6分配的打印區(qū)間為1DH~3DH,按照位置數(shù)據(jù)轉(zhuǎn)換算法,37H的位置數(shù)據(jù)為第37H字節(jié),該字節(jié)內(nèi)容為80H,其他字節(jié)都為00H;55H的位置數(shù)據(jù)為第33H字節(jié),該字節(jié)內(nèi)容為20H,其他字節(jié)為00H。由于37H〈55H,因此應(yīng)是心電數(shù)據(jù)55H的位置數(shù)據(jù)減去33H的位置數(shù)據(jù),計算如圖4所示。
2.3 縱向打印程序
縱向打印能夠?qū)崿F(xiàn)將12導(dǎo)聯(lián)數(shù)據(jù)無重疊同步顯示。這樣醫(yī)生可以參考比較同一時刻的各個波形的變化趨勢,為疾病的診斷提供方便。
熱敏打印紙寬度為216mm,分辨率為8dot/mm,這樣最多能夠打印1728點,將這些點與某一導(dǎo)聯(lián)連續(xù)的1728個心電數(shù)據(jù)相對應(yīng),也就是說導(dǎo)聯(lián)順序第n個數(shù)據(jù)對應(yīng)于一線圖形中的第n個點。與模向打印相比縱向打印仍然要解決將離散的點連接起來的問題;但與橫向順序打印方式,即打印點按時間順序打印相比,其難點在于需要將不同時刻同一幅值的多個點同時打印出來,即打印點按空間順序打印。
首先定義一個內(nèi)存單元存儲掃描值,使其從當(dāng)前通道數(shù)據(jù)最大值變化到0,依次與通道的每一個數(shù)據(jù)進(jìn)行比較:相同則對應(yīng)點被描記;小則不被描記;大則需要將當(dāng)前心電數(shù)據(jù)相鄰的兩點與掃描值相比較,只要其中一個比掃描值大,則對應(yīng)點被描記,要描記的噗將其內(nèi)存對應(yīng)的數(shù)據(jù)位置1。
舉例說明,如果打印內(nèi)存緩沖區(qū)的首字節(jié)為n,大小為216字節(jié),而當(dāng)前某一導(dǎo)聯(lián)順序第m個心電數(shù)據(jù)是v,而此時的掃描值為w:①v>w,則繼續(xù)比較第m+1個數(shù)據(jù);②v=w,則對應(yīng)點需要被描記;③vw,則需要分別比較第m-1個和第m+1個數(shù)與w的關(guān)系,如果其中的某一個較w大,則對應(yīng)的點需要被描記。假設(shè)經(jīng)過判斷第m個數(shù)據(jù)對應(yīng)的點需要被描記,將mgn 8做除法,商為k,余數(shù)為1,也就是內(nèi)存中第(n-k)個字節(jié)第1位被置1,即用數(shù)據(jù)(第1位被置1)與內(nèi)存單元(n-k)的內(nèi)容相與。
評論