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

📄 device_driver(c_language).txt

📁 驱动程序方面的经典,对想学习内核编译的人会有很大帮助
💻 TXT
📖 第 1 页 / 共 2 页
字号:
							for(i=0;i<30;i++)      
         						{  
									mywrite(40290+i,recevbuffer[i]);
	        			 		}
						}
					statusread=0;lljnum=5;commandstatus=0;
					/*fputs(recevbuffer,com1);	发送到com1*/

				 }

				kkk=0;
/*****************清接收区******************************************/
		
       				  for(i=0;i<30;i++)      
        			 {  
					recevbuffer[i]='\0';
         			}
 /*****************清接收区******************************************/
				break;


/*****************开封流量计3瞬时流量******************************************/		
		case 5 :     
     			songbuffer[0]='{';songbuffer[1]='0';songbuffer[2]='3';songbuffer[3]=0x1B;
	 			songbuffer[4]='1';songbuffer[5]='1';songbuffer[6]='\r';	songbuffer[7]='\0';
	 			songbuffer[8]='\0';songbuffer[9]='\0';songbuffer[10]='\0';songbuffer[11]='\0';     			if(commandstatus==0)
	           		{
				interval(15,10);            /*超时*/
	           		settimer(15,4);
				release_processor();;	           		
	 		   		fputs(songbuffer,com1);
	 		   		commandstatus=1;
	 		   		}
	 		  
	 		   		
				while(timer(15)>0){release_processor();}

			   if(timer(15)==0)  
				{ number++;commandstatus=0;
				}
			   if((number>0)&&(commandstatus==0))  
				{ lljnum=6;number=0;
				}
				release_processor();;

				release_processor();;	 		   	
	 		   	/******************* * 存储到40320起始30字节内 **********************/
         		if (statusread==1)
        		 {
        		 	if((recevbuffer[8]==108)&&(recevbuffer[9]==111)&&(recevbuffer[10]==119)
        		 			&&(recevbuffer[11]==32)&&(recevbuffer[12]==49)&&(recevbuffer[13]==62))
					
        		 		{
							for(i=0;i<30;i++)      
         							{  
										mywrite(40320+i,recevbuffer[i]);
	        			 			}
						}
					statusread=0;lljnum=6;commandstatus=0;
					/*fputs(recevbuffer,com1);	发送到com1*/

				 }
				release_processor();;
				kkk=0;
/*****************清接收区******************************************/
		
       				  for(i=0;i<30;i++)      
        			 {  
					recevbuffer[i]='\0';
         			}
 /*****************清接收区******************************************/
				break;



/*****************流量计3累计流量******************************************/		
		case 6 : 		
	 			songbuffer[0]='{';songbuffer[1]='0';songbuffer[2]='3';songbuffer[3]=0x1B;
				 songbuffer[4]='1';songbuffer[5]='3';songbuffer[6]='\r';	songbuffer[7]='\0';
	 			songbuffer[8]='\0';songbuffer[9]='\0';songbuffer[10]='\0';songbuffer[11]='\0';   
      			      if(commandstatus==0)
	           		{
				interval(15,10);            /*超时*/
	           		settimer(15,6);
	           		
	 		   		fputs(songbuffer,com1);
	 		   		commandstatus=1;
	 		   		}
				release_processor();;	 		   
	 		   		
               while(timer(15)>0){release_processor();}

			   if(timer(15)==0)  
				{ number++;commandstatus=0;
				}
			   if((number>0)&&(commandstatus==0))  
				{ lljnum=7;number=0;
				}
				release_processor();;	 		   	
	 		   	/******************* * 存储到40350起始30字节内 **********************/
         		if (statusread==1)
        		 	{  
        		 		if((recevbuffer[8]==119)&&(recevbuffer[9]==100)&&(recevbuffer[10]==32)
        		 			&&(recevbuffer[11]==51)&&(recevbuffer[12]==62)&&(recevbuffer[13]==32))


        		 		{
							for(i=0;i<30;i++)      
         						{  
									mywrite(40350+i,recevbuffer[i]);
	        				 	}
						}
						statusread=0;lljnum=7;commandstatus=0;
						/*fputs(recevbuffer,com1);	发送到com1*/

				 	}
				release_processor();;
				kkk=0;
