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

📄 registercbk.c

📁 基于网络服务控制芯片TF-320的嵌入式web server源代码
💻 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 + -