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

📄 cbsystem.cpp

📁 基于WIN CE 的抄表系统,环境wince .net
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		//AfxMessageBox(szrtn2);
		return (LPTSTR)(LPCTSTR)szrtn2;
		
	}
	else
	{
		wsprintf(szError,TEXT("输入有误错误号 : %d "),GetLastError());
		MessageBox(NULL,szError,TEXT("Error"),MB_OK);
		return 0;
	}
	db.Close();
	
}

//***************FUNCTION***************//
//*************with where sentence insert listview***********//
void LvMultiInsertData(LVITEM lvitem, CListCtrl *pList, LPTSTR lpsz1, LPTSTR lpsz2, LPTSTR lpsz3, LPTSTR lpsz4,LPTSTR lpsz5)
{
	

		lvitem.mask = LVIF_TEXT | LVIF_PARAM;
		lvitem.iItem = pList->GetItemCount();
		//lvitem.iItem = &listctrl.GetSelectCount();
		lvitem.iSubItem = 0;
		lvitem.pszText = lpsz1;
		//lvitem.lParam = (LPARAM)pSocket;
		pList->InsertItem(&lvitem);

		lvitem.mask = LVIF_TEXT;
		lvitem.iSubItem = 1;
		lvitem.pszText = lpsz2;
		lvitem.lParam = 0;
		pList->SetItem(&lvitem);
		////////

		lvitem.mask = LVIF_TEXT;
		lvitem.iSubItem = 2;
		lvitem.pszText = lpsz3;
		lvitem.lParam = 0;
		pList->SetItem(&lvitem);
		///////
		lvitem.mask = LVIF_TEXT;
		lvitem.iSubItem = 3;
		lvitem.pszText = lpsz5;
		lvitem.lParam = 0;
		pList->SetItem(&lvitem);
		////////
		lvitem.mask = LVIF_TEXT;
		lvitem.iSubItem = 4;
		lvitem.pszText = lpsz4;
		lvitem.lParam = 0;
		pList->SetItem(&lvitem);
		
}

//****FUNCTION****//
//Empty current mouth power and set current power into last month power.
BOOL DataFresh() 
{
	if(AfxMessageBox(TEXT("[注意]:\n在数据没有上传到服务器时不要数据结转,否则会清空本期抄见!!!\n   《??是否结转??》"), MB_YESNO) == IDYES)
	{
		AfxGetApp()->BeginWaitCursor();
		CCeDBDatabase db;
		CCeDBDatabase *pdb;
		CCeDBRecord rec;
		LPWSTR lpower,lpowerold,lpvalue;

		//lpower=TEXT("0");
		
		if(db.Open(TEXT("NEWPOWER"),NULL,NULL))
		{
			pdb = &db;
			int j = db.GetNumRecords();
			for(int i =0;i<j;i++)
			{
				pdb->SeekToIndex(i);
				pdb->ReadCurrRecord(&rec);
				CCeDBProp* pPowerOld = rec.GetPropFromIdent(PROP_POWEROLD);
				CCeDBProp* pPower = rec.GetPropFromIdent(PROP_POWER);
				
				lpowerold = pPowerOld->GetString();
				lpower = pPower->GetString();
				float fvalue = atof((LPSTR)lpowerold) + atof((LPSTR)lpower);
				CString sz;
				sz.Format(_T("%0.2d"),fvalue);
				//lpowerold = _ltow((_wtol(lpowerold) + _wtol(lpower)),lpvalue,10);
				pPowerOld->SetString((LPWSTR)(LPCTSTR)sz);
				pPower->SetString(_T("0"));

				CCeDBProp powerFilter(CCeDBProp::Type_String,PROP_POWEROLD);
				CCeDBProp powerFilter1(CCeDBProp::Type_String,PROP_POWER);
				
				if(!(db.WriteCurrRecord(&rec,0,&powerFilter)) && !(db.WriteCurrRecord(&rec,0,&powerFilter1)))
				{
					AfxMessageBox(TEXT("数据结转失败!!!"));
					return 0;
				}
				
			}AfxGetApp()->EndWaitCursor();
		}
		AfxMessageBox(TEXT("数据结转成功!!!"));
		db.Close();
	}
	else
	{
		return 0;
	}

}

//********FUNCTION****//
//***thread box****//
UINT OnMessage(LPVOID pParm)
{
	::MessageBox((HWND)pParm,TEXT("正在进行数据传输,请稍等!!!..."),TEXT("数据传输"),MB_OK);
	while(m_off == 1)
	{
		;
	}
	::MessageBox((HWND)pParm,TEXT("数据传输结束,请关闭窗口!!!..."),TEXT("数据传输"),MB_OK);
	
	return 0;
		
}

