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

📄 transgl.cpp

📁 口通信 VC 完整串口通信程序Vc++源代码 串口通讯 vc++ 源代码 vc 串口通信 串口通信 mfc 通信 发送程序 vc++ 串口 VC 串口通信程序 完整串口通信程序Vc 源代码 VC串口通
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// TransGL.cpp : implementation file
//变压器管理界面

#include "stdafx.h"
#include "GSMTest.h"
#include "TransGL.h"
#include "TransEditDlg.h"
#include "JStrans.h"
#include "PDU.h"
#include "JStrans.h"

#include "winsock.h"
#include <mysql.h>
#include "database.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTransGL dialog


CTransGL::CTransGL(CWnd* pParent /*=NULL*/)
	: CDialog(CTransGL::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTransGL)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTransGL::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTransGL)
	DDX_Control(pDX, IDC_LIST1, m_jslist);
	DDX_Control(pDX, IDC_TRANSLIST, m_ctrTrans);
	DDX_Control(pDX, IDC_MSCOMM1, m_bottoncomumui);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTransGL, CDialog)
	//{{AFX_MSG_MAP(CTransGL)
	ON_BN_CLICKED(IDC_EDIT, OnEdit)
	ON_NOTIFY(NM_DBLCLK, IDC_TRANSLIST, OnDblclkTranslist)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_DUTYMAN, OnDutyman)
	ON_BN_CLICKED(IDC_ADD_trans, OnADDtrans)
	ON_BN_CLICKED(IDC_dele_TRans, OndeleTRans)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

//CDatabase1 database;

/////////////////////////////////////////////////////////////////////////////
// CTransGL message handlers

BOOL CTransGL::OnInitDialog() 
{
	CDialog::OnInitDialog();

//	ShowWindow(SW_MAXIMIZE);
	
	//设置控件大小,位置等.
	CRect rcClient;
	GetWindowRect(&rcClient);
	int cx = rcClient.Width();
	int cy = rcClient.Height();
	
	// TODO: Add extra initialization here
//	GetDlgItem(IDC_TRANSLIST)->MoveWindow(120,20,cx-150,cy-250,true);
	
    m_ctrTrans.InsertColumn(0,"数量",LVCFMT_CENTER,80,0);
	m_ctrTrans.InsertColumn(1,"变压器ID",LVCFMT_CENTER,160,1);	
	m_ctrTrans.InsertColumn(2,"变压器TEL",LVCFMT_CENTER,160,1);	
//	m_ctrTrans.InsertColumn(3,"电流(A相)",LVCFMT_LEFT,80,2);
//	m_ctrTrans.InsertColumn(4,"电流(B相)",LVCFMT_LEFT,80,3);
//	m_ctrTrans.InsertColumn(5,"电流(C相)",LVCFMT_LEFT,80,4);
//	m_ctrTrans.InsertColumn(6,"电压(A相)",LVCFMT_LEFT,80,5);
//	m_ctrTrans.InsertColumn(7,"电压(B相)",LVCFMT_LEFT,80,6);
//	m_ctrTrans.InsertColumn(8,"电压(C相)",LVCFMT_LEFT,80,7);
//	m_ctrTrans.InsertColumn(9,"功率因数",LVCFMT_LEFT,80,8);
//	m_ctrTrans.InsertColumn(10,"温度",LVCFMT_LEFT,50,9);
	m_ctrTrans.InsertColumn(3,"位置",LVCFMT_LEFT,280,10);
	m_ctrTrans.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

	 m_jslist.InsertColumn(0,"数量",LVCFMT_CENTER,80,0);
	m_jslist.InsertColumn(1,"变压器ID",LVCFMT_CENTER,160,1);	
	m_jslist.InsertColumn(2,"变压器TEL",LVCFMT_CENTER,160,1);
	m_jslist.InsertColumn(3,"位置",LVCFMT_LEFT,280,10);
	m_jslist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	OnStart();
	ShowTrans();
	binddutytrans();
	

	

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
CDatabase1 database;
void CTransGL::ShowTrans()
{
	m_ctrTrans.DeleteAllItems();

	try
	{	
		database.ConnectDB();
		//AfxMessageBox("连接服务器成功!");			
		
		CString charset="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
		database.ExecuteSQL(charset,charset.GetLength());//执行语句.
		
		Data_Param result;		
		
		result.tab_name="trans_info";
		result.select_exp="TRANS_num,TRANS_ID,TRANS_TEL,Remark";
		
		if(database.SelectAll(&result))
		{
			int count=(int)database.GetRowNum();			
			
			for(int i=0;i<count;i++)			
			{		
				database.SeekData(i);				
				MYSQL_ROW row=database.GetRecord();	
				m_ctrTrans.InsertItem(i,row[0]);
				m_ctrTrans.SetItemText(i,1,row[1]);
				m_ctrTrans.SetItemText(i,2,row[2]);
				m_ctrTrans.SetItemText(i,3,row[3]);
			//	m_ctrTrans.SetItemText(i,4,row[4]);
			//	m_ctrTrans.SetItemText(i,5,row[5]);
			//	m_ctrTrans.SetItemText(i,6,row[6]);
			//	m_ctrTrans.SetItemText(i,7,row[7]);
			//	m_ctrTrans.SetItemText(i,8,row[8]);
			//	m_ctrTrans.SetItemText(i,9,row[9]);
			//	m_ctrTrans.SetItemText(i,10,row[10]);
			//	m_ctrTrans.SetItemText(i,11,row[11]);
			}
		}		
	}
	catch (...) {		
		AfxMessageBox("连接服务器失败!");				
	}

}

void CTransGL::OnEdit() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_ctrTrans.GetFirstSelectedItemPosition();
	
	if (pos == NULL)
	{
		AfxMessageBox("请选择要编辑的变压器!\n");
		return;
	}

	int nItem =m_ctrTrans.GetNextSelectedItem(pos);
	
	CTransEditDlg dlg;
	dlg.m_TRANS_ID=m_ctrTrans.GetItemText(nItem,1);
	dlg.m_strID=m_ctrTrans.GetItemText(nItem,0);
	dlg.m_strTel=m_ctrTrans.GetItemText(nItem,2);
//	dlg.m_sIa=m_ctrTrans.GetItemText(nItem,3);
//	dlg.m_sIb=m_ctrTrans.GetItemText(nItem,4);
//	dlg.m_sIc=m_ctrTrans.GetItemText(nItem,5);
//	dlg.m_sUa=m_ctrTrans.GetItemText(nItem,6);
//	dlg.m_sUb=m_ctrTrans.GetItemText(nItem,7);
//	dlg.m_sUc=m_ctrTrans.GetItemText(nItem,8);
//	dlg.m_sFactor=m_ctrTrans.GetItemText(nItem,9);
//	dlg.m_sTemp=m_ctrTrans.GetItemText(nItem,10);
	dlg.m_sRemark=m_ctrTrans.GetItemText(nItem,3);
	
	if(dlg.DoModal()!=IDCANCEL)
		ShowTrans();

	
}



