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

📄 gprs.c

📁 Echo RTU/PLC系列产品
💻 C
字号:
#include "ctools.h"


void wait_for_response(unsigned int time);
void mywrite(unsigned int Port,unsigned int value);
unsigned int myread(unsigned int Port);
void initadd_reg(void);
void SetCom(void) ;

void fRS485tongxun1(void);
void fRS485tongxun2(void);
void fRS485tongxun3(void);

void signal(unsigned character,unsigned error);
unsigned char recevbuffer[100];
unsigned char songbuffer[40];
int kkk=0;
int biaonumber,statusread;
int dq,ls;                /*当前水位,历史水位*/
int hi;              /*传感器调分届点缺省2184*/
int hh;          /*满量程32760*/
/*******************************主程序******************************************/
void main(void)
{int i;
initadd_reg();     /*调用寄存器初始化程序*/
 interval(1,10);
 settimer(1,2); 

 SetCom();
 fgetc(com1);
        /*清空输入寄存器*/
        for(i=0;i<100;i++)
            {recevbuffer[i]='\0';}

    install_handler(com1,signal);  /*com1接*/

     ls=0   ;
     dq=0   ;
     hi=2184;
     hh=32760;
      songbuffer[0]='S';songbuffer[1]='h';songbuffer[2]='u';songbuffer[3]='i';
           songbuffer[4]='W';songbuffer[5]='e';songbuffer[6]='i';songbuffer[7]=':';


    while(TRUE)
    {
        dq=myread(30001);

        if((dq-ls)>=hi || (ls-dq)>=hi)
        {
        ls=dq;

            if(ls<=hi)
            {
            songbuffer[8]='0';songbuffer[9]='.';songbuffer[10]='1'; songbuffer[11]='M';
            }
            if(ls>=hi && ls<(2*hi))
            {
             songbuffer[8]='0';songbuffer[9]='.';songbuffer[10]='2'; songbuffer[11]='M';
            }
            if(ls>=(2*hi) && ls<(3*hi))
            {
             songbuffer[8]='0';songbuffer[9]='.';songbuffer[10]='4'; songbuffer[11]='M';
            }
            if(ls>=(3*hi) && ls<(4*hi))
            {
             songbuffer[8]='0';songbuffer[9]='.';songbuffer[10]='6'; songbuffer[11]='M';
            }
            if(ls>=(4*hi) && ls<(5*hi))
            {
             songbuffer[8]='0';songbuffer[9]='.';songbuffer[10]='8'; songbuffer[11]='M';
            }
            if(ls>=(5*hi) && ls<(6*hi))
            {
             songbuffer[8]='1';songbuffer[9]='.';songbuffer[10]='0'; songbuffer[11]='M';
            }
            if(ls>=(6*hi) && ls<(7*hi))
            {
             songbuffer[8]='1';songbuffer[9]='.';songbuffer[10]='2'; songbuffer[11]='M';
            }
            if(ls>=(7*hi) && ls<(8*hi))
            {
             songbuffer[8]='1';songbuffer[9]='.';songbuffer[10]='4'; songbuffer[11]='M';
            }
            if(ls>=(8*hi) && ls<(9*hi))
            {
             songbuffer[8]='1';songbuffer[9]='.';songbuffer[10]='6'; songbuffer[11]='M';
            }
            if(ls>=(9*hi) && ls<(10*hi))
            {
             songbuffer[8]='1';songbuffer[9]='.';songbuffer[10]='8'; songbuffer[11]='M';
            }
            if(ls>=(10*hi) && ls<(11*hi))
            {
             songbuffer[8]='2';songbuffer[9]='.';songbuffer[10]='0'; songbuffer[11]='M';
            }
            if(ls>=(11*hi) && ls<(12*hi))
            {
             songbuffer[8]='2';songbuffer[9]='.';songbuffer[10]='2'; songbuffer[11]='M';
            }
            if(ls>=(12*hi) && ls<(13*hi))
            {
             songbuffer[8]='2';songbuffer[9]='.';songbuffer[10]='4'; songbuffer[11]='M';
            }
            if(ls>=(13*hi) && ls<(14*hi))
            {
             songbuffer[8]='2';songbuffer[9]='.';songbuffer[10]='6'; songbuffer[11]='M';
            }
            if(ls>=(14*hi))
            {
             songbuffer[8]='2';songbuffer[9]='.';songbuffer[10]='8'; songbuffer[11]='M';
            }
        fRS485tongxun1();
        fRS485tongxun2();
        fRS485tongxun3();
        }
    

    }
} 
/*******************************主程序结束******************************************/



