捋清网页点击设备信息与开发板的交互(续集)

捋清网页点击设备信息与开发板的交互(续集)

看懂部分代码后得知是通过 tcapi_get()获得信息的,该函数调用的是tcapi get 节点 子项
在这里插入图片描述
在这里插入图片描述


思路:首先在本地进行测试,在开发板上通过调用:

tcapi get Info_Ether brHost

在这里插入图片描述
发现这样可以显示连接的终端的mac地址,再继续调用:

tcapi get Info_Ether PortIP

在这里插入图片描述

由此类比就知道该tcapi_get(“xx1”, “xx2”, xx3)是执行上面的tcapi get xx1 xx2 的结果给 xx3

这样就好办了:

在本地写个测试程序,以终端ip作为判断依据,循环遍历64个lanhost2_entryN,找到匹配的lanhost2_entryN,再利用lanhost2_entryN ,执行tcapi_get( lanhost2_entryN, RxRate_rt, down_rate)…

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libtcapi.h"
#include "cfg_api.h"

typedef struct lan_node
{
	char ip[32];
	char up_rate[16];
	char down_rate[16];

}LAN_NODE;

typedef struct {
	int cnt;
	LAN_NODE lan_list[64];
}LAN_LIST;

int main(int argc, char *argv[])
{
	//打印多少个接入ip:
	fprintf(stdout, "-------------------\n");
	char ip[64*20]={0};
	tcapi_get("Info_Ether", "PortIP", ip);
	fprintf(stdout, "%s\n", ip);
	

	fprintf(stdout, "-------------------\n");
	//分割ip,并将分割好的ip赋值给 lan[index]
	int index=0;
	LAN_LIST lan;
	char *ptr;
	while(1)
	{
		if(0==index)
		{
			ptr = strtok(ip, ",");
		}
		else
		{
			ptr = strtok(NULL, ",");
		}

		if(NULL==ptr)
			break;

		fprintf(stdout, "%s\n", ptr);
		strcpy(lan.lan_list[index].ip, ptr);
		index++;
	}

	fprintf(stdout, "-------------------\n");
	//在64个lanhost2_entryN找出ip地址来,并打印是哪个lanhost2_entryN

	char lan_entry[32]={0};
	char lan_entry_IP[32]={0};
	for(int i=0; i<64; i++)
	{
		memset(lan_entry, 32, 0);
		memset(lan_entry_IP, 32, 0);
		sprintf(lan_entry, "lanhost2_entry%d", i);
		//printf("%s\n", lan_entry);
		tcapi_get(lan_entry, "IP", lan_entry_IP);
		//lan_entry_IP长度小于8 (1.1.1.1)则跳过本次
		if(strlen(lan_entry_IP)<8)
		{
			continue;
		}
		else
		{
			//否则,找出对应的lan_entry
			for(index=0; index<lan.cnt; index++)
			{
				if(!strcmp(lan.lan_list[index].ip, lan_entry_IP))
				{
					printf("%s\n", lan_entry);
				
					//并将该节点的下载速率和上传速率赋值
					tcapi_get(lan_entry, "RxRate_rt", lan.lan_list[index].down_rate);
					tcapi_get(lan_entry, "TxRate_rt", lan.lan_list[index].up_rate);
					fprintf(stdout, "%s down_rate:%s\n", 
							lan.lan_list[index].ip,
							lan.lan_list[index].down_rate);
					fprintf(stdout, "%s up_rate:%s\n", 
							lan.lan_list[index].ip,
							lan.lan_list[index].up_rate);
				}
			}

		}

	}


	return 0;
}

但由于自己不熟悉git,导致写好的测试程序被覆盖,就很醉了,所以这里不展示测试程序,不过大概的意思已经说明了。

将测试程序移植到tz_info中的wan_info.c

在这里插入图片描述

最终修改:

//添加:上传速率up_rate 和 下载速率down_rate
 char lan_entry[32]={0};
 char lan_entry_IP[32]={0};
 //在64个lanhost2_entryN中,对ip地址进行匹配,找出对应ip地址的lanhost2_entryN
 for(int i=0; i<64; i++)
 {
  //字符串打包 lanhost2_entryN
  memset(lan_entry, 32, 0);
  memset(lan_entry_IP, 32, 0);
  sprintf(lan_entry, "lanhost2_entry%d", i);

  //获取lanhost2_entryN 中的ip 到 lan_entry_IP
  tcapi_get(lan_entry, "IP", lan_entry_IP);
  
  //lan_entry_IP 长度小8(1.1.1.1)跳过本次
  if( strlen(lan_entry_IP)<8)
  {
   continue;
  }
  else
  {
   //否则,若地址与该节点地址相同 找出对应的lan_entry
   if(!strcmp(lan->ip, lan_entry_IP))
   { 
    //并将该节点的下载速率和上传速率赋值
    tcapi_get(lan_entry, "RxRate_rt", lan->down_rate);
    tcapi_get(lan_entry, "TxRate_rt", lan->up_rate);
    break;
   }
  }

 }

写好了程序,需编译一遍,当然就只编译这tz_info

./cool 1 tz_info

然后再打包程序

./cool 1 build_fw

完!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值