📄 gprs.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 + -