//********FUNCTION****//
//***Read Data From db****//
void ReadDB(LPWSTR lpsz)
{
	CCeDBDatabase db;
	CCeDBRecord rs;
	CString strCode;  //value of code  
    int num=0;

	CCeDBProp tProp(CCeDBProp::Type_String,PROP_BH);
	db.Open(TEXT("NEWPOWER"),&tProp);

	CCeDBProp pProp((LPWSTR)lpsz,PROP_ID);  //过滤条件
	
	HANDLE hFile = CreateFile(_T("\\My Documents\\JCDATA.TXT"),
         GENERIC_WRITE, FILE_SHARE_READ,
         NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

   if (hFile == INVALID_HANDLE_VALUE)
   {
	   AfxMessageBox(TEXT("创建上传文件出错!"));
   }

	/*CStdioFile f;
	CFileException e;
	if(!(f.Open( _T("\\My Documents\\JCDATA.TXT"), CFile::modeCreate | CFile::modeWrite, &e ) ))
	{
		AfxMessageBox(TEXT("创建上传文件出错!"));
	}*/
   else
   {

	   CFile cf((int)hFile);
	   if(CString(lpsz)=="")	//全部记录
		{
		
			num=(int)db.GetNumRecords();  //记录条数
			db.m_bAutoSeekNext = TRUE;
			while(!db.m_bEOF)
			//for(int i=0;i<num;i++)
			{
				//get current record
				db.ReadCurrRecord (&rs); //读取当前记录
				//strCode=rs.GetPropFromIdent(PROP_BH)->GetString ();
				CString s = DbPrintMessage(&rs);
				s=s+_T("\0");
				LPSTR s1=nTCharTochar((LPTSTR)(LPCTSTR)s);
				cf.Write(s1,s.GetLength()+7);
				cf.Write("\r\n",2);
		
			}
			cf.Close();
		}
		else				//按条件过滤
		{
			
			if(db.SeekFirstEqual(pProp)) 
			{
				db.ReadCurrRecord(&rs);
				//szrtn = WhMultiPrintMessage(&rec);
				while (db.SeekNextEqual(pProp) != 0)
				{
					db.ReadCurrRecord(&rs);
				}
				//return (LPTSTR)(LPCTSTR)szrtn2;
				
			}
			else
			{
				wsprintf(szError,TEXT("输入有误错误号 : %d "),GetLastError());
				MessageBox(NULL,szError,TEXT("Error"),MB_OK);
				//return 0;
			}
			
		}	CloseHandle(hFile);

   }



	
	
	db.Close();
	//
	
}

//*******************FUNCTION************************//
//**********with where sentence multi-printmessage***//
CString DbPrintMessage(CCeDBRecord* prec)
{
	LPTSTR		strID,strName, strNameID,strPower,strPowerOld;
	strID		= NULL;
	strName		= NULL;
	strNameID	= NULL;
	strPower	= NULL;
	CCeDBProp	*pPropID, *pPropName, *pPropNameID, *pPropPower,*pPropPowerOld;
	
	pPropID		 = prec->GetPropFromIdent(PROP_ID);
	pPropName	 = prec->GetPropFromIdent(PROP_NAME);
	pPropNameID	 = prec->GetPropFromIdent(PROP_NAMEID);
	pPropPower	 = prec->GetPropFromIdent(PROP_POWER);
	pPropPowerOld= prec->GetPropFromIdent(PROP_POWEROLD);
	//strName = pPropName->GetString();
	
	strID		= pPropID->m_CePropVal.val.lpwstr;
	strName		= pPropName->m_CePropVal.val.lpwstr;
	strNameID	= pPropNameID->m_CePropVal.val.lpwstr;
	strPower	= pPropPower->m_CePropVal.val.lpwstr;
	strPowerOld	= pPropPowerOld->m_CePropVal.val.lpwstr;
	////***********************************************
	//_ltow((atof(strPower)+atof(strPowerOld)),strValue,10);
	//

	CString s1((LPCTSTR)strID);
	CString s2((LPCTSTR)strName);
	CString s3((LPCTSTR)strNameID);
	CString s4((LPCTSTR)strPower);
	CString s5((LPCTSTR)strPowerOld);
	CString s6;
	s6.Format(_T("%.2f"),atof((LPSTR)(LPCTSTR)s4)+atof((LPSTR)(LPCTSTR)s5));
	CString s = s1+_T(" ")+s2+_T(" ")+s3+_T(" ")+s6+_T(" ");
	return s;
	
}

//********FUNCTION****//
//***Read Data From db****//
BYTE* GetSetData(CString szStr)
{
	CCeDBDatabase db;
	CCeDBRecord rs;
	CStringArray* szArray=new CStringArray;

    BYTE* SendBuff=new BYTE[20];

	CCeDBProp tProp(CCeDBProp::Type_String,PROP_BH,CCeDBProp::Sort_Ascending);
	
	db.Open(TEXT("NEWPOWER"),&tProp);
	db.SeekFirst();
	CCeDBProp pProp((LPWSTR)(LPCTSTR)szStr,PROP_BH);  //过滤条件

	CCeDBProp	*pPropPort;
	LPTSTR	strPort;
	if(db.SeekFirstEqual(pProp)) 
	{
		db.ReadCurrRecord(&rs);
 
		pPropPort   = rs.GetPropFromIdent(PROP_PORT);
		strPort		= pPropPort->GetString();
		
		CString s1((LPCTSTR)strPort);
		szArray->Add(s1);
		while (db.SeekNextEqual(pProp) != 0)
		{
			db.ReadCurrRecord(&rs);
			pPropPort   = rs.GetPropFromIdent(PROP_PORT);
			strPort		= pPropPort->GetString();
			
			CString s1((LPCTSTR)strPort);
			szArray->Add(s1);

		}
	}
	//size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );
	int k=szArray->GetUpperBound();
	SendBuff[0]=0xEB;
	SendBuff[1]=0x90;
	SendBuff[2]=0xEB;
	SendBuff[3]=0x90;
	SendBuff[4]=0x01;
	SendBuff[5]=IntToByte(atoi((LPSTR)(LPCTSTR)szStr));
	SendBuff[6]=IntToByte(k+1);
	for(int i=0;i<=szArray->GetUpperBound();i++)
	{
		SendBuff[7+i]=IntToByte(atoi((LPSTR)(LPCTSTR)szArray->GetAt(i)));
	}
	db.Close();
	return SendBuff;
	
}

void  ByteToChar(BYTE b,char sz[])
{
	byte c;
	c=b;
	c=c >> 4;
	sprintf(sz,"%x",c);
	c=b;
	c=c & 0x0f;
	sprintf(sz+1,"%x",c);
}

int  ByteToHex(BYTE b)
{

	CString s;
	s.Format(_T("%d"),b);
	return _wtoi((LPWSTR)(LPCTSTR)s);

}

BYTE  IntToByte(int i)
{
	BYTE b;
	if(i==0)
		b=0x00;
	if(i==1)
		b=0x01;
	if(i==2)
		b=0x02;
	if(i==3)
		b=0x03;
	if(i==4)
		b=0x04;
	if(i==5)
		b=0x05;
	if(i==6)
		b=0x06;
	if(i==7)
		b=0x07;
	if(i==8)
		b=0x08;
	if(i==9)
		b=0x09;
	if(i==10)
		b=0x0A;
	if(i==11)
		b=0x0B;
	if(i==12)
		b=0x0C;
	if(i==13)
		b=0x0D;
	if(i==14)
		b=0x0E;
	if(i==15)
		b=0x0F;
	return b;
	/*CHAR* h=new CHAR[1];
	_itoa(i,h,16);
	BYTE* b=(BYTE*)h;
	return b[0];*/

}

//****FUNCTION****//
//Update db with where sentence.
BOOL WhMultiUpdateDB(LPWSTR lpbh,LPWSTR lpport,long lpower) 
{
	CCeDBDatabase db;

	CCeDBProp tProp(CCeDBProp::Type_String,PROP_BH);
	db.Open(TEXT("NEWPOWER"),&tProp);
	
	CCeDBRecord rec;

	db.SeekFirst();
	CCeDBProp pProp((LPWSTR)lpbh,PROP_BH);
	if(db.SeekFirstEqual(pProp)||db.ReadCurrRecord(&rec)) 
	{
		do
		{
			CCeDBProp* pPower = rec.GetPropFromIdent(PROP_PORT);
			if(lpport==pPower->GetString())
			{
				//插入记录
				//获得电表常数(PROP_CONST)
				CCeDBProp* pConst = rec.GetPropFromIdent(PROP_CONST);
				LPWSTR lp=pConst->GetString();
				float power=lpower / (_wtol((LPWSTR)lp));
				CString sz;
				sz.Format(_T("%0.2d"),power);
				rec.GetPropFromIdent(PROP_POWER)->SetString((LPWSTR)(LPCTSTR)sz);
				CCeDBProp powerFilter(CCeDBProp::Type_String,PROP_POWER);
				db.WriteCurrRecord(&rec,0,&powerFilter);
				return 0;
			}
			
		}while(db.SeekNextEqual(pProp)||db.ReadCurrRecord(&rec));

	}
	
	
}
//双字节(十六进制)转换成INT
int  HexToInt(BYTE lb,BYTE hb)
{
	int rtn;
	//lb=0X01;
	CString sz;
	sz.Format(_T("%d"),lb);
	rtn=_wtoi((LPWSTR)(LPCTSTR)sz);
	sz.Format(_T("%d"),hb);
	rtn += _wtoi((LPWSTR)(LPCTSTR)sz)*256;
	return rtn;
}
//四字节(十六进制)转换成INT
unsigned long  DHexToInt(BYTE b0,BYTE b1,BYTE b2,BYTE b3)
{
	unsigned long rtn;
	CString sz;
	sz.Format(_T("%d"),b0);
	rtn=_wtol((LPWSTR)(LPCTSTR)sz);
	sz.Format(_T("%d"),b1);
	rtn += _wtol((LPWSTR)(LPCTSTR)sz)*256;
	sz.Format(_T("%d"),b2);
	rtn+=_wtol((LPWSTR)(LPCTSTR)sz)*256*256;
	sz.Format(_T("%d"),b3);
	rtn += _wtol((LPWSTR)(LPCTSTR)sz)*256*256*256;
	return rtn;
}

//


⌨️ 快捷键说明

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