void CTransGL::OnDblclkTranslist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	LPNMLISTVIEW phdr = (LPNMLISTVIEW)pNMHDR;
	int item = phdr->iItem;
	POSITION pos = m_ctrTrans.GetFirstSelectedItemPosition();
	
	if (pos == NULL)
	{
		AfxMessageBox("请选择要编辑的变压器!");
		return;
	}
	int nItem =m_ctrTrans.GetNextSelectedItem(pos);
	
	CTransEditDlg dlg;
	dlg.m_TRANS_ID=m_ctrTrans.GetItemText(nItem,1);
	dlg.m_strID=m_ctrTrans.GetItemText(nItem,0);
	dlg.m_strTel=m_ctrTrans.GetItemText(nItem,2);
/*	dlg.m_sIa=m_ctrTrans.GetItemText(nItem,3);
	dlg.m_sIb=m_ctrTrans.GetItemText(nItem,4);
	dlg.m_sIc=m_ctrTrans.GetItemText(nItem,5);
	dlg.m_sUa=m_ctrTrans.GetItemText(nItem,6);
	dlg.m_sUb=m_ctrTrans.GetItemText(nItem,7);
	dlg.m_sUc=m_ctrTrans.GetItemText(nItem,8);
	dlg.m_sFactor=m_ctrTrans.GetItemText(nItem,9);
	dlg.m_sTemp=m_ctrTrans.GetItemText(nItem,10);*/
	dlg.m_sRemark=m_ctrTrans.GetItemText(nItem,3);
	
	if(dlg.DoModal()!=IDCANCEL)
		ShowTrans();

	*pResult = 0;
}

void CTransGL::OnAdd() 
{
	
	//增加变压器信息
	CTransEditDlg dlg;
	dlg.m_strID="add";
	if(dlg.DoModal()!=IDCANCEL)
		ShowTrans();
}


void CTransGL::OnDel() 
{
	// TODO: Add your control notification handler code here
	POSITION pos = m_ctrTrans.GetFirstSelectedItemPosition();
	
	

	if (pos == NULL)
	{
		AfxMessageBox("请选择要删除的变压器!");
		return;
	}
	CDatabase1 database;	
	if(!database.ConnectDB())
	{
		return;
	}
	
		CString charset="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database.ExecuteSQL(charset,charset.GetLength());//执行语句

	if(AfxMessageBox("确实要删除该变压器吗?",MB_OKCANCEL)==IDOK)
	{
		int n=(int)pos;
		CString strSQL;
		//strSQL.Format("delete from trans_info where trans_id='%s'",m_ctrTrans.GetItemText(n-1,0));
		strSQL.Format("delete from trans_info where trans_NUM='%s'",m_ctrTrans.GetItemText(n-1,0));
		if(!database.ExecuteSQL(strSQL,strSQL.GetLength()))
		{
			AfxMessageBox("删除失败!");
			return;
		}			
		m_ctrTrans.DeleteItem(n-1);
	}
	
}

