⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print.c

📁 公司打印机转接板的一段小代码 主要功能是从ARM上通过I2C读取数据
💻 C
📖 第 1 页 / 共 2 页
字号:
					   bag[j++]=' ';
					   bag[j++]=hextoasc(date[i]/10);
			   		   bag[j++]=hextoasc(date[i++]%10);
					   bag[j++]=':';
					   bag[j++]=hextoasc(date[i]/10);
			   		   bag[j++]=hextoasc(date[i]%10);
					   bag[j++]='\0';
					   printwrite(247);
					   printwrite(42);
					   printwrite(31);
					   print_stringdata(bag);
					   print_stringdata(" 10mv/mm 12.5mm/s");
					   printwrite(248);
					   printwaveset(v);
					   break;
				case 0:readbuf(12);								//实时打印数据
					   break;
				case 8:printwenum=0;printrenum=0;
					   printdata();
					   break;
			    case 9:				//定时打印数据+波形的第一个数据包
					   printstate&=0xf0;printstate|=m&0xf;
					   savestate=printstate;
					   v=i2rebuf[19];
					   printwenum=0;printrenum=0;
					   printdata();
					   printname();
					   printwrite(247);
					   printwrite(42);
					   printwrite(16);
					   switch(((printstate>>2)&0x3))
					   {
							case 0:i=5;break;
							case 1:i=10;break;
							case 2:i=20;break;
					   }
					  j=0;
					  bag[j++]=hextoasc(i/10);
			   		  bag[j++]=hextoasc(i%10);
					  bag[j++]='m';
					  bag[j++]='v';
					  bag[j++]='/';
					  bag[j++]='m';
					  bag[j++]='m';
					  bag[j++]=' ';
					  switch((printstate&0x3))
					  {
						 	case 0:bag[j++]='1';bag[j++]='2';bag[j++]='.';bag[j++]='5';break;
							case 1:bag[j++]='2';bag[j++]='5';bag[j++]='.';bag[j++]='0';;break;
							case 2:bag[j++]='5';bag[j++]='0';bag[j++]='.';bag[j++]='0';;break;
					  }
					  bag[j++]='m';
					  bag[j++]='m';
					  bag[j++]='/';
					  bag[j++]='s';
					  bag[j]='\0';
					  print_stringdata(bag);
					  printwrite(248);
					  printwaveset(v);//数据加波形头										  
					  break;
				case 11:
				         switch((savestate&0x03))
						{
						case 0:readbuf(12);break;
						case 1:readbuf(24);break;
			//			case 2:readbuf(48);break;
						default:break;
						}
			   		   break;
				case 12:printwenum=0;printrenum=0;
						printdata();				//报警打印
						break;
				default:break;	   
			}
		}
		i2end=0;
}

//*********************************************************************
//函数名:void printdata(void)
//输入参数:
//输出参数:
//函数功能:打印数据函数
//全局变量:
//*********************************************************************
void printdata(void)
{	
	char *alabag;
	uchar i;
	alarm=i2rebuf[2];
	for(i=3;i<9;i++)
		date[i-3]=i2rebuf[i];
	heart=i2rebuf[i++];
	brea=i2rebuf[i++];
	if(i2rebuf[i++]!=0xff)  st2=i2rebuf[i++];
	else st2=0x7fff;
	spo2=i2rebuf[i++];
	pluse=i2rebuf[i++];
	if (i2rebuf[i]==0xff) {temp1=0xffff;i++;} else temp1=i2rebuf[i++]+200;
	if (i2rebuf[i]==0xff) {temp2=0xffff;i++;} else temp2=i2rebuf[i++]+200;
	if (i2rebuf[i]==0xff) {sys=0xffff;i++;} else sys=i2rebuf[i++]+30;
	if (i2rebuf[i]==0xff) {dia=0xffff;i++;} else dia=i2rebuf[i++]+10;
	switch ((alarm&0x7f))
	{
		case 0:alabag=	"NO   ";break;
		case 12:alabag=	"Heart";break;
		case 6:alabag=	"Reap ";break;
		case 10:alabag= "Sp0-2";break;
		case 11:alabag= "S-T  ";break;
		case 5:alabag=	"Temp1";break;
		case 4:alabag=	"Temp2";break;
		case 9:alabag=  "SYS  ";break;
		case 8:alabag=  "Dia  ";break;
		default:alabag= "NO   ";break;
	}
	printwordset(6);
	for(i=0;i<24;i++)
		printwrite(' ');
	print_stringdata("DHRSSP");//第一列
	print_stringdata("aeepyu");//第二列
	print_stringdata("tasosl");//第三列
	print_stringdata("erp2 e");//第四列
	print_stringdata(":t   e");//第五列
	printwrite(hextoasc(date[0]/10));			//第六列
	print_stringdata(":::::");					//
	printwrite(hextoasc(date[0]%10));			//第
	printwrite(hund1(heart));
	printwrite(hund1(brea));
	printwrite(ten1(spo2));						//七
	printwrite(hund0(sys));
	printwrite(hund1(pluse));					//列
	printwrite(hextoasc(date[1]/10));			//第
	printwrite(ten1(heart));
	printwrite(ten1(brea));						//八
	printwrite(one1(spo2));
	printwrite(ten0(sys));
	printwrite(ten1(pluse));					//列
	printwrite(hextoasc(date[1]%10));			//第
	printwrite(one1(heart));
	printwrite(one1(brea));						//九
	printwrite('%');
	printwrite(one0(sys));
	printwrite(one1(pluse));					//列
	print_stringdata("-     ");					//第十列
	printwrite(hextoasc(date[2]/10));
	print_stringdata("TTSDA");					//第十一列
	printwrite(hextoasc(date[2]%10));
	print_stringdata("eeTil");					//第十二列
	print_stringdata("-mm2aa");					//第十三列
	printwrite(hextoasc(date[3]/10));
	print_stringdata("pp: r");					//第十四列

	printwrite(hextoasc(date[3]%10));			//第
	print_stringdata("12");						//十
	if(st2<0||st2==0x7fff)	printwrite('-'); 	//五
	else printwrite(' ');
	print_stringdata(" m");						//列

	print_stringdata(" ::");					//第
	if(st2==0x7fff)	printwrite('-');			//十
	else printwrite(hextoasc(abs(st2)/100));	//六
	print_stringdata("::");						//列

	printwrite(hextoasc(date[4]/10));			//第
	printwrite(hund0(temp1));					//十
	printwrite(hund0(temp2));
	printwrite('.');							//七
	printwrite(hund1(dia));
	printwrite(*alabag);						//列

	printwrite(hextoasc(date[4]%10));			//第
	printwrite(ten0(temp1));					//十
	printwrite(ten0(temp2));					//
	if(st2==0x7fff) printwrite('-');
	else printwrite(hextoasc((abs(st2)%100)/10));//八
	printwrite(ten1(dia));						//
	printwrite(*(alabag+1));					//列

	print_stringdata(":..");					//第
	if(st2==0x7fff) printwrite('-');
	else printwrite(hextoasc(abs(st2)%10));		//十
	printwrite(one1(dia));						//九
	printwrite(*(alabag+2));					//列

	printwrite(hextoasc(date[5]/10));			//第
	printwrite(one0(temp1));					//二
	printwrite(one0(temp2));					//十
	print_stringdata("  ");						//
	printwrite(*(alabag+3));					//列

	printwrite(hextoasc(date[5]%10));			//第
	print_stringdata("    ");					//二十
	printwrite(*(alabag+4));					//列
	for(i=0;i<24;i++)
		printwrite(' ');
}






//*********************************************************************
//函数名:void printname(void)
//输入参数:
//输出参数:
//函数功能:打印波形名字函数
//全局变量:
//*********************************************************************
void printname(void)
{
 printwrite(243);
 printwrite(3);
 printwrite(38);
 printwrite(25);
 printwrite(7);
 printwrite(245);
 print_stringdata("   EPRCLEGEP      ");
}



//*********************************************************************
//函数名:void readbuf(uchar m)
//输入参数:uchar m  打印速度
//输出参数:
//函数功能:把波形数据解包放入打印机发送缓冲区
//全局变量:
//*********************************************************************
void readbuf(uchar m)
{
	uchar i,j;
	if(alarm&0x80)
	{
	for(i=0;i<m;i++)
		{
			j=0;
			printbuf[printwenum++]=val(i2rebuf[j*m+i+2]+128);
			j=1;
			printbuf[printwenum++]=val(i2rebuf[j*m+i+2]);
			j=2;
			if(i>12) printbuf[printwenum++]=val(i2rebuf[j*m+i+2-12]);
			else printbuf[printwenum++]=val(i2rebuf[j*m+i+2]);
/*			for(j=1;j<3;j++)		
				printbuf[printwenum++]=val(i2rebuf[j*m+i+2]);*/
		}
	 }
	 else 
	 {
	 	for(i=0;i<m;i++)
	 	{
		j=0;
		printbuf[printwenum++]=val(i2rebuf[j*m+i+2]+128);
		for(j=1;j<3;j++)		
			printbuf[printwenum++]=val(i2rebuf[j*m+i+2]);
		}
	 }
}



