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

📄 transgl.cpp

📁 口通信 VC 完整串口通信程序Vc++源代码 串口通讯 vc++ 源代码 vc 串口通信 串口通信 mfc 通信 发送程序 vc++ 串口 VC 串口通信程序 完整串口通信程序Vc 源代码 VC串口通
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		CString strSQL;

		//strSQL.Format("delete from trans_info where trans_id='%s'",m_ctrTrans.GetItemText(n-1,0));
		strSQL.Format("delete from trans_js where trans_tel='%s'",m_jslist.GetItemText(n-1,2));
		if(!database.ExecuteSQL(strSQL,strSQL.GetLength()))
		{
			AfxMessageBox("删除失败!");
			return;
		}			

	}
	string strNum="";
	strNum=m_jslist.GetItemText(n-1,2);
	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="";

/*	//删除监控中的数据
             CDatabase1 database2;	
	if(!database2.ConnectDB())
	{
		return;
	}
	CString strSQL1;
	
	CString charset5="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database2.ExecuteSQL(charset5,charset5.GetLength());//执行语句.
       	strSQL1.Format("delete from trans_stat where trans_tel='%s'",m_jslist.GetItemText(n-1,2));
		if(!database2.ExecuteSQL(strSQL1,strSQL1.GetLength()))
		{
			AfxMessageBox("删除失败!");
			return;
		}			
	m_jslist.DeleteItem(n-1);
	m_sStatus3="";
	//显示
	binddutytrans();
	ShowTrans();*/

	
}

void CTransGL::binddutytrans()
{
	m_jslist.DeleteAllItems();
	CDatabase1 database_duty_name;
	if(!database_duty_name.ConnectDB())
	{
		return;
	}
	CString charset1="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database_duty_name.ExecuteSQL(charset1,charset1.GetLength());//执行语句
     Data_Param result1;		
	
	result1.tab_name="trans_js";
	result1.select_exp="TRANS_tel";
//	CString def1;
//	def1="TRANS_ID like '%"+m_TRANS_ID+"%'";
//	def1.Format("TRANS_ID='%s'",m_TRANS_ID);
//	result1.where_def=def1.GetBuffer(100);
	if(database_duty_name.SelectAll(&result1))
	{
		int count=(int)database_duty_name.GetRowNum();			
		
		for(int j=0;j<count;j++)			
		{
			database_duty_name.SeekData(j);				
			MYSQL_ROW row1=database_duty_name.GetRecord();
			CString name;
			name=row1[0];

		

	//查询ID对应的责任人姓名
	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;

	
	def.Format("TRANS_tel='%s'",name);
 //    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();
			
			                          m_jslist.InsertItem(i,row[0]);
			                            m_jslist.SetItemText(i,1,row[1]);
			                              m_jslist.SetItemText(i,2,row[2]);
		                                  	m_jslist.SetItemText(i,3,row[3]);


							}
					} 
		}
	}



}

BEGIN_EVENTSINK_MAP(CTransGL, CDialog)
    //{{AFX_EVENTSINK_MAP(CTransGL)
	ON_EVENT(CTransGL, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CTransGL::OnOnCommMscomm1() 
{
	// TODO: Add your control notification handler code here
	VARIANT variant_inp;
	COleSafeArray safearray_inp;
	LONG len,k;
	BYTE rxdata[2048];
	CString strtemp;
	
	switch(m_bottoncomumui.GetCommEvent()) 
	{
	case 1: //comEvSend发送数据
		break;
	case 2: //comEvReceive读取数据
		variant_inp=m_bottoncomumui.GetInput();//读缓冲区
		safearray_inp=variant_inp;//VARIANT型变量转换为COleSafeArray型变量
		len=safearray_inp.GetOneDimSize();//得到有效数据长度
		//接收数据		
		for(k=0;k<len;k++)
		{
			safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
			BYTE bt=*(char *)(rxdata+k);//字符型
			strtemp.Format("%c",bt);//将字符送入临时变量strtemp存放
			m_sStatus3 += strtemp;				
		}
//		if(m_sStatus3.Find("OK")>=0)
//			m_sStatus1="成功";
		UpdateData(FALSE);//回显
		string strNum="";
		if(m_sStatus3.Find("+CMT:")>=0)//处理消息内容
	{

		PDU P;
		int index=m_sStatus3.Find("+CMT:");

		CString str=m_sStatus3.Mid(index);
		index=str.Find("\r");
		string content=str.Mid(index+2);
		
		
//		string strTime=P.GetDataTime(content).substr(12);
         string strTime=P.GetDataTime(content);
		 strNum=P.GetTelphone(content).substr(2);
		CString sAlarm;
		sAlarm.Format("时间:%s\r\n",strTime.c_str());
		string strCont;
		if(P.IsPDU(content))
			strCont=P.GetContent(content);
		else
			strCont=P.GetTextContent(content);
//		CTransJS  sl;
//		sl.m_sStatus2=strCont.c_str();
//		sAlarm+=str;
//		str.Format("内容:%s",strCont.c_str());
//		UpdateData(FALSE);
		if(!(m_sStatus3.Find("The monitor is ready!")>=0))
	{
				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;
	
	def.Format("TRANS_tel='%s'",strNum.c_str());
 //    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 database;	
	if(!database.ConnectDB())
	{	
		AfxMessageBox("连接服务器失败!");
		return;
	}
	CString charset="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database.ExecuteSQL(charset,charset.GetLength());//执行语句.
	CString sSQL;


			sSQL.Format("insert into trans_js (TRANS_TEL) values ('%s')",
			strNum.c_str());
			if(!database.ExecuteSQL(sSQL,sSQL.GetLength()))
			{
				AfxMessageBox("操作失败!");
				break;
			}
					}
//写入JS中


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

  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();
		
	}
	}
	///删除变压器
      

//		if(!(m_sStatus3.Find("The monitor is closed!")>=0))
      if(!(m_sStatus3.Find("The monitor is closed!")>=0))
     
	{
		CDatabase1 database;
	if(!database.ConnectDB())
	{
		return;
	}
	CString charset1="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database.ExecuteSQL(charset1,charset1.GetLength());//执行语句
	
	



		CString strSQL;

		//strSQL.Format("delete from trans_info where trans_id='%s'",m_ctrTrans.GetItemText(n-1,0));
		strSQL.Format("delete from trans_js where trans_tel='%s'",strNum.c_str());
		if(!database.ExecuteSQL(strSQL,strSQL.GetLength()))
		{
			AfxMessageBox("删除失败!");
			return;
		}			


	//删除监控中的数据
             CDatabase1 database2;	
	if(!database2.ConnectDB())
	{
		return;
	}
	CString strSQL1;
	
	CString charset5="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database2.ExecuteSQL(charset5,charset5.GetLength());//执行语句.
       	strSQL1.Format("delete from trans_stat where trans_tel='%s'",strNum.c_str());
		if(!database2.ExecuteSQL(strSQL1,strSQL1.GetLength()))
		{
			AfxMessageBox("删除失败!");
			return;
		}			
//	m_sStatus3="";
	//显示
	binddutytrans();
	ShowTrans();
		}

		
		break;
//	default:
//		m_bottoncomumui.SetOutBufferCount(0);
//		break;
	}	
	
}

bool CTransGL::InitCom()
{
	if (m_bottoncomumui.GetPortOpen()) 
		m_bottoncomumui.SetPortOpen(false);//如果是打开的,则先关闭串口
	
	
	m_bottoncomumui.SetCommPort(1); //选择COM1
	m_bottoncomumui.SetInBufferSize(1024);//设置输入缓冲区大小
	m_bottoncomumui.SetOutBufferSize(1024);//设置输出缓冲区大小
	m_bottoncomumui.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
	m_bottoncomumui.SetInputMode(1);//以二进制方式读写数据
	m_bottoncomumui.SetRThreshold(1);//当接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
	m_bottoncomumui.SetSettings("9600,n,8,1");//波特率9600,无校验位,8个数据位,1个停止位
	
	if(!m_bottoncomumui.GetPortOpen())
	{   m_bottoncomumui.SetPortOpen(TRUE);
	    AfxMessageBox("串口连接成功!");
	}
	else
	{ m_bottoncomumui.SetInBufferCount(0);
	   AfxMessageBox("串口连接失败");
	}
	return true;
	

}

void CTransGL::receive()
{

}

bool CTransGL::OnStart()
{
	try
	{
		if(!InitCom()) 
			return FALSE;
//		m_sStatus3="";
	m_bottoncomumui.SetOutput(COleVariant("AT\r"));	
		Sleep(1000);
	OnOnCommMscomm1();
		m_bottoncomumui.SetOutput(COleVariant("AT+CNMI=2,2,0,1,1\r"));
		m_bottoncomumui.SetOutput(COleVariant("AT+CMGF=0\r"));
		//得到SIM卡基本信息
		//短信中心
		//卡号
		m_sStatus3="";
//		if(m_sStatus1.Find("OK")>=0)
//		{m_sStatus1="连接成功";UpdateData(FALSE);return TRUE;}
//		else {m_sStatus1="连接失败";UpdateData(FALSE);return FALSE;}
	}
	catch (...) 
	{
		//AfxMessageBox(ex.what());
		return FALSE;
	}


}

⌨️ 快捷键说明

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