/*****************清接收区******************************************/
				release_processor();;		
       				  for(i=0;i<30;i++)      
        			 {  
					recevbuffer[i]='\0';
         			}
 /*****************清接收区******************************************/
				break;
  	  other: 		
  				release_processor();;	  		    
				break;
		}
		}
		lljnum=0;

		release_processor();;   
	 
         
	  
/***********************记入历史数据***************************************/
		if(myread(40002)>0) history_status=1;
           
		if((history_status>0)&&(myread(40002)<1 ))
	 	{
	 	storedata();history_status=0;
		}
		release_processor();


	}
}

/******************************设置串行口****************************/
void SetCom(void) 
{
  struct pconfig   serial_setting;
  
  get_port(com1,&serial_setting);
  serial_setting.baud     =BAUD4800;
  serial_setting.duplex   =HALF;
  serial_setting.parity   =NONE;
  serial_setting.data_bits=DATA8;
  serial_setting.stop_bits=STOP1;
  request_resource(IO_SYSTEM);
  set_port(com1,&serial_setting);

  release_resource(IO_SYSTEM);
}	 

/****************子函数mywrite写数据库     ************************************************************/

void mywrite(unsigned int Port,unsigned int value)
{
	request_resource(IO_SYSTEM);
	setdbase(MODBUS,Port,value);
	release_resource(IO_SYSTEM);
}
/***********************************************************/

unsigned int myread(unsigned int Port)
{  int kk; 
	request_resource(IO_SYSTEM);
	kk=dbase(MODBUS,Port);
	release_resource(IO_SYSTEM);
	return kk;
}

/******年+月+日+总流量+总累计流量存储到40300起始地址内***存储函数*****/
void storedata(void)
{unsigned int i,p,q;  /*年月日*/
unsigned int store[71]; 
store[0]=abs(myread(40004)/10)+48;store[1]=myread(40004)-(store[0]-48)*10+48;
store[2]=abs(myread(40005)/10)+48;store[3]=myread(40005)-(store[2]-48)*10+48;
store[4]=abs(myread(40006)/10)+48;store[5]=myread(40006)-(store[4]-48)*10+48;
store[6]=abs(myread(40001)/10)+48;store[7]=myread(40001)-(store[6]-48)*10+48;

store[8]=myread(40210);/*1#瞬时*/
store[9]=myread(40211);store[10]=myread(40212);
store[11]=myread(40213);store[12]=myread(40214);
/*store[13]=myread(40215);*/

 /*1#累计补0*/

store[13]='0';store[14]=myread(40243); 
store[15]=myread(40244);store[16]=myread(40245); 
store[17]=myread(40246);store[18]=myread(40247); 
store[19]=myread(40248);store[20]=myread(40249); 
/*2#瞬时*/
store[21]=myread(40270);
store[22]=myread(40271);store[23]=myread(40272);
store[24]=myread(40273);store[25]=myread(40274);
store[26]=myread(40275);store[27]=myread(40276);


/*2#累计补0*/
store[28]='0';          store[29]=myread(40300); 
store[30]=myread(40301);store[31]=myread(40302); 
store[32]=myread(40303);store[33]=myread(40304); 
store[34]=myread(40305);store[35]=myread(40306); 
/*3#瞬时*/
store[36]=myread(40335);
store[37]=myread(40336);store[38]=myread(40337);
store[39]=myread(40348);store[40]=myread(40339);
/*store[43]=myread(40342);*/
;/*3#累计*/
store[41]=myread(40364);; 
store[42]=myread(40365); 
store[43]=myread(40366);store[44]=myread(40367); 
store[45]=myread(40368);store[46]=myread(40369); 
store[47]=myread(40370);store[48]=myread(40371); 
store[49]=myread(40372);


for (i=0;i<9550;i++)
	{
 		mywrite(49999-i,myread(49949-i));
		
	}
for (i=0;i<50;i++)
	{
		p=40400+i;q=store[i];
		mywrite(p,q);
		
	}
}
void signal(unsigned character,unsigned error)
{unsigned int input ;
if((error==0)&&(lljnum>0))
  {
	input=fgetc(com1);statusread=1;

 
  	recevbuffer[kkk]=input;
  	
  	

 	 kkk++;  }
}

⌨️ 快捷键说明

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