📄 print.h
字号:
#ifndef __PRINT_H
#define __PRINT_H
#ifndef __STDIO_H
#include <stdio.h>
#endif
#ifndef __STRING_H
#include <string.h>
#endif
#ifndef __BIOS_H
#include <bios.h>
#endif
#ifndef __MENU_H
#include "menu.h"
#endif
//#define Pspace 8 //打印空格数
#define EVERY_PRINT_POINT 15
//打印机的点阵为8点/mm
//本项目中冻结(或实时打印的时候是560点,换成实际长度为171.5mm)
//对于打印长度来说的话就需要 171.5mm*8点/mm=1372个点,需要在原来的560点的基础上均匀插入812个点
union aa{//打印用
int i;
char ii[2];
};
#define FONTPRT
extern unsigned char *PLETHcache2;
extern unsigned char far *ECGcache2[7];
//extern int printlength;//波形长
//0x439b=汣=`C
//0x469b=汧=`F
//打印函数点函数
void printpoint(int ECGy, int PLETHy)
{ union aa aa1, aa2;
aa1.i=ECGy+45;
if(aa1.i==26||aa1.i==282)
aa1.i--;
//if(aa1.i<10) aa1.i=10;
if(aa1.i>380)aa1.i=383;
aa2.i=PLETHy;
if(aa2.i==26||aa2.i==282)
aa2.i--;
//if(aa2.i<10) aa2.i=10;
if(aa2.i>380)aa2.i=383;
fprintf(stdprn,"%c",27);fprintf(stdprn,"%c",39);fprintf(stdprn,"%c",2);
fprintf(stdprn,"%c",aa1.ii[0]);
fprintf(stdprn,"%c",aa1.ii[1]);
fprintf(stdprn,"%c",aa2.ii[0]);
fprintf(stdprn,"%c",aa2.ii[1]);
fprintf(stdprn,"%c",13);
return ;
}
void printwave(void){
int status;//, abyte=0;//打印状态字节
int pspace;
int py,pyy;
char tempstr[25];
static int pointer;
static int ECGy, PLETHy;
static char PrtPointCtrl;
int Etemp_y, Ptemp_y;
if(PrtWavCount==255) return;
status=biosprint(2,0,0);
if(status==0x90) ///打印准备好
{
switch(PrtWavCount){
case 0: //init printer for text
#ifdef FONTPRT
fprintf(stdprn,"%c",27);fprintf(stdprn,"%c",64);//初使化
fprintf(stdprn,"%c",27);fprintf(stdprn,"%c",99);fprintf(stdprn,"%c",0);
fprintf(stdprn,"%c",13);
#endif
PrtWavCount++;
break;
case 1: //space
#ifdef FONTPRT
//fprintf(stdprn,"%c",28); fprintf(stdprn,"%c",38);//汉字方式
fprintf(stdprn,"%c",27); fprintf(stdprn,"%c",87);fprintf(stdprn,"%c",1);
fprintf(stdprn,"%c",27); fprintf(stdprn,"%c",87);fprintf(stdprn,"%c",3);//打印字体放大3倍
fprintf(stdprn,"%c",27); fprintf(stdprn,"%c",49);fprintf(stdprn,"%c",5);//行间距5点
#endif
PrtWavCount++;
break;
case 2: //day
#ifdef FONTPRT
sprintf(tempstr,"%4d-%02d-%02d",frzdate.da_year,frzdate.da_mon,frzdate.da_day);
for(pspace=0;pspace<10;pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 3: //time base 4
#ifdef FONTPRT
sprintf(tempstr," %02d:%02d:%02d\n",frztime.ti_hour,frztime.ti_min,frztime.ti_sec);
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 4: //HR
#ifdef FONTPRT
if(FrzData.HR>0&&FrzData.HR<255)
sprintf(tempstr,"HR=%-3d ",FrzData.HR);
else sprintf(tempstr,"HR=--- ");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 5: //PR
#ifdef FONTPRT
if(FrzData.PR>0&&FrzData.PR<255)
sprintf(tempstr," PR=%-3d\n",FrzData.PR);
else sprintf(tempstr," PR=---\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 6: //ST
#ifdef FONTPRT
if(FrzData.ST!=127)
sprintf(tempstr,"ST=%-5.2f ",(float)FrzData.ST/100.0);
else sprintf(tempstr,"ST=-.-- ");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 7: //SP02
#ifdef FONTPRT
if(FrzData.SPO2>0&&FrzData.SPO2<100)
sprintf(tempstr," SPO2=%-2d\n",FrzData.SPO2);
else sprintf(tempstr," SPO2=--\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 8: //SYST
#ifdef FONTPRT
if(FrzData.SYST>0&&FrzData.SYST<255)
sprintf(tempstr,"SYST=%-3dmmHg %4.1fKpa\n",FrzData.SYST,(float)FrzData.SYST/7.5);
else sprintf(tempstr,"SYST=---mmHg --.-Kpa\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 9: //MEAN
#ifdef FONTPRT
if(FrzData.MEAN>0&&FrzData.MEAN<255)
sprintf(tempstr,"MEAN=%-3dmmHg %4.1fKpa\n",FrzData.MEAN,(float)FrzData.MEAN/7.5);
else sprintf(tempstr,"MEAN=---mmHg --.-Kpa\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 10: //DIAS
#ifdef FONTPRT
if(FrzData.DIAS>0 && FrzData.DIAS<255)
sprintf(tempstr,"DIAS=%-3dmmHg %4.1fKpa\n",FrzData.DIAS,(float)FrzData.DIAS/7.5);
else sprintf(tempstr,"DIAS=---mmHG --.-Kpa\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 11: //TEMP1
#ifdef FONTPRT
if(FrzData.TEMP1>250&&FrzData.TEMP1<455)
sprintf(tempstr,"TEMP1=%-3.1f汣 %-4.1f汧\n",(float)FrzData.TEMP1/10.0,(float)FrzData.TEMP1*0.18+32);
else sprintf(tempstr,"TEMP1=--.-汣 ---.-汧\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
if(FrzData.TEMP2>250&&FrzData.TEMP2<455)
sprintf(tempstr,"TEMP2=%-3.1f汣 %-4.1f汧\n",(float)FrzData.TEMP2/10.0,(float)FrzData.TEMP2*0.18+32);
else sprintf(tempstr,"TEMP2=--.-汣 ---.-汧\n");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
#endif
PrtWavCount++;
break;
case 12: //RESP
#ifdef FONTPRT
if(FrzData.RESP>0&&FrzData.RESP<99)
sprintf(tempstr,"RESP=%-2d LEAD=",FrzData.RESP);
else sprintf(tempstr,"RESP=-- LEAD=");
for(pspace=0;pspace<strlen(tempstr);pspace++)
fprintf(stdprn,"%c",tempstr[pspace]);
for(pspace=0;pspace<3;pspace++)
fprintf(stdprn,"%c",*(VAL_LEAD[PrtECG_Lead]+pspace));
fprintf(stdprn,"%c",13);
#endif
PrtWavCount++;
break;
case 13: //init for graph
fprintf(stdprn,"%c",27); fprintf(stdprn,"%c",64);//初始化
fprintf(stdprn,"%c",27); fprintf(stdprn,"%c",99);fprintf(stdprn,"%c",0);//禁止反向打印
pointer=0;
PrtPointCtrl=0;//打印点数的控制
PrtWavCount++;
break;
case 14: //print wave
for(pspace=0; pspace<EVERY_PRINT_POINT; pspace++){
if(pointer>=FRZWAVELEN){
PrtWavCount++;
break;
}
if(ECGSCALE->value!=V_X4)
Etemp_y=*(ECGcache2[PrtECG_Lead]+EWavPrtHd+pointer)>>1;
else
Etemp_y=*(ECGcache2[PrtECG_Lead]+EWavPrtHd+pointer)-64;
if(Etemp_y<=0) Etemp_y=1;
if(Etemp_y>=128) Etemp_y=127;
Etemp_y*=3;
Ptemp_y=PLETHcache2[PWavPrtHd+pointer]*3;
if(!pointer){
ECGy=Etemp_y; PLETHy=Ptemp_y;
}
printpoint(ECGy,PLETHy);
PrtPointCtrl=!PrtPointCtrl;
if(PrtPointCtrl){
printpoint(ECGy+((Etemp_y-ECGy)>>1), PLETHy+((Ptemp_y-PLETHy)>>1));
}else{
//printpoint(ECGy+((Etemp_y-ECGy)>>1), PLETHy+((Ptemp_y-PLETHy)>>1));
//printpoint(ECGy+((Etemp_y-ECGy)>>1), PLETHy+((Ptemp_y-PLETHy)>>1));
printpoint(ECGy+(Etemp_y-ECGy)/3, PLETHy+(Ptemp_y-PLETHy)/3);
printpoint(ECGy+(Etemp_y-ECGy)*2/3, PLETHy+(Ptemp_y-PLETHy)*2/3);
}
ECGy=Etemp_y;
PLETHy=Ptemp_y;
pointer++;
}
break;
case 15://restore print mode
for(pspace=0;pspace<9;pspace++)
fprintf(stdprn,"%c",10);
fprintf(stdprn,"%c",27); fprintf(stdprn,"%c",64);
PrtWavCount++;
break;
default: PrtWavCount=255;
break;
}//switch end
}//printer ready
return;
}//print wave function
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -