📄 device_driver(c_language).txt
字号:
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 + -