#include "dutymandlg.h"
void CTransGL::OnDutyman() 
{
CDutyManDlg dlg;
dlg.DoModal();	
}

void CTransGL::OnADDtrans() 
{
	// TODO: Add your control notification handler code here
	CJStrans dlg;
//	dlg.m_sID=m_TRANS_ID;
	if(dlg.DoModal()!=IDCANCEL)
	{
	string strNum="";
	strNum=dlg.num;
	char* strContent="开";
	PDU p;
	string x=p.smsEncodedsms("8613800230500",strNum,strContent);
	CString str;
	str.Format("AT+CMGS=%d\r",p.nLength);

	
	m_bottoncomumui.SetOutput(COleVariant(str));
	Sleep(1000);
	OnOnCommMscomm1();
	
	if(m_sStatus3.Find("> ")>=0)
	{
		str.Format("%s%c",x.c_str(),0x1a);		
		str.MakeUpper();
		//m_sStatus2="";
		m_bottoncomumui.SetOutput(COleVariant(str));
	}
 
		
	m_sStatus3="";
	return;///屏蔽后面代码

	CDatabase1 database2;	
	if(!database2.ConnectDB())
	{
		return;
	}
	
		CString charset="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database2.ExecuteSQL(charset,charset.GetLength());//执行语句.
	

	Data_Param result;		
	
	result.tab_name="trans_info";
	result.select_exp="TRANS_num,TRANS_ID,TRANS_tel,remark";
	CString def,numbertel;
	numbertel=strNum.c_str();
	
	def.Format("TRANS_tel='%s'",numbertel);
 //    def="duty_name like '%"+name+"%'";
	result.where_def=def.GetBuffer(100);
	
	                if(database2.SelectRecord(&result))
					{
	                 	int count=(int)database2.GetRowNum();			
		
	                       	for(int i=0;i<count;i++)			
							{
		                       	database2.SeekData(i);				
			                         MYSQL_ROW row=database2.GetRecord();
				 ///确定变压器是否已经在监控列表中
			CDatabase1 database5;

    	if(!database5.ConnectDB())
		{	
  		     AfxMessageBox("连接服务器失败!");
	     	return;
		}
		CString charset5="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database5.ExecuteSQL(charset5,charset5.GetLength());//执行语句

      	Data_Param result5;	
		CString def5;
	
	result5.tab_name="trans_stat";
	result5.select_exp="STAT_ID";
	def5.Format("TRANS_tel='%s'",strNum.c_str());
	result5.where_def=def5.GetBuffer(100);
	if(database5.SelectRecord(&result5))
	{
		int row_num5=(int)database5.GetRowNum();
			 if(row_num5>0)
		 {   
			 AfxMessageBox("变压器已经列入监控!");
			return;
		 }

	}



	///录入变压器的初始直

  CDatabase1 database3;	
	if(!database3.ConnectDB())
	{
		return;
	}
	
	CString charset4="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database3.ExecuteSQL(charset4,charset4.GetLength());//执行语句.
	CString a1,a2,info3;
	a1=" ";
	a2=" ";
	info3.Format("insert into trans_stat (TRANS_ID,TRANS_TEL,place,STATUS,STAT_TIME) values('%s','%s','%s','%s','%s')",
			row[1],row[2],row[3],a1,a2);
		
		
		//strQuery.tab_name="trans_info (TEL,INFO)";
		//info.Format("\'%s\',\'%s\'",m_strTel,m_strInfo);
		//sprintf(SQL,info);
		//strQuery.insert_val=SQL;		
		//if(!database.InsertRecord(&strQuery))
		if(!database3.ExecuteSQL(info3,info3.GetLength()))
		{
			AfxMessageBox("插入数据失败!");
			return;
		}
							}
					}

		binddutytrans();
		ShowTrans();
		
	}


	
}

void CTransGL::OndeleTRans() 
{
	// TODO: Add your control notification handler code here
	POSITION pos1 = m_jslist.GetFirstSelectedItemPosition();
		CDatabase1 database;
	if(!database.ConnectDB())
	{
		return;
	}
	CString charset1="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database.ExecuteSQL(charset1,charset1.GetLength());//执行语句
	
	

	if (pos1 == NULL)
	{
		AfxMessageBox("请选择要删除的变压器!");
		return;
	}
     int n=(int)pos1;
	if(AfxMessageBox("确实要删除该变压器吗?",MB_OKCANCEL)==IDOK)
	{

⌨️ 快捷键说明

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