/****************子函数initadd_reg初始化寄存器***************************************************/
 void initadd_reg(void)
{
    request_resource(IO_SYSTEM);
    clearAllForcing(); 
    release_resource(IO_SYSTEM);  
    interval(1,3);
    settimer(1,4);
       while(timer(1)>0)
       {;}  
    addRegAssignment(AIN_5501,0,30001,0,0,0);/*模拟量输入地址30001-30004*/
    request_resource(IO_SYSTEM); 
                   
}    

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

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

/****************子函数myread读数据库********************************************************/

unsigned int myread(unsigned int Port)
{  int kk;
    request_resource(IO_SYSTEM);
    kk=dbase(MODBUS,Port);
    release_resource(IO_SYSTEM);
    return kk;
}
/******************************设置串行口****************************************************/
void SetCom(void) 
{

  struct pconfig   serial_setting;
  get_port(com1,&serial_setting);
  serial_setting.baud     =BAUD9600;
  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);  /*******初始化com1********/
   release_resource(IO_SYSTEM);

  serial_setting.baud     =BAUD9600;
  serial_setting.duplex   =HALF;
  serial_setting.parity   =NONE;
  serial_setting.data_bits=DATA8;
  serial_setting.stop_bits=STOP1;
  request_resource(IO_SYSTEM);
  set_port(com2,&serial_setting);  /*******初始化com2********/
  release_resource(IO_SYSTEM);


}   



/****************************232口通讯函数********************************/
void wait_for_response(unsigned int time)
{
   struct prot_status;
   interval(0,1);
   settimer(0,time);
do
   {
      release_processor( );
     
   }
while (timer(0));

}


void fRS485tongxun1(void)
{ int i   ;

/***************************************线路1 com1口通讯程序*******************************************/                
    biaonumber=1;
     /******************* 瞬时发送**********************/


         fputs("AT+CMGF=1\r",com1);


          fputs("AT+CMGS=13038020677\r",com1);

         fputs(songbuffer,com1);
         fputs("\x1a",com1);
                                             
        wait_for_response(100);


               /******************* 瞬时值存储到40500起始14字节内 **********************/
                if (statusread==1)
                { for(i=0;i<64;i++)
                    {mywrite(40500+i,recevbuffer[i]-48);
                    mywrite(40600+i,myread(40500+i)/16);}   
                  statusread=0;



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


void fRS485tongxun2(void)
{ int i   ;

/***************************************线路1 com1口通讯程序*******************************************/                
    biaonumber=1;
     /******************* 瞬时发送**********************/
         fputs("AT+IPR=9600",com1);

         fputs("AT+CMGF=1\r",com1);


         fputs("AT+CMGS=13363575161\r",com1);

         fputs(songbuffer,com1);
         fputs("\x1a",com1);

        wait_for_response(100);


               /******************* 瞬时值存储到40500起始14字节内 **********************/
                if (statusread==1)
                { for(i=0;i<64;i++)
                    {mywrite(40500+i,recevbuffer[i]-48);
                    mywrite(40600+i,myread(40500+i)/16);}   
                  statusread=0;



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


void fRS485tongxun3(void)
{ int i   ;

/***************************************线路1 com1口通讯程序*******************************************/                
    biaonumber=1;
     /******************* 瞬时发送**********************/
         fputs("AT+IPR=9600",com1);

         fputs("AT+CMGF=1\r",com1);


         fputs("AT+CMGS=13935715978\r",com1);

         fputs(songbuffer,com1);
         fputs("\x1a",com1);

        wait_for_response(100);


               /******************* 瞬时值存储到40500起始14字节内 **********************/
                if (statusread==1)
                { for(i=0;i<64;i++)
                    {mywrite(40500+i,recevbuffer[i]-48);
                    mywrite(40600+i,myread(40500+i)/16);}   
                  statusread=0;



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


void signal(unsigned character,unsigned error)
{
    if(error==0)
    {   
    
        recevbuffer[0]=fgetc(com1);

        if(recevbuffer[0]=='1')
        
        character=recevbuffer[kkk];
    
        statusread=1;
     
    }
}



        

⌨️ 快捷键说明

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