📄 registercbk.c
字号:
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include "reg51.h"
#include "tfTypes.h"
#include "fs.h"
#include "uip.h"
#include "httpd.h"
#include "html.h"
#include "smi.h"
#include "ip113f.h"
#include "register.h"
extern int stNo;
int registerData;
static char regbuf[80];
static char dddbuf[20];
int local;
int regAddr;
extern struct httpd_state *hs;
extern variable_t var_list[];
bit_t showRegAddr(void)
{
u8_t *sel;
if (hs->opt_id > 31)
return ERROR;
if ((hs->opt_id == regAddr))
sel = "SELECTED";
else
sel = "";
// sprintf(statusbuf,"<option value=\"%d\" %s>%d",hs->opt_id,sel, hs->opt_id);
sprintf(regbuf,"<option =\"%d\" %s>%d",hs->opt_id,sel, hs->opt_id);
hs->opt_id++;
return OK;
}
u8_t ssiRegCfg(u8_t varid, value_t *vp)
{
char buf[6];
int i;
switch (varid)
{
case TGI_REGISTER_NO:
sprintf(dddbuf,"%d module",stNo);
vp->value.string = dddbuf;
vp->type = string;
break;
case TGI_LOCAL:
if(local==1)
vp->value.string = "CHECKED";
else
vp->value.string = "";
vp->type = string;
break;
case TGI_REMOTE:
if(local==1)
vp->value.string = "";
else
vp->value.string = "CHECKED";
vp->type = string;
break;
case TGI_REGDATA:
sprintf(buf,"%x",registerData);
vp->value.string = buf;
vp->type = string;
break;
case TGI_REGADDRC:
vp->type = string;
if (showRegAddr() == OK) //the select_port_opt_id<8 return OK
{
// if(hs->opt_id == 1)//?
vp->value.string = regbuf;
return HTTP_MORE; //HTTP_MORE = 2
}
else //else return ERROR
{
vp->value.string = "";
return OK;
}
}
return OK;
}
u8_t tgiRegCfg(u8_t varid, variable_t *vp)
{
u16_t hex;
u8_t u8buf[8];
int j;
unsigned char receivebuf[4];
unsigned char sendbuf[9];
unsigned int d0;
unsigned int c;
if (strncmp(var_list[0].value, "Local", 5)==0)
{
sendbuf[0]='r';
local=1;
}
else if (strncmp(var_list[0].value, "Remote", 6)==0)
{
sendbuf[0]='a';
local=0;
}
if(stNo<10)
{
sendbuf[1]='0';
sendbuf[2]=stNo+'0';
}
else
{
sendbuf[1]='1';
sendbuf[2]=stNo-10+'0';
}
// regAddr= atoi(vp[1].value) ; // value
regAddr= atoi(var_list[1].value) ; // value
if(regAddr<10)
{
sendbuf[3]='0';
sendbuf[4]=regAddr+'0';
}
else if((regAddr<20)&&(regAddr>10))
{
sendbuf[3]='1';
sendbuf[4]=regAddr-10+'0';
}
else if((regAddr<30)&&(regAddr>20))
{
sendbuf[3]='2';
sendbuf[4]=regAddr-20+'0';
}
else if((regAddr<40)&&(regAddr>30))
{
sendbuf[3]='3';
sendbuf[4]=regAddr-30+'0';
}
if (!strcmp(var_list[3].value, "Read"))
{
sendbuf[5]='0';
sendbuf[6]='0';
sendbuf[7]='0';
sendbuf[8]='0';
putstr(sendbuf);
while(get_char_com()!='s');
getstr(receivebuf);
registerData=0;
for(j=0;j<4;j++)
{
if((receivebuf[j]>='0')&&(receivebuf[j]<='9'))
{
d0=(receivebuf[j]-'0')&0x0f;
}
else if((receivebuf[j]>='a')&&(receivebuf[j]<='f'))
{
d0=(receivebuf[j]-'a'+10)&0x0f;
}
else if((receivebuf[j]>='A')&&(receivebuf[j]<='F'))
{
d0=(receivebuf[j]-'A'+10)&0x0f;
}
registerData=(registerData |( d0<<((3-j)*4)))&0xffff;
}
Delay(500);
}
else if (!strcmp(var_list[3].value, "Write"))
{
strcpy(u8buf,var_list[2].value);
sendbuf[5]=u8buf[0];
sendbuf[6]=u8buf[1];
sendbuf[7]=u8buf[2];
sendbuf[8]=u8buf[3];
putstr(sendbuf);
Delay(5000);
}
httpd_send_file(fs_open1("register.htm"));
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -