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

📄 transjs.cpp

📁 口通信 VC 完整串口通信程序Vc++源代码 串口通讯 vc++ 源代码 vc 串口通信 串口通信 mfc 通信 发送程序 vc++ 串口 VC 串口通信程序 完整串口通信程序Vc 源代码 VC串口通
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		UpdateData(FALSE);//回显	
		
		break;
	default:
		m_ctrGsm.SetOutBufferCount(0);
		break;
	}	
}

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


void CTransJS::DecodeData()
{
	UpdateData(TRUE); //赋值
	if(m_sStatus2.Find("+CMT:")>=0)//处理消息内容
	{

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

		CString str=m_sStatus2.Mid(index);
		index=str.Find("\r");
		string content=str.Mid(index+2);
		
		
//		string strTime=P.GetDataTime(content).substr(12);
         string strTime=P.GetDataTime(content);
		string 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);
		//查看变压器是否被列入监控
		CDatabase1 database2;

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

      	Data_Param result2;	
		CString def2;
	
	result2.tab_name="trans_js";
	result2.select_exp="trans_num";
	def2.Format("TRANS_tel='%s'",strNum.c_str());
	result2.where_def=def2.GetBuffer(100);
	if(database2.SelectRecord(&result2))
	{
		int row_num1=(int)database2.GetRowNum();
			 if(row_num1==0)
		 {   
			 AfxMessageBox("变压器未列入监控!");
			 m_sStatus2="";
			return;
		 }

	}


		//查找地点和变压器ID
      CDatabase1 database1;

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

      	Data_Param result;		
	
	result.tab_name="trans_info";
	result.select_exp="TRANS_ID,remark";
	CString def;
	string place;
	string id;

	
	def.Format("TRANS_tel='%s'",strNum.c_str());
 //    def="duty_name like '%"+name+"%'";
	result.where_def=def.GetBuffer(100);
	if(database1.SelectRecord(&result))
	{
		int row_num=(int)database1.GetRowNum();
		database1.SeekData(0);				
	     MYSQL_ROW row=database1.GetRecord();
		 if(row_num==0)
		 {   
			 AfxMessageBox("变压器未录入信息!");
			return;
		 }

		  id=row[0];
	    place=row[1];
	}

//Alarm 	
	index=strCont.find("Alarm");
	if(index>=0)
	{
		CDatabase1 database;

    	if(!database.ConnectDB())
		{	
  		     AfxMessageBox("连接服务器失败!");
	     	return;
		}
     	CString info;

	
	CString charset="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
	database.ExecuteSQL(charset,charset.GetLength());//执行语句.



//	string a1="insert into trans_stat (TRANS_tel,TRANS_id,place,STATUS,Stat_time) values";
//	info.Format("('%s','%s','%s','%s','%s')",strNum.c_str(),id.c_str(),place.c_str(),strCont.c_str(),strTime.c_str());
//	info.Insert(0,a1.c_str());
	string a1="insert into alarm_log (TRANS_id,place,CONTENT,TIME) values";
	info.Format("('%s','%s','%s','%s')",id.c_str(),place.c_str(),strCont.c_str(),strTime.c_str());
	info.Insert(0,a1.c_str());
		if(!database.ExecuteSQL(info,info.GetLength()))
		{
			AfxMessageBox("插入数据失败!");
			return;
		}
	}
	//工作状态的确定
	string status;
	if(index>=0)
		status="报警";
	else
        status="正常";
	//更新状态数据库
	CDatabase1 database6;

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

      CString info6;
	info6.Format("update trans_stat set STATUS='%s',STAT_TIME='%s' where TRANS_tel='%s'",
			status.c_str(),strTime.c_str(),strNum.c_str());
		if(!database6.ExecuteSQL(info6,info6.GetLength()))
		{
			AfxMessageBox("编辑变压器信息失败!");
			return;
		}
     
		if(str.Find("warning")>=0)
		{
			CAlarmDlg dlg;
//			dlg.m_sContent=m_sStatus2;
			m_sStatus2="";
			UpdateData(FALSE);
			dlg.DoModal();
		}

		m_sStatus2="";
			UpdateData(FALSE);
			RedrawWindow();
		
	}
}

void CTransJS::Ondelete() 
{
	// TODO: Add your control notification handler code here
	CDatabase1 database;
	database.ConnectDB();
	CString charset="set names 'gb2312'";//使之正常显示中文,或用set character_set_results=gb2312;
		database.ExecuteSQL(charset,charset.GetLength());
		CString limit;
		limit.Format("delete from trans_stat where trans_id >=0");
			if(database.ExecuteSQL(limit,limit.GetLength()))
			AfxMessageBox("删除数据成功!");
			else
			AfxMessageBox("删除数据失败!");


	
}

void CTransJS::OnTurExcel() 
{
	// TODO: Add your control notification handler code here
	CExcel ce;
	ce.ExportListToExcel(&m_ctrTrans,"变压器状态");
	
}

void CTransJS::OnSigTest() 
{
	// TODO: Add your control notification handler code here
		CIDCHECK dlg;
//		dlg.DoModal();



	if(dlg.DoModal()!=IDCANCEL)
	{
       	if(dlg.m_check_id.IsEmpty())
	{
		AfxMessageBox("请输入ID号!");
		return;
	}
    ///获取ID对应的手机号码
	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_info";
	result1.select_exp="TRANS_TEL";
	CString def1;
	def1.Format("TRANS_ID='%s'",dlg.m_check_id);
	result1.where_def=def1.GetBuffer(100);
	if(database_duty_name.SelectRecord(&result1))
	{
			database_duty_name.SeekData(0);				
			MYSQL_ROW row1=database_duty_name.GetRecord();
			CString tel;
			tel=row1[0];

	string strNum=tel;
//	string strNum="13983908024";
	char* strContent="check";
	PDU p;
	string x=p.smsEncodedsms("8613800230500",strNum,strContent);
	CString str;
	str.Format("AT+CMGS=%d\r",p.nLength);
	
	m_ctrGsm.SetOutput(COleVariant(str));
	Sleep(1000);
	OnOnCommGsmcomm();
	if(m_sStatus2.Find("> ")>=0)
	{
		str.Format("%s%c",x.c_str(),0x1a);		
		str.MakeUpper();
		//m_sStatus2="";
		m_ctrGsm.SetOutput(COleVariant(str));
	}

	
	}
	}
}



void CTransJS::OnDblclkTransList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
		POSITION pos = m_ctrTrans.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		AfxMessageBox("请选择要删除的变压器!");
		return;
	}
		int nItem =m_ctrTrans.GetNextSelectedItem(pos);
	
	CString trans_id;
     trans_id=m_ctrTrans.GetItemText(nItem,2);

	CDatabase1 database;	
	if(!database.ConnectDB())
	{
		return;
	}
	
	CString charset="set charset gb2312;";//使之正常显示中文,或用set character_set_results=gb2312;
	database.ExecuteSQL(charset,charset.GetLength());//执行语句.
	
	Data_Param result;		
	
	result.tab_name="duty_info";
	result.select_exp="DUTY_TEL,DUTY_name,remark";
    CString def1;
	def1.Format("duty_name IN (SELECT duty_name FROM TRANS_duty where trans_id='%s')",trans_id);
//	def1="(trans_info.TRANS_TEL)!=(trans_js.trans_tel)";
	result.where_def=def1.GetBuffer(100);

	

	if(database.SelectRecord(&result))
	{
		int count=(int)database.GetRowNum();			
		
		for(int i=0;i<count;i++)			
		{
			database.SeekData(i);				
			MYSQL_ROW row=database.GetRecord();
			CTRansduty dlg;
			dlg.m_name=row[1];
			dlg.m_place=row[2];
			dlg.m_telnum=row[0];
			if(dlg.DoModal()!=IDCANCEL)
			{
				;
			}
		}
	}

	
	*pResult = 0;
}

⌨️ 快捷键说明

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