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