新闻中心

EEPW首页 > 消费电子 > 设计应用 > 热敏打印机的心电图形快速打印方法

热敏打印机的心电图形快速打印方法

作者:时间:2011-12-04来源:网络收藏

2.2 算法

  数字机实质上实现了数据与点的对应,也就是说8位数据数值范围为0~255,对应于打印纸上的256点,通过加单元使纸上某点变黑显示数据的大小。这就需要将表征实际大小的数据(以下称为原始数据)转换成能够指示加热点位置的数据(以下称为位置数据),通过位置数据的控制将数据对应的点依次打印出来,就可获得心电图。但是由于系统模数转换器获得的心电数据是离散的,如果仅将它们对应的点打印出来,得到只是一些离散的点,要想获得连续的心电,需要将相邻的离散点按照一定的算法将它们连接起来,对于纵向打印方式和横向打印方式,离散点连线算法是不同的。限于篇幅,在下面介绍打印方式的实现中,仅对横向12导同步打印和纵向打印进行详细阐述,而对6导联打印仅介绍其实现思想。

  2.2.1 横向6导联打印

  心电图纸长度为216mm,为每一导联心电信号分配32mm,对应于打印缓冲区中连续的32字节,打印数据转换后的位置数据存储于这32个字节中。12导联的心电数据被分为两大组,当一组打印完成再打印剩下的6导联的数据。具体的实现过程可参考横向12导联打印方式。

  2.2.2 横向12导联同步打印

  在6导联打印方式实现过程中,注意到在大多情况下一个完事心电波形中仅QRS波主峰较高可以点满整个空间外,其他波段幅值都较小占用空间很少,而这些波段可以提供更多的信息,此外将12导联分开打印,不利于医生对比同一时刻不同导联的心电波形。而采用12导联同步打印,虽然会出现波形部分重叠,但是在一些心脏疾病诊断中影响不大,且可以得取更直观的效果。

  12导联同步打印程序实现的基本思想与6导联同步打印相同,不同在于将12导联的数据同时在216mm宽的打印纸上打印出来,不可避免地出现不同导联心电重叠的现象,对应的内存单元也会出现复用的情况。如果简单地套用6导联打印程序,那么前一导联的数据会被相邻导联数据冲掉,从而使无法正确显示。图3列出了为各个导联分配的打印纸空间与缓冲内存单元(这里假定缓存地址为0x1DH~0xEDH)。从图3中可以看出除了I导联前16mm空间和V6导联的后16mm空间没有被复用,打印纸的其它空间都是被两个导联共用。内部RAM使用情况也与之类似。为此在外部RAM开辟一个内部打印缓冲区的影像区(大小为216字节,单元地址的低8位与内存相应单元相同,如内部RAM 0x1DH单元与外部RAM 0xXX1DH相对应),将12导联分为两组:一组(I,III,aVL,V1,V3,V5)仍然存储于内部存储器,而另一组(II,aVF,V2,V4,V6)存储于外部影像区,在12导联一线数据转换完要打印时,将两部分按照对应单元相与即可。这样做不但可以解决上述问题,而且节省了内部资源、降低程序编写的难度。

为各个导联分配的热敏打印纸空间与缓冲内存单元

  如前所述不同导联所占的打印空间不同,所以,对于某导联心电信号,先要确定其打印区间,然后再确定打印数据在该区间的相对位置。

  假定某导联所占打印空间的起始字节为第n个字节,而要打印的心电数据为m,将m除以8,得商k,余数为1,则此心电数据对应点对数(n-k)字节的第1位。即该心电数据对应的位置数据为第(n-k)字节(该字节的1位置1,其它位清零)。因此,打印此心电数据时,该导联所要传送的32字节打印数据中只有第(n-k)字节的第1位为1,其他都为0。

  与液晶显示相类似,对于一个导联的心电信号,要实现心电图打印,必须将盯连两个心电数据用线连接。即对于一条心电曲线,起始显示数据点在起始列只显示1点;从第二个数据点开始,要在下一列显示上一数据点到此次数据点之间的线段。在热敏打印纸上表现为将两数据点之间的点都加热,对应于内存则是将两点之间的数据都置1。

  对于—导联的心电信号,先读出第一个心电数据,将其转换成32字节位置数据直接打印。从第二个心电数据开始,除了要转换成位置数据外,还要与上一个数据相比较,用大数对应的位置数据减去小数对应的,然后结果与大数的位置数据相加,结果即为此心电数据应送打的32字节数据,也即完成了与上一心电数据连线的操作。分析发现连线算法只影响相连两个位置数据中非零字节之间的数据,为了简化计算,只需对这些字节进行减法操作,而不必计算所有的32个字节。对于加法,也只需将大数对应位置数据中的非零字节进行加法,即进行单字节加法。

  举例说明,对于导联V6心电信号,前一个数据37H,下一个数据为55H,导联V6分配的打印区间为1DH~3DH,按照位置数据转换算法,37H的位置数据为第37H字节,该字节内容为80H,其他字节都为00H;55H的位置数据为第33H字节,该字节内容为20H,其他字节为00H。由于37H〈55H,因此应是心电数据55H的位置数据减去33H的位置数据,计算如图4所示。

连线数据的计算

  2.3 纵向打印程序

  纵向打印能够实现将12导联数据无重叠同步显示。这样医生可以参考比较同一时刻的各个波形的变化趋势,为疾病的诊断提供方便。

  热敏打印纸宽度为216mm,分辨率为8dot/mm,这样最多能够打印1728点,将这些点与某一导联连续的1728个心电数据相对应,也就是说导联顺序第n个数据对应于一线图形中的第n个点。与模向打印相比纵向打印仍然要解决将离散的点连接起来的问题;但与横向顺序打印方式,即打印点按时间顺序打印相比,其难点在于需要将不同时刻同一幅值的多个点同时打印出来,即打印点按空间顺序打印。

  首先定义一个内存单元存储扫描值,使其从当前通道数据最大值变化到0,依次与通道的每一个数据进行比较:相同则对应点被描记;小则不被描记;大则需要将当前心电数据相邻的两点与扫描值相比较,只要其中一个比扫描值大,则对应点被描记,要描记的噗将其内存对应的数据位置1。

  举例说明,如果打印内存缓冲区的首字节为n,大小为216字节,而当前某一导联顺序第m个心电数据是v,而此时的扫描值为w:①v>w,则继续比较第m+1个数据;②v=w,则对应点需要被描记;③vw,则需要分别比较第m-1个和第m+1个数与w的关系,如果其中的某一个较w大,则对应的点需要被描记。假设经过判断第m个数据对应的点需要被描记,将mgn 8做除法,商为k,余数为1,也就是内存中第(n-k)个字节第1位被置1,即用数据(第1位被置1)与内存单元(n-k)的内容相与。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