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