📄 cbsystem.cpp
字号:
//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 + -