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

📄 kmain.cpp

📁 moto e2的实时系统概况的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/**********************************************************《实时系统概况 for E2》 通用版  源码Written by Letterb @ scnu_cs_052007/7/12Thank ilove3d, Lasly, and Happyyst***********************************************************/#define QT_NO_DRAGANDDROP#define QT_NO_PROPERTIES#include <E2_EZX_ZApplication.h>#include <E2_EZX_ZKbMainWidget.h>#include <E2_EZX_ZMessageDlg.h>#include <E2_EZX_ZLabel.h>#include <E2_EZX_ZScrollPanel.h>#include <E2_EZX_ZSoftKey.h>#include <E2_EZX_ZOptionsMenu.h>#include <E2_EZX_ZFormContainer.h>#include <qlabel.h>#include <stdio.h>#include <stdlib.h>#include <qfile.h>#include <qtextcodec.h>#include <qlayout.h>#include<qtextstream.h>//#include "MyZKbMain.h"QString ChineseAndEnglish(const char*ChineseString);class MyZKbMain : public ZKbMainWidget{		Q_OBJECT/////////类成员变量声明/////////	public:	int current_timer;//当前timer,单位为毫秒	bool data_unit;//数据界面的计算单位	bool mem_unit;//mem界面的计算单位	bool view_mydata;//当前界面(true为数据界面,否则为mem界面)	bool view_again;//是否首次读取数据状态(df)	ZScrollPanel *zsv;	ZLabel* cpuinfolabel;//cpu标签	ZLabel* meminfolabel;//mem标签	ZLabel* softlabel;//左右软键	ZOptionsMenu* periodopt;//周期选项子菜单	ZOptionsMenu* viewopt;//查看选项子菜单	ZMessageDlg*	dlg;	QString datainfo[8];//数据信息///////////类成员函数///////////	public:	MyZKbMain():ZKbMainWidget((ZHeader::HEADER_TYPE)3,NULL , "ZMainWidget" , 0){//初始化		{		for(int i=0;i<8;i++)			datainfo[i]="0";	}		dlg=NULL;	ini_soft();//初始化界面设置	view_again=false;/////////////////////界面初始化(标题,左右软键,标签位置)///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	QVBoxLayout* layout = getVBoxLayout();	setMainWidgetTitle(ChineseAndEnglish("实时系统概况"));//////////标签初始化////////	zsv = new ZScrollPanel(this , NULL , 0,  (ZSkinService::WidgetClsID)4);	QString info=ChineseAndEnglish("CPU频率:");	QString info2=ChineseAndEnglish("内存状态:");	QString info3 = QString (ChineseAndEnglish("刷新周期:%1 s")).arg(current_timer/1000);	if(current_timer==500)		info3=ChineseAndEnglish("刷新周期: 0.5 s");	softlabel=new ZLabel(info3, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4);	softlabel->setPreferredWidth(240);	softlabel->setAutoResize(true );	cpuinfolabel = new ZLabel(info, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4);	cpuinfolabel->setPreferredWidth(240);	cpuinfolabel->setAutoResize(true );	meminfolabel = new ZLabel(info2, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4);	meminfolabel->setPreferredWidth(240);	meminfolabel->setAutoResize(true );	softlabel=new ZLabel(info3, this, "ZLabel", 0, (ZSkinService::WidgetClsID)4);	softlabel->setPreferredWidth(240);	softlabel->setAutoResize(true );	int height = heightForWidth(240);	zsv->addChild(softlabel , 10 , height);		height+=35;	zsv->addChild(cpuinfolabel , 10 , height);	height = cpuinfolabel->heightForWidth(240) + 10 +10;	height+=40;	zsv->addChild(meminfolabel, 10 , height);	layout->addWidget(zsv);///////选项目录初始化//////////////	ZSoftKey* softKey = new ZSoftKey(NULL , this , this);		QRect rect;		periodopt = new ZOptionsMenu(rect, NULL, NULL , 0 ,(ZSkinService::WidgetClsID)2 );		periodopt->insertItem(ChineseAndEnglish("0.5秒") , NULL , NULL , true , 0 , 0 );		periodopt->insertItem(ChineseAndEnglish("1秒") , NULL , NULL , true , 1 , 1 );		periodopt->insertItem(ChineseAndEnglish("2秒") , NULL , NULL , true , 2 , 2 );		periodopt->insertItem(ChineseAndEnglish("5秒") , NULL , NULL , true , 3 , 3 );		periodopt->setItemChecked(0, true);		periodopt->connectItem(0, this, SLOT(period0_5s()));//链接槽
		periodopt->connectItem(1, this, SLOT(period1s()));		periodopt->connectItem(2, this, SLOT(period2s()));		periodopt->connectItem(3, this, SLOT(period5s()));				viewopt = new ZOptionsMenu(rect, NULL, NULL , 0 ,(ZSkinService::WidgetClsID)2 );		viewopt->insertItem(ChineseAndEnglish("查看CPU/内存") , NULL , NULL , true , 0 , 0 );		viewopt->insertItem(ChineseAndEnglish("查看数据内存") , NULL , NULL , true , 1 , 1 );				viewopt->connectItem(0, this, SLOT(viewcpu_mem()));//链接槽		viewopt->connectItem(1, this, SLOT(viewmydata()));		//////////////////////////////////		ZOptionsMenu* menu = new ZOptionsMenu(rect, softKey, NULL , 0 ,(ZSkinService::WidgetClsID)2 );		menu->insertItem(ChineseAndEnglish("查看(#)") , viewopt , NULL , true , 0 , 0);//插入子菜单		menu->insertItem(ChineseAndEnglish("切换单位(*)") , NULL , NULL , true , 1 , 1 );				menu->insertItem(ChineseAndEnglish("刷新周期") , periodopt , NULL , true , 2 , 2 );//插入子菜单//		menu->insertItem(ChineseAndEnglish("隐藏") , NULL , NULL , true , 3 , 3 );		menu->insertItem(ChineseAndEnglish("关于") , NULL , NULL , true , 3 , 3 );						menu->connectItem(1, this, SLOT(changeunit()));//链接槽//		menu->connectItem(3, this, SLOT(hide()));		menu->connectItem(3, this, SLOT(about()));////////////初始化左右软键//////////	softKey->setOptMenu(ZSoftKey::LEFT, menu);	softKey->setText(ZSoftKey::LEFT, ChineseAndEnglish("选项"), (ZSoftKey::TEXT_PRIORITY)0);	softKey->setText(ZSoftKey::RIGHT, ChineseAndEnglish("关闭"), (ZSoftKey::TEXT_PRIORITY)0);	softKey->setClickedSlot(ZSoftKey::RIGHT, qApp, SLOT(quit()));		setSoftKey(softKey);		view_mydata=!view_mydata;	changemodel();	}void showtimer()//刷新时显示cpu和mem信息,由timereven调用{	   QFile cpufile("/proc/cpuinfo");//读取cpu信息      QString cpuline;  	   if ( cpufile.open( IO_ReadOnly ) )   	  	 {        QTextStream stream( &cpufile );        stream.readLine();        cpuline = stream.readLine(); // 不包括“\n”的一行文本        cpufile.close(); 		}		QString cpuinfo;		cpuinfo= QString (ChineseAndEnglish("--------CPU--------\nCPU频率: %1  MIPS")).arg(cpuline.right(6));		cpuinfolabel->setText(cpuinfo);//设置标签		cpuinfolabel->setPreferredWidth(220);		cpuinfolabel->setAutoResize(true );		//////////////////////////////////		   QFile memfile("/proc/meminfo");//读取mem信息      QString memline;      QString swapline;  	   if ( memfile.open( IO_ReadOnly ) )   	  	 {        QTextStream stream( &memfile );        stream.readLine();        memline = stream.readLine(); // 不包括“\n”的一行文本	     swapline = stream.readLine();        memfile.close(); 		}		QString meminfo;		if(mem_unit)//判断当前单位		{		meminfo = QString (ChineseAndEnglish("------内存状态------\n内存已用: %1 B\n内存空余: %2 B\n交换区已用: %3 B \n交换区空余:  %4 B"))		.arg(memline.mid(15,9))		.arg(memline.mid(24,9))		.arg(swapline.mid(15,9))		.arg(swapline.mid(24,9));		}		else		{			QString temp[4];			temp[0]=tof(memline.mid(15,9));			temp[1]=tof(memline.mid(24,9));			temp[2]=tof(swapline.mid(15,9));			temp[3]=tof(swapline.mid(24,9));				meminfo = QString (ChineseAndEnglish("------内存状态------\n内存已用: %1 KB\n内存空余: %2 KB\n交换区已用: %3 KB \n交换区空余:  %4 KB"))			.arg(temp[0])			.arg(temp[1])			.arg(temp[2])			.arg(temp[3]);		}		meminfolabel->setText(meminfo);		meminfolabel->setPreferredWidth(220);//设置标签		meminfolabel->setAutoResize(true );		////////////////////////////////////}	void ini_soft()//初始化软件设置	{	      QFile file( "/ezx_user/sysinfoini.dat" );	      QString line;	    	if ( file.open( IO_ReadOnly ) ) 		    	{	        QTextStream stream( &file );	        	int countor=0;	         int mem_u=0;	         int data_u=0;	         int view_m=0;	        while ( !stream.eof() ) 	        		{	            line = stream.readLine(); // 不包括“\n”的一行文本	            switch(countor)	            			{	            		case 0:       	 					current_timer=atoi(line);        					break;        					case 1:        						mem_u=atoi(line);        					break;        					case 2:        						data_u=atoi(line);        					break;        					case 3:        						view_m=atoi(line);        					default:        					break;	            									        }			        countor++;			    	    }			    	    if(mem_u)			    	   		mem_unit=true;			    	    	else			    	    			mem_unit=false;			    	    if(data_u)			    	    		data_unit=true;			    	    	else			    	    			data_unit=false;			    	    if(view_m)	    	    				view_mydata=true;	    	    			else 	    	    				view_mydata=false;	        file.close();			}			else//读取失败时,变成默认			{					current_timer=500;				mem_unit=false;								data_unit=false;				view_mydata=false;			}	}	~MyZKbMain()	{		FILE *fp;		fp=fopen("/ezx_user/sysinfoini.dat","wt+");//软件关闭时自动记录当前用户数据		char temp[30];		int view_m=0;		int data_u=0;		int mem_u=0;		if(data_unit)			data_u=1;		else			data_u=0;				if(mem_unit)			mem_u=1;		else			mem_u=0;					if(view_mydata)			view_m=1;		else			view_m=0;				sprintf(temp,"%d\n%d\n%d\n%d\n",current_timer,mem_u,data_u,view_m);//记录格式		fputs(temp,fp);		fclose(fp);				

⌨️ 快捷键说明

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