//*********************************************************************
//函数名:uchar val(uchar m)
//输入参数:uchar m   
//输出参数:uchar m
//函数功能:滤去大数据
//全局变量:
//*********************************************************************
uchar val(uchar m)
{
	if(m>=240) return 239;
	else if(m==0) return 1;
	else return m;
}


//*********************************************************************
//函数名:uchar hund0(uint m)
//输入参数:uint m
//输出参数:
//函数功能:word取百位处理,并转为ASCII码
//全局变量:
//*********************************************************************
uchar hund0(uint m)
{
	if(m==0xffff)  m='-';
	if(m<99)  m=' ';
	else  m=hextoasc(m/100);
	return m;
}

//*********************************************************************
//函数名:uchar ten0(uint m)
//输入参数:uint m
//输出参数:
//函数功能:word取十位处理,并转为ASCII码
//全局变量:
//*********************************************************************
uchar ten0(uint m)
{
	if(m==0xffff) return ('-');
	else return hextoasc((m%100)/10);
}

//*********************************************************************
//函数名:uchar one0(uint m)
//输入参数:
//输出参数:
//函数功能:word取个位处理,并转为ASCII码
//全局变量:
//*********************************************************************
uchar one0(uint m)
{
	if(m==0xffff) return ('-');
	else return hextoasc(m%10);
}


//*********************************************************************
//函数名:uchar hund1(uchar m)
//输入参数:
//输出参数:
//函数功能:byte取百位处理,并转为ASCII码
//全局变量:
//*********************************************************************
uchar hund1(uchar m)
{
	if(m==0xff)  m='-';
	if(m<99)  m=' ';
	else  m=hextoasc(m/100);
	return m;
}

//*********************************************************************
//函数名:uchar ten1(uchar m)
//输入参数:
//输出参数:
//函数功能:byte取十位处理,并转为ASCII码
//全局变量:
//*********************************************************************
uchar ten1(uchar m)
{
	if(m==0xff) return ('-');
	else return hextoasc((m%100)/10);
}

//*********************************************************************
//函数名:uchar one1(uchar m)
//输入参数:
//输出参数:
//函数功能:byte取个位处理,并转为ASCII码
//全局变量:
//*********************************************************************
uchar one1(uchar m)
{
	if(m==0xff) return ('-');
	else return hextoasc(m%10);
}

//*********************************************************************
//函数名:uchar hextoasc(uchar m)
//输入参数:
//输出参数:
//函数功能:0~9数字转为ASCII码
//全局变量:
//*********************************************************************
uchar hextoasc(uchar m)
{
	return(0x30+m);	
}


//*********************************************************************
//函数名:void printwordset(uchar m)
//输入参数:
//输出参数:
//函数功能:字符输出形态设置
//全局变量:
//*********************************************************************
void printwordset(uchar m)
{
 uchar i;
 uchar len=0;
 len=45/m;
 printwrite(243);
 printwrite(m);
 for(i=0;i<m;i++)
 	printwrite(len*(5-i)+7);
 printwrite(245);
}



//*********************************************************************
//函数名:void printwaveset(void)
//输入参数:
//输出参数:
//函数功能:波形形态设置
//全局变量:
//*********************************************************************
void printwaveset(char v)
{
 char temp;
 temp=-(v/250)*15;
 printwrite(244);
 printwrite(3);

 switch((printstate&0xc)>>2)
 {
 	case 0:printwrite(1);
		   printwrite(temp+35);
		   printwrite(28);
		   printwrite(15);
		   break;
	case 1:printwrite(2);
		   printwrite(temp+35);
		   printwrite(37);
 	  	   printwrite(20);
 		   break;
	case 2:printwrite(4);
		   printwrite(temp+30);
		   printwrite(43);
 	  	   printwrite(33);
		   break;
 }
 
printwrite(246);
}


/*void watchdog(void)
{
	WFEED1=0xa5;
	WFEED2=0x5